soc2010benfiedler

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


  • 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
  • soc2010benfiedler.1277245947.txt.gz
  • Last modified: 2010/06/22 22:32
  • by BenFiedler