Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Project Title ====== **BSD-licensed Text-Processing Tools** \\ ====== Project Description ====== Merge the latest version of //[[http://mdocml.bsd.lv|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 //[[GáborSoC2008|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//** //(mandoc)// into base. * Work with Ulrich Spörlein to prevent duplicate work * Identify and <del>replace</del> //complement// scripts with option of compiling man pages with //mandoc// tools * Find and recompose any pages not compatible with mandoc \\ * **%%GSoC%% Mid-term** * \\ * **July 17 - July 19: man** * Complement ''%%http://people.freebsd.org/~gordon/man.sh%%'' (broken link) 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 %%=%%=Status Report== ===== diff ===== ^ Item ^ Status ^ Notes ^ | Missing --speed-large-files | INCOMPLETE | Argument is accepted, but makes no functional change | | Missing --ignore-file-name-case | COMPLETED | | Missing --no-ignore-file-name-case | COMPLETED | | Missing --strip-trailing-cr | COMPLETED | | Missing --normal | COMPLETED | | Missing --tabsize | INCOMPLETE | | Missing --unidirectional-new-file | COMPLETED | | Missing --from-file | COMPLETED | | Missing --to-file | COMPLETED | | Missing --help | COMPLETED | | Missing --ignore-blank-lines | INCOMPLETE | | Missing --ignore-tab-expansion | INCOMPLETE | | Missing -v / --version | COMPLETED | | Eliminate warnings | COMPLETED | | Comment the code | INCOMPLETE | | Check GNU compatibility | INCOMPLETE | | Check POSIX conformance | COMPLETED | | Missing --line-format options | INCOMPLETE | regex support is available | | Missing --group-format options | INCOMPLETE | | Missing --group-format | | ===== sdiff ===== Base version ported from %%OpenBSD%% ^ Item ^ Status ^ Notes ^ | Fix -c99 build warnings/errors | COMPLETE | | Combine diff-specific args and pipe to diff process | INCOMPLETE | ===== diff3 ===== Base version ported from %%OpenBSD%% ^ Item ^ Status ^ Notes ^ | Replaced ksh script with sh | COMPLETED | | -i flag | COMPLETED | | -T flag | COMPLETED | | -a flag | COMPLETED | | --show-all option | INCOMPLETE | | --easy-only | INCOMPLETE | | --merge | INCOMPLETE | | --label | INCOMPLETE | | --strip-trailing-cr | INCOMPLETE | | --diff-program | INCOMPLETE | | --version | INCOMPLETE | | --help | INCOMPLETE | ===== mandoc ===== Complemented Ulrich Spoerlein's progress: system makefiles have been modified to build mandoc instead of groff and use Gordon Tetlow's modified man.sh when WITH_MANDOC specified in /etc/make.conf . ==== Remaining items TODO: ==== * Complete patch system for changing mandoc-incompatible man pages. * Set up a ports package for groff (textproc/groff ?) * Identify tools with remaining groff dependencies (catman, whatis, ...) (looks like [[http://lists.freebsd.org/pipermail/freebsd-current/2010-September/020041.html|Gordon]] has since done work on this) * Finish gordon's man.sh by removing dependencies on groff tools: (eqn, pic, refer) * Identify remaining mandoc-incompatible man pages. Patch. soc2010benfiedler.txt Last modified: 2022/10/27 04:03by KubilayKocak