meo@stiatl.UUCP (Miles O'Neal) (03/01/89)
Why should we (not) put our code into the public domain? This is not a discussion about whether ALL software should be public domain, but pertains rather to utility-type software and building blocks. In particular, it pertains to X11 widgets, libraries and clients. Obviously there are arguments in both directions. But before we discuss that, I need to define the term "public domain" (PD) as far as this article is concerned. Public domain software - any software which is provided in source format, and which is made available to the public for incorporation into other products as the user sees fit, and which is available for free (or for copying fees only). While this may not be an exact legal definition of PD, it will work for now. The primary considerations as I see them are: I) MONEY A) Anti-PD This is the classic reason for not releasing widgets, toolkits, and clients. Companies (or occasionally individuals) don't want to give up anything that might in any way be construed as an advantage over the competition. Many companies consider all source code to be trade secrets, or insist on maintaining all rights to it via exclusive copyright notices. B) Pro-PD Anyone using X11 is getting some benefit from public domain software. MIT, DEC, HP, and a host of others have placed an incredible amount of software in the public domain. Other companies have since contributed software to this growing PD pool called X11. Releasing software into the PD is seen much like venture capital - one puts one's own in hoping that others will do the same and that the net result will be a gain for everyone. C) Notes Note that either attitude may result in a self-feeding effect. If many people refuse to release any code, everyone else may retreat as well. Conversely, many people releasing software into the public domain may encourage others to do the same. II) IMAGE A) Anti-PD There are several image-related reasons for not wanting to release source to the public; these include pastacodephobia (fear of having one's code perceived as spaghetti), beanitis (letting the accountants decide such things), suitophobia (fear of being sued when someone misuses/abuses/breaks your code and then blames you), and machophilia (wanting to look like you run a tough shop). B) Pro-PD Among the image-related reasons to distribute source in the PD are pride (wanting to show off a good product), samaritanism (wanting to help out, especially since others helped you), and pragmatism (hoping to start/continue the process that keeps other people contributing). There could also be evil ulterior motives, but these are not germaine to this discussion. III) OTHER There may certainly be other considerations, but I believe that most of the considerations relate to one of the above subjects. Some shops may be "closed" to the outside simply because they have always been so; either because that was "just how it was done", or for reasons now forgotten or that no longer apply, or that may apply in other areas, but not in this area. These may be the easiest things to deal with or they may be the hardest, depending solely on people's attitudes rather than facts. I write software for profit; that is, I expect to make a living off of it, at the very least. The companies for which I have worked have all been for-profit companies; they expect to sell their software, not to give it away. Yet I believe strongly in PD software. (And not just as a consumer. 8^) In a for-profit situation, products are for selling. But many things that are developed are not sellable products. Most widgets, especially the lower level widgets, are not sellable products by themselves. While these may be construed as being part of a company's "competitive advantage", they are not usually that big a deal. Most companies stand to gain more by encouraging others to donate (by donating their own first), so that they have less development time, than they do by hoarding these things. The same arguments may be applied to many client programs, as well. Additionally, it gets the company's name known in the industry, which can help attract attention of people looking for jobs (of course it may also attract attention to a company's better people, but if the company recognizes their achievements and keeps them happy they have nothing to fear; if not, they will lose them anyway). In a related fashion, as long as the software made public is perceived as good and useful, the repu- tation of the authors will grow, which is usually an asset to a company as well. I think one of the best examples of this type of public cooperation is unix (tm). For years, unix people cooperated, traded software, etc, and everyone's life was made easier. Yet at the same time, I feel that even more should have gone on than did. Most places I have worked have wasted a lot of time reinventing the wheel. When I find out that someone I know is about to move into unix, I immediately offer them copies of my .login, .cshrc, and related files, and personal productivity tools I have developed or gotten from others, thus allowing them to become productive quicker than they would have starting out with no help. I also make these available in /usr/local or whatever passes for that on systems I am on. Finally, as far as X11 is concerned, much of the work being done still falls under the heading of research, or is just moving from research into development and production. Most of this research, again, is of the type that gains nothing for a company if kept proprietary, but can help a lot of people if made public. -Miles gatech!stiatl!meo meo@stiatl.gatech.edu