Developer Forums | About Us | Site Map


Useful Lists

Web Host
site hosted by netplex

Online Manuals

The road to better programming: Chapter 6. Developing cfperl
By Teodor Zlatanov - 2004-03-08 Page:  1 2 3 4

Preliminary research

It may seem obvious, but the most important preliminary research is to make sure you are not repeating someone else's work. If you do choose to repeat the functionality of another package, you should do it for a reason. Before starting work on cfperl, I participated in the cfengine mailing lists and paid attention to what people needed. I conceived cfperl as my solution to what I perceived as cfengine's lack of flexibility. This is not to say that cfengine is not a great tool, only that cfengine was not flexible enough to do the things that I and others needed. The goal for cfperl is to supplement cfengine, not to do the things cfengine does well already.

I discussed cfperl with Mark Burgess, the author of cfengine, and I was not able to find a way to achieve the functionality of cfperl using only cfengine's plug-in module architecture. That convinced me of the need for cfperl.


I decided the GPL license ("General Public License") was the best choice for cfperl. The choice I made was based on my personal beliefs, but there are real benefits to using the GPL.

The Free Software Foundation (FSF) protects GPL-licensed software if you sign the copyright over to the FSF. Furthermore, the GPL ensures that others who want to use and improve your work can do so as long as their improvements to that work are also to be shared with everyone. Sometimes, the GPL is called a viral license for that reason. In brief, the important parts of the GNU GPL (Resources for a link to the document in its entirety), as listed in the license itself (version 2), are:

  1. Anyone using GPL source code can copy and distribute it freely, as long as they include the original license
  2. Works derived from GPL-licensed source code must also be under the GPL
  3. Binaries of the program(s) must also include the source code or at least give a way to obtain it
  4. The source code may not be re-licensed by others without permission
  5. Modification or redistribution of the source code implies acceptance of the license
  6. Recipients of the source code automatically get the same rights as you regarding the source code
  7. If you can't satisfy the license's requirements about giving others the source code freely, you may not give it to others at all
  8. The GPL may be geographically limited (if certain countries make it impossible to apply the GPL)
  9. There may be updates to the GPL
  10. Exceptions can be made if everyone holding a copyright in the source code agrees upon it
  11. There is no warranty
  12. There is no liability

You can use other licenses instead of the GPL. Loosely classified according to their compatibility with the GPL:

  • Commercial licenses
    Typically used to make money, commercial licenses can reserve all rights and promise severe penalties for anyone who looks at, modifies, distributes, or copies software source code so licensed without permission. Commercial licenses vary wildly in wording and intent.
  • Non-free licenses
    Under this category come many licenses that allow access to the source code, but no copying, modification, or redistribution. The Apple public source license is one such license.
  • Non-free according to the FSF licenses
    Some licenses may come under this categories because they are unclear: often they are written in such a way that you are not assured that your work will remain free. This is an essential distinction, which makes licenses as free-spirited as the Perl Artistic License (see Resources) be considered non-free by GPL advocates. Some developers feel that the Artistic License is more free than the GPL -- presumably because it gives them (the developers) "more freedom" to do what they want with the code (including making it non-free). GPL advocates would say that this is "less free." It might be possible to sum up the debate thusly: advocates of each license feel that the PAL is "more free" for developers (and less for users) and that the GPL is "more free" for users and less for developers.
  • Free but incompatible with the GPL
    Licenses in this category are truly abundant. IBM's Public License 1.0, for instance, is mostly compatible with the GPL (but has a patent license requirement that renders it GPL-incompatible).
  • Free and GPL-compatible
    The X11 license, used by XFree86 (the most popular free X server), is a simple license that is compatible with the GPL. Licenses of its kind tend to be very clear: the source code recipient can do whatever he wants -- including closing the source -- as long as the license text is attached.

View The road to better programming: Chapter 6. Developing cfperl Discussion

Page:  1 2 3 4 Next Page: Schedule

First published by IBM developerWorks

Copyright 2004-2019 All rights reserved.
Article copyright and all rights retained by the author.