GNU Info

Info Node: (standards.info)Reading Non-Free Code

(standards.info)Reading Non-Free Code


Next: Contributions Up: Legal Issues
Enter node , (file) or (file)node

Referring to Proprietary Programs
=================================

   Don't in any circumstances refer to Unix source code for or during
your work on GNU!  (Or to any other proprietary programs.)

   If you have a vague recollection of the internals of a Unix program,
this does not absolutely mean you can't write an imitation of it, but
do try to organize the imitation internally along different lines,
because this is likely to make the details of the Unix version
irrelevant and dissimilar to your results.

   For example, Unix utilities were generally optimized to minimize
memory use; if you go for speed instead, your program will be very
different.  You could keep the entire input file in core and scan it
there instead of using stdio.  Use a smarter algorithm discovered more
recently than the Unix program.  Eliminate use of temporary files.  Do
it in one pass instead of two (we did this in the assembler).

   Or, on the contrary, emphasize simplicity instead of speed.  For some
applications, the speed of today's computers makes simpler algorithms
adequate.

   Or go for generality.  For example, Unix programs often have static
tables or fixed-size strings, which make for arbitrary limits; use
dynamic allocation instead.  Make sure your program handles NULs and
other funny characters in the input files.  Add a programming language
for extensibility and write part of the program in that language.

   Or turn some parts of the program into independently usable
libraries.  Or use a simple garbage collector instead of tracking
precisely when to free memory, or use a new GNU facility such as
obstacks.


automatically generated by info2www version 1.2.2.9