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.
- June 1 - 12: diff
- (vacation ends)
- complete diff replacement/port
- June 13 - June 15: diff Testing
- Verify feature compatibility
- Exhaustive debugging
- Performance-measuring, optimization if necessary
- June 16 - June 21: sdiff
- Complete sdiff replacement/port
- June 21-25: 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
- 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 7: diff3
- Complete diff3 replacement/port
- August 7 - August 9: diff3 Testing
- Verify feature compatibility
- Regression tests
- Performance-measuring, optimization if necessary
- August 9 - August 16: Closing Time
- Documentation
- Compile performance presentation
- Test, test, test