This is an old revision of the document!
Project Title
BSD-licensed Text-Processing Tools
Project Description
Merge the latest version of mdocml (ISC licensed) from the ports into the FreeBSD system base, and configure it as a replacement for the GNU roff (groff) tool set (this would aditionally involve a rewrite of man). There are FreeBSD replacements for sort and diff in ports (also from a GSoC project), but they are lacking features from their GNU counterparts. I will pick up and complete these, possibly borrowing/porting from one of the other BSD projects when possible. Benchmarking the new tools and ensuring they scale appropriately when compared to their GNU counterparts is highly desired, and I would like to try to confirm the mdocml author's assertion that it should be noticeably faster than groff.
Deliverables
A feature-complete (including wide character support) BSD-licensed replacement for:
- man, diff, sort, sdiff, diff3
- Integration of mdocml into FreeBSD base, completely replacing groff
- Integration of above tools into FreeBSD base
- Benchmark comparisons of above tools to previous implementations
General TODOs
* Identify use of man, diff, sort, sdiff, or diff3 in make scripts, build world, etc. * Performance analysis toolset
Project Schedule / Milestones
- May 24 - May 26: Licensing/Cost Analysis
- Identify existing tools with a BSD-compatible license (ISC, 2/3/4 Clause BSD, Public Domain?). Contact respective authors about possibility of changing existing code to 2 Clause BSD licensing.
- Brief analysis for above candidates of effort required to port existing code to FreeBSD versus scratch re-write.
- (begin personal vacation)
- June 1 - 12: diff
- (vacation ends)
- complete diff replacement/port
June 13-15: Diff Testing::
- Verify feature compatibility
- Exhaustive debugging
- Performance-measuring, optimization if necessary
June 16 - June 21: sdiff:: * Complete sdiff replacement/port June 13-15: sdiff Testing::
- Verify feature compatibility
- Exhaustive testing (mergemaster)
- Performance-measuring, optimization if necessary
June 26 - July 16: mdocml:: * Merge mdocml into base. * Identify and replace scripts for compiling man pages with new mandoc tools « BR » * GSoC Mid-term *
July 17 - July 19: man:: * Complement prior man replacement * Ensure compatibility with mandoc
- July 20 - July 26: sort
* Complete sort replacement/port July 27-July 30: sort Testing::
- Verify feature compatibility
- Regression tests
- Performance-measuring, optimization if necessary
July 31 - August 9: diff3 ::
* Complete diff3 replacement/port
August 9 - August 12: sort Testing::
- Verify feature compatibility
- Regression tests
- Performance-measuring, optimization if necessary
August 9 - August 16: Closing Time:: * Documentation * Compile performance presentation * Test, test, test