If you have benefited from using Linux or other freely produced software, it is entirely fair to expect that you return back Your Fair Share to help improve future releases.
There Ain't No Such Thing As A Free Lunch. You may be able to get a copy of Linux or other free software without paying anything for it; this does not mean that the software was produced "for free." Those that don't contribute something back represent "freeloaders" that are not helpful to the community. In order for free software to remain viable, there will need to be a continuing investment of considerable efforts and funds on the part of developers and users.
Contributions might reasonably be given in a wide variety of forms, notably including the following:
Build needed software
I think it not unreasonable to expect people to contribute some sort of "Fair Share" in some fashion in various of these areas.
I have listed the above items roughly in order of how easy it is to clearly establish the usefulness of contributions.
It should be obvious that the most direct way of contributing something useful to free software is to write more free software. Unfortunately, not everyone has the same degree of ability to contribute in this fashion.
At the other end of the spectrum is the notion of financial grants. Money has the potential to be useful, if correctly deployed. Unfortunately, the task of correctly deploying it may be difficult to get right.
It's pretty obvious that code doesn't simply "get written." There need to be authors of new software.
Eric Raymond's article, The Cathedral and the Bazaar, describes the widely cited "Linux Bazaar Approach" to software development.
It can be simply characterized with three principles:
Release things (whether code or documents) publicly on a regular basis, and
Accept contributions so as to expand the "developer base."
Make sure that this can all happen in an asynchronous fashion so that many people can participate in improving systems.
The Linux kernel typically has a more-or-less weekly release, whether it's ready or not. It has accepted patches from thousands of people. This huge body of participants has become a tremendous strength.
With a growing world population of Linux users, expanding that strength to encompass other system components such as compilers, libraries, utilities, applications, and even documentation allows us to harness the "smarts" of potentially millions of developers of one variety or another.
Ten thousand developers looking at the kernel is quite enough to keep it improving even if most individually only examine small portions of the code in their spare time.
Coordinating efforts in the wake of there being literally millions of participants requires a truly distributed approach. "The Bazaar" has proved to be a potent approach for software development.
The difficult thing that needs to happen is for there to be some compromises in the interests of unity.
First and most important: Check your ego at the door.
It doesn't matter if you're right if, at the end of the day, the project fragments, and development ceases.
Many failed projects have resulted from the situation where egos have collided. This appears to be one reason why "BSD Lite" fragmented into three projects. This is quite clearly why there are two versions of the Emacs text editor. It is abundantly clear that this is the cause for the proliferation of GUI toolkits for X. It seems to be a reasonable generalization that many people would rather build a new GUI toolkit than use one that someone else wrote.
Before starting a new project, consider adding the functionality to some existing system.
If the system designs are reasonably compatible, it should require less work than starting from scratch, and benefits from the fact that you know there already are some interested users.
This is strongly related to the "ego" issue; if you're unwilling to allow others to attach their code to yours, or to attach your code to theirs, then effort will be duplicated.
If you are creating a new software system, make sure it is designed so that will be easy for others to insert additional functionality.
Consider, for instance how the principles of The Unix Philosophy apply to your application. You may have the perfect design, and can create a perfect, beautiful, monolithic C++ email application that does anything anyone could ever imagine, and is far faster and cleaner than other mail systems. Don't do it, unless you at the very least export some powerful interfaces to allow outside programs to control your program.
Unfortunately, Java 2000 or some other fancy new tool may come out next year and cause people to forget about your beautiful but essentially unexpandable mail client. The EXMH mailer builds on the fifteen-odd year old MH mailer and permits people to link in TCL code allows them to add in linkages to the new "Java 2000" language, the "PGP 6.0" cryptographical toolkit, or whatever else comes along next year. Therefore EXMH will undoubtedly continue to be in use in 2002 and beyond. It may (arguably) be uglier and slower than the mailers recently written using whatever tools are "new and cool," but it is likely to persist while they are replaced next year by something else that is "newer and cool."
Pick your libraries carefully. There are entirely too many X toolkits out there, and far too many battles about which is the right one to use. The ability of X to simultaneously accommodate multiple GUI systems means that adopting a new GUI does not necessarily mean having to change or discard any existing programs.
I don't know for certain which GUI system is best. Of those getting the most attention:
Motif has some "licensing issues," is fairly "memory-leaky," and appears to require substantial effort to write programs. Development libraries should help programmers avoid the need to write code; Motif appears to fail in this regard.
Tk offers reasonable "ease of programming," and is licensed such that it can be used and reused to produce either commercial or free applications, but is (arguably) slow and due to multiplatform support must limit users to a "lowest common denominator" set of functionality.
GTk seems pretty good, and uses the LGPL (Library GNU Public License), thus allowing it to be freely used in source and binary form without forcing onerous restrictions onto applications that use it. The Free Software Foundation appears now to consider GTk to be the "official GNU GUI toolkit."
GNUstep (also LGPLed) seems like it may be rather slick when (if?) it is completed, but seems restricted to use with Objective C. It has been slow coming, but does represent a well documented and standardized API (unlike Qt and GTk ), which is an attractive feature.
Other peoples' milage may vary, which is precisely why there's not likely to be One True GUI Toolkit, and why there is a lot of arguing over which approach is best. Which returns us to the ego issue.
Flaming at people that build poor designs isn't usually very useful.
I have toned down my criticisms of the Berlin Graphical Environment. The Berlin Consortium opened up the design process somewhat, which was a good thing. They have also reorganized really substantially, and are now essentially a modern re-presentation of the old Fresco graphics toolkit, and have taken back the name Fresco.
Some relatively closed projects probably need to open up to use The Bazaar development approach.
While choice is a good thing, there have been some efforts that represent exceessive "re-inventing of wheels."
For instance, there were, at one point, about 8 different projects simultaneously working to duplicate Quicken functionality. An amicable merger of developers for CBB, Xacc, WaterMark, and GnoMoney (and, if memory serves, a couple of other efforts) occurred, resulting in the GnuCash project.
Consider improving another system rather than starting from scratch.
Consider reviving a "dead" project; see Unmaintained Free Software.
For those who have contributed to GNOME applications.
If you aren't a "software developer," it may be reasonable to contribute to general as well as specific support efforts. Here's a few ideas:
Help design certification programs.
Install a Linux server at a local school to provide mail, news, Web, and file server services. The ultimate goal may be to make Linux be the "complete" solution; it's critical to at least start with something.
Help someone install Linux. My local users group, NTLug, has a monthly "Linux Installation Project" at a local computer show.
Answer a question on Usenet. (Correctly.)
Contribute to a HOWTO document in the Linux Documentation Project (LDP)
See the Linux Documentation Project Manifesto for details on the appropriate form that documentation should take in order to be of maximum usefulness.
Seeking to provide web access in third world countries...
For a company to avoid leeching off the Linux community, it should do the following things (many of which apply to users in general):
Buy and use a boxed set of a good Linux distribution, so a good manual is available for it. Keep it handy in a central place for all users.
Buy at least six good books on Linux and keep them available in the same place. Have a sign-out sheet so people can find them when they've disappeared.
Set up an internal News (NNTP) server for company use only, with a few newsgroups for Linux support.
Set up an internal company website containing pointers to various external documentation sites (like the Linux Documentation Project -- LDP), and a company Linux support FAQ page (in HTML) that is kept up to date responsibly by one or more people.
Make sure everyone's computer is set up with a newsreader and web browser pointed to the above.
Anyone who has a question about Linux must do all of the following before (and hopefully, instead of) posting it to the Linux community Usenet groups:
Look in the company Linux support FAQ web page.
Look up the topic in the distro manual and in those six or more Linux books.
Search the company Linux support newsgroups.
Read the relevant man pages, HOW-TOs, FAQs, etc., on their computer, on the LAN, or on the Web.
Do an Google-Linux web search. Learn how to use the simple operators -- "", +, -, etc., in order to search effectively.
Do a DejaNews "power" search. Learn how to use the boolean operators to search effectively.
Ask other people in the company who might know, verbally or by posting to one or more company support newsgroups.
Post to a Linux community newsgroup only after conscientiously doing all of the above and having no success.
When you get an answer that works, put it in the company FAQ (or get the maintainer(s) to), and post it to the company newsgroup(s).
Each Linux user in the company should spend time helping less knowledgeable users, for example by answering questions posted in the internal company support newsgroups and by adding items to the FAQ.
Each knowledgeable Linux user in the company should spend time answering questions in the external -- community -- Usenet newsgroups.
Make sure everyone in the company gets a copy of this document, and keeps it handy.
A platform designed for the micro (and macro) payment of support incidents of Open Source software and for the funding of feature requests.
With the multiple millions of Linux users, it would be entirely plausible for grateful users to individually contribute a little.
That has the potential to add up to hundreds of millions of dollars towards development of improved tools.
That being said, getting funds to developers and other worthy recipients may realistically represent something much like the old story about Belling the Cat. At this time there isn't any single "Linux Software Foundation" to which we can expect to see such contributions go. And I do not believe that the present organizations are at all prepared to appropriately deploy millions of dollars.
There are, nonetheless, a number of possible routes for Linux users to take to make financial contributions to efforts to improve Linux, and I would suggest that people consider contributing to them.
Having a single "umbrella" organization ("Linux Development Foundation") would have some value as a focal point, but is not necessary. It may be useful for individuals for there to be a way of turning contributions into tax deductible expenditures, so as to maximize the value of those contributions. I can contribute more money "pre-tax" than I can "post-tax." On the flip side, this is really only beneficial when paying for material, equipment and services. The tax deductible contribution will have taxes deducted from it before it gets paid to a developer...
I have contributed to some of the following organizations and not to others. Inclusion in the list doesn't mean that I agree with all their aims, merely that they have some reasonable relevance to Linux and free software and that they appear to me to be worth considering.
Note that many of these organizations are also able to use contributions that come in the forms of computer hardware and services.
(If you can participate in the California class action lawsuit...)
They serve the Open Source community by funding Free and OSI Certified(tm) Open Source software projects. The Public Software Fund is a nonprofit corporation with 501(c)(3) status. All donations to the fund are tax-deductible on US federal taxes.
Probably best known on the Board is Russell Nelson, of Crynwyr Software...
This web site sought to be a "clearing house" for requests for pieces of free software.
It listed requests for developments, and contributions that are to be associated with accomplishing those developments. Contributions are not mandated to go to the developer; it is also acceptable to try to motivate development by promising donations to other organizations. For instance, one offer is that $200 will be contributed to UNICEF upon completion of a "free" library to replace Qt.
I was personally "on the hook" for $100 for the development of a GPLed SQL reporting tool. Unfortunately, the "Free Software Bazaar" seems to have closed. I would not expect this approach to (at least at this point) be successful at soliciting the development of major projects, but would suggest that people consider using it as an interesting "motivator" to encourage the completion of smaller "systems integration-oriented" tasks.
I think that the above approach could be taken in a relatively orthagonal direction, with a Free Software Maintenance Bazaar.
It would collect together a list of people that have been working on systems that have proven useful.
People could then contribute money via this list, directing it to the developers of their choice.
Seeing as how there are commonly CVS archives that can be searched, the contributors can themselves take whatever pains they like to determine which developers they consider most "deserving."
If the FSEX web site, which I am drafting up software for now, were to publish how much (in aggregate) was contributed to each developer, this would allow people to, to some extent, optimize the allocation of their contributions.
Linus Torvalds, Alan Cox, RMS, and Donald Becker quickly come to mind as "celebrities" that would likely have somewhat elevated amounts contributed to them.
Note that if Linus were allocated $1M, and nobody else were allocated anything, this would represent a situation where funding would not be benefiting the overall community. Since this condition would be quite voluntary, as people volunteered their money, who's to say that this is inappropriate?
I am certain, however, that people would rather come to see it as more valuable to spread their contributions more widely over the variety of individuals working on many projects.
This approach allows individuals to retain nearly direct control over the allocation of their funding, which seems to me to be a crucial factor.
And if a developer did not wish to receive the amounts allocated to them, it would be quite appropriate for them to redirect any resultant funds to projects or developers of their choice, as it has become their money, and they are free to do with it as they please.
It may appear to be attractive to have the organization be a
tax-exempt charity so that contributions may be tax deductible for the
<email@example.com> Hartmut Pilch reports that arranging
this would be problematic in Germany.
I suspect that making the resulting payments to developers tax exempt would also be problematic, which suggests that tax exemption may not prove to be worthwhile. It may be simpler to treat contributions as after-tax "gifts." Not offering a tax deduction to the contributor is not unreasonable if the recipient also doesn't owe tax.
The Economics of Free Software discusses some of the economic issues surrounding free software, and presents economic arguments surrounding how to encourage the patronage of useful free software.
Send some significant developer a gift.
I had previously provided greater detail on this; I think that the "Free Software Maintenance Fund" is a much better idea as it is likely to reduce the amount of effort required, and would provide informational feedback (e.g. aggregate contributions) that would make it more useful.
Proposal to fund Free Software via charges Per Line of Code
The author of this essay suggested the idea that there should be some sort of "clearing house" that would receive contributions, and then distribute them to programmers based on the assumption that it is reasonable to assess productivity on numbers of lines of code that are written.
My sense of this is that the essay says virtually nothing about the political and bureaucratic arrangements, which does not bode well for ensuring that funds would be managed responsibly. This needs to be considered earlier rather than later; people won't send in money unless they think it'll get used well...
The further problem is the assumption that "lines of code" are a good measurement of the value of contributions. A truly skillful programmer might contribute reductions in the size of a program; this would be assessed, in the PLOC model, as a negative contribution.
They have their own Linux distribution; those that "love" Red Hat may not be interested in contributing to assist "Debian Linux." But they also are involved with promotion of opening hardware standards (in contrast with things like I2O).
This organization is now organized so as to permit tax deductibility of contributions.
Your Local Linux Users Group
Local groups may obviously pursue activities to benefit the local community; they may also participate in activities with international implications.
My local group, NTLug (North Texas Linux Users Group) has done some work pursuing charitable status. This may allow personal tax deductibility to cross international boundaries, which is rather nice.
<firstname.lastname@example.org> Mark Aitchison suggests
that a worthy task for local groups is to:
"Prepare scripts for enabling access to a particular ISP (Internet
Service Provider) - start with the nicest/cheapest local provider, then
let others feel pressured into helping the user group if they have
problems with their ISP. "
Another would be to: "Help local hardware suppliers produce ready-made Hardware+Linux solutions, e.g. a dual-booting home system, a Linux-only Web gateway or proxy for an organisation. "
My local users group, NTLug, holds a monthly "Linux Installation Project" where they assist folks to install Linux on systems, and there are rumblings about submitting a system specification to a local PC builder to encourage creation of another Linux "VAR." (Value Added Retailer)
I have also heard rumor of efforts to target U. S. government organizations in Washington to try to do mass installs of Linux for office systems there. A group of four people could probably do 20 installs an hour in a room with an impromptu LAN, and if they charged $20 per system, and together collect $400 per hour, which is simultaneously far cheaper than doing Windows installs, and yet highly profitable.
The fact that user groups bring people physically together makes them a logical nexus at which any of the other sorts of "organizations" can build up. Thus:
Some local people start building some "Linux PCs," and create a VAR.
Local people grow up a software business for some local niche
Local publicity efforts at a "PC Expo" or other such event
One consultant gets together with another, and encourages more of the same.
This is not a Linux-specific organization; they are involved in some general advocacy activities that touch on those involved in any way with software production.
Involvement in this case represents something closer to involvement in a political lobby group.
There's just a touch of "USA bias;" there are nonetheless international implications, and the international community as often as not follows the American lead in computing-related matters.
Recent discussions on the newsgroup gnu.talk.misc suggest that the organization is no longer particularly active. The former "home," http://www.lpf.org is now home to the Libertarian Party of Florida.
The LaTeX3 Project Fund
The TeX Users Group (TUG) is working on the "next generation" version of the LaTeX publishing system, known as LaTeX3. Linux is one of the platforms on which TeX and LaTeX are best supported.
Contributions for the project can be sent to:
TeX Users Group
P.O. Box 1239
Three Rivers CA 93271-1239
1 Eymore Close
Burmingham B29 4LB
You should make a note to the effect that funds are intended for the LaTeX3 effort.
Their purpose is to make freely available in electronic form the texts of out-of-copyright books. Most of the prize money from the recent RC5 Crack contest was contributed to this project.
There may also exist "international branches" for some organizations.
This brings up the point that things like tax deductibility of donations as well as the ease of sending contributions can vary based on what country one is in. There is value to having multiple organizations for this reason alone.
divulge, create and legally protect public-interest information works, i.e. information works that meet the following requirements:
The scope of activities of the federation includes:
divulging: lectures, installfests
creating: sponsoring development, buying proprietary stuff free
legal protection: acquiring preemptive software patent rights
Since the PostgreSQL project is a voluntary effort, sponsorship and contributions are allotted for the tangible resources like the server, the network connection and other things related to the effort.
|-- Marc G. Fournier|
The Linux Fund is issuing credit cards through MBNA America (the most notable issuer of "affinity" credit cards) and intends to use the fees received to sponsor free software development projects.
Affero is working to bring a culture of Patronage to the free exchange of information and support on Internet. The services empower recognition and financial reward for valuable contributions to virtual discussions.
Affero hosts personal web pages for volunteers, whether they are community hosts or individual participants that describe why they care about certain issues, which causes or organizations they feel need support, and a secured payment mechanism to facilitate impulse gifts from patrons who the volunteer may have helped in time of need. Affero also provides a historical record of volunteerism and patronage. Each members' user-history provides a record of their contributions as perceived by other community members, including their history of volunteerism and partronage. The personal web pages each have a unique web address (URL) that members can attach to email signatures, bulletin boards or any other digital work. All Affero members build community reputations through various interactions. Over time, these reputations will help facilitate a more effective dialogue for members in new and existing communities.
The folks that bring us Python have come up with a way of making contributions tax-deductible, depending on your jurisdiction...
Other Free Projects
There are a variety of other free software projects that are probably worth investigating too, some Linux-related, others not. They are of varying statuses, and permit varying sorts of participation.
EXODUS Database Toolkit Project
GRASS (Geographic Resources Analysis Support System)
Linux Documentation Project
MALI (Memorie aux Langages Indeterministes)
NCSA (National Center for Supercomputer Applications)
SR (Synchronizing Resources) Project
TET (Test Environment Toolkit) Project
World Wide Web Consortium
WAIS (Wide Area Information Server) Project
Yale Haskell Project
There is no unambiguously correct answer to this question. I would suggest asking yourself the question: "How much would you have paid for commercial versions of the software?"
Installing Linux instead of NT Server "saves" you on the $1000 USD, and I have seen estimates of as much as $5000. If the millions of Linux users contributed $1000 (or its equivalent) to Linux development efforts, that would literally provide billions of dollars of funding to help improve Linux. These figures sound rather high, and this sort of spending is unlikely particularly for home systems, but this kind of contribution is not preposterous for someone installing Linux in a commercial environment.
$100 resembles pricing for "PC" operating systems like Windows 95, and still represents potentially hundreds of millions of dollars in funding. If, instead of spending the several hundred dollars per year on commercial software that is probably typical for PC users, Linux users contribute similar funds directly to software development efforts, that still points a remarkable amount of money and effort at software development.
Yet another more extreme evaluation of the value of Linux would be to consider the value of other peoples' investments in Linux.
There are an ample number of people that have invested time worth conservatively thousands of dollars in developments related to the Linux kernel, utilities, applications. and documentation.
That is indeed a tough act to follow; those that have invested less have certainly not established that they have comparable moral authority to determine the direction of Linux developments...
I do not realistically suggest that people invest thousands of dollars. However, people who have not done so, or done something of similar value, have little right to demand much of anything of those who have invested substantial amounts...
I would argue that $100 per year is a pretty "fair share" for a home user of Linux. Some people (particularly students) honestly can't afford that, which is fair enough. I would still urge having some financial participation, however nominal. Contributions that come in the form of services are valuable and are also highly necessary; combining the various kinds of contributions strengthens the community.
Just because someone claims that they have a neat project that needs to be funded does not mean that it is deserving of funding.
(Decreasingly) recently, the fund.opensource.org proposal came along, with a group proposing to be a "clearing house" for donated funds to be used to sponsor "Open Source" projects. It apparently did not happen with the concurrence of those that run the opensource.org domain, and the model was somewhat like the commission-based way many organizations have used to raise funds, with the typical effect that some small percentage of the contributions actually make it to the intended destination.
Before giving money to an organization where you do not know and directly trust the principal participants, make sure that the organization is officially recognized as a "charitable organization" by some comparatively reputable organization, such as the local taxation authorities.
This indicates some limits on the degree to which contributions can be used to line the pockets of the organizers, and suggests some degree of organization stability.
Consider: If they can't convince the government that they're charitable, why should you believe them?
An web site that presents valuable information concerning this sort of thing is the Evangelical Council for Financial Accountability. This organization grew up in response to the problems encountered in the Christian community surrounding the "televangelists" that have been more than a little cavalier in their use of donated funds, and given Christian charities a bad reputation. They suggest a set of principles of financial accountability that are fairly appropriate for any sort of organization that receives donations. The principles are largely not religious or spiritual in nature.
Most efforts relating to hardware support have resulted from the need to build driver software to support hardware designs of one variety or another.
The more controversial efforts have related to doing sufficient "reverse-engineering" so as to permit writing drivers for hardware for which the creators were unwilling to provide sufficient documentation to allow its use.
There has not, in contrast, been a whole lot of hardware designed and deployed with the specific intent of it being usable with free operating systems.
It seems to me that it would be particularly interesting to have a computer system designed specifically for use with Linux or other free OSes, with particular focus on the critical components of CPU and motherboard.
My knowledge of electronic circuit design is minimal, so I cannot evaluate how credible that project's plans are, and have no ability to contribute to the design process; I would nonetheless see great value in there being a hardware architecture with the distributed control generally associated with the free software community.
Their plans involve a truly shoestring-like budget. It is not clear that funding would be, at this stage, of any great value.
But if and when they get to the point of being able to deploy the hardware, funds would clearly be necessary to pay for the production runs needed to produce chips and motherboards in sufficient quantities to permit economies of scale.