This raises the question, what do we expect from a business model? The main criterion for a successful business model during the bubble days was that it allowed somebody to corner the market on some newly-essential commodity. People talked about "barriers to entry" as an essential feature of a good business model. Business models were about making and keeping monopolies long enough to gather a billion dollars into somebody's pocket.
For normal people in normal times, a successful business model is one that allows you to make a comfortable living. A better one lets you hire your friends, too. Is a start-up employing a dozen people better than having those same dozen people working on a project at as many different companies? Probably it is better to work together in the same place, particularly in the beginnings of a project. Free Software just manages to get along without.
Turn it around: is there any proper role for the corner-the-market big-money business model, in a world of Free Software? Free Software seems to be able to build and maintain a software product of any size. What it hasn't done, and may not be able to do, by itself, is to build something big and entirely original. This is not to say that the individuals involved aren't creative enough. (On the contrary, only individuals are.) What seems to take capital is market-building, convincing enough people that they want something new. After enough people are used to having the no-longer-new thing, it seems easy enough to find people to re-implement a Free replacement. Without wide interest, the project has no pool of volunteers to draw upon.
It's terribly inefficient to start a company, write lots of proprietary code, and then have to start over and write it all again for the Free version. Furthermore, for many reasons, most of even reasonably successful proprietary products never get duplicated.
One way that big, original Free Software projects have happened is by government or corporate grant, often through universities. (Thus X, the Internet, much of BSD Unix, VNC.) That's also how science is done. In the U.S., the National Science Foundation issues grants for research. Most American scientists spend more than half their time preparing grant proposals to the NSF and other bodies.
It would be unfortunate for Free Software developers to end up writing grant proposals instead of coding, or for the bulk of grants to go to people who like doing that better than coding. It would be even worse to end up supporting and dependent upon a big bureaucratic apparatus to dole out grants, with its institutional imperative in conflict with the needs of users. Much of what makes Free Software development efficent is its lack of parasitic management apparatus.
There ought to be a better way. But what? Collab.net started out trying to match funded projects with developers, and ended up selling something called SourceCast. (I can't tell from the web site what it is, and it won't let me log in to find out.) SourceExchange.com now belongs to a dodgy Hong Kong search engine company. The Public Software Fund has just started, and ought to have a bright future, but people with truly innovative ideas will have identically the same problem attracting donations there as they do attracting volunteers.
The problem is like the problem of capital investment in general. Regular businesses are no good at originality either -- that's why we have startups. Just as for any interesting new product, until a great deal of time has been invested, a Free Software project isn't useful. Until it's useful, few have enough interest in its success to contribute. Capital solved it with fungibility: the people investing in development are only interested in the money to be made from the product, and the people interested in the product aren't involved in development, they just pay when it's (almost) ready.
The difference with Free Software is that once the product is developed, it's more or less self-sustaining. The trick is how to get together the team to make something big and original happen. Start-ups get seed money, on the promise of fabulous returns, and just hire people. A funded Free Software project could do the same, but what can it offer in exchange for the seed money? A "public good" ought to draw a grant from foundations established for that purpose, if they can perceive it.
A project might establish an income stream by licensing its product (or a part or offshoot) for uses that would violate the GPL, and sell stakes in its future. There have been lots of good ideas about extracting money from Free Software temporarily. It's hard to build on other Free Software, then, because licenses make no exception for temporary misuse. Patents licensed freely for Free Software but only at cost for proprietary applications would fit this model better, but it's hard for a Free Software project to secure the useful patents. Some universities seem to be good at this sort of thing. The Mosaic browser started out much this way, albeit far from Free.
Alternatively, a Free Software project might gather a team the way that national or international standards do: by employers assigning or sponsoring someone to participate. The U.S. National Institute of Standards and Technology (NIST) has long seeded innovative programs, and has an excellent reputation in industry. Calls for participation under its imprimatur would be taken seriously. This seems a good alternative to the bureaucratic creep that accompanies government cash handouts.
National, state, and, particularly, city governments have unmet needs that could be satisfied by Free Software projects. The result would go on meet that need in other places, and could be collectively maintained by public employees of all its users. Consultants could make a nice living helping adapt and deploy it in new places.
There's no reason a project has to do only one thing, and have only one source of funding.
Working to establish a group at NIST to initiate calls for industry sponsorship of ambitious Free Software projects seems like a good way for people with government experience to help. Organizing a conference for university adminstrators on seeding ambitious Free Software projects using these methods ought to be profitable. Creating a city commission to evaluate Free Software project proposals (perhaps in cooperation with neighboring or sister cities) would make it much easier to initiate such projects.
What can you do to help build an infrastructure to nurture truly innovative Free Software projects?
The one sustainable free software business model that has emerged is dual licensing with a copyleft and commercial license. A lot of these projects (i.e. Sleepycat db, ghostcript) have been clones, but there is no reason this can't support originality. It has the barriers-to-entry and monopoly position venture capitalists require, along with a built-in marketing to academia to corner the future. And it isn't in violation of the GPL. As long as the entire copyright is held by one party they have the freedom to offer it under two licenses.
Give me a call if you get one of these started in the 650 area code.
Count all the money that people are making based on their Perl skills and you're in the hundreds of millions of dollars at least. And Perl is completely original. But this money is distributed; there isn't a Perl company with $1B market cap, but if you add up the annual salaries made by all the Perl programmers, you are in the neighborhood of $1B.
But if you still have a dot-com dream at this date for collecting underpants and making a mint by starting a company, I wouldn't hold your breath.
Also, I think that you're too negative on grants. If you look at the kind of work being funded by, say, the SRC, it's directly tied to what the sponsors in the electronics industry will be needing in a few years. The problem is that that money is drying up. A hell of a lot of good free software came out of grants, though we do have to make sure that taxpayers don't wind up footing the bill twice (once by funding the research, again when the research gets taken private and acquired by some monopolist).
I've heard the conventional wisdom that Free Software never innovates many times before. I still don't believe it. It's difficult to comment on the rest of your article because I don't accept your premise.
Perhaps I'm reading a lot into your phrase "entirely original". What does it mean? What leads you to believe that there can be no Free Software that has that quality? Which pieces of proprietary software exhibit this quality?
Proprietary examples of big, original products are legion. Visicalc had mainframe antecedents, but Visicalc was unlike anything most people had encountered. It had to make its own market. The world after Visicalc was a different place. Unix gathered many great ideas, a few uniquely its own, into a killer package. Every operating system that came after it has to be described by comparison to it, and it's hard for any unlike it to survive. Apple's Macintosh drew on Xerox research, but it carved out the space most computer users live in today.
Perl is a good example of a big Free Software product. It, like Python, was nurtured in a university environment. The field was prepared for Perl by (proprietary) Awk and Sed, though, so that everyone who saw Perl knew immediately what it was. Perl's innovations weren't why it caught on so fast. Perl was instantly familiar.
NCSA httpd and Mosaic, together, are an example of a big original work, although Mosaic wasn't truly Free and httpd started out pretty small. TeX is a great early example: big and uniquely original. Like X, Kerberos, MACSYMA, BSD networking, Gcc, Emacs, PostgreSQL, and Sendmail, these were nurtured under university funding.
I didn't say that Free Software doesn't produce original works. Of course it does. Anything that can be done by one or two people in their spare time in a few months is well within its range. Anything that can start out small, get popular, and then grow to terrifying proportions fits the Free Software economic model. (Perl, again.)
What is closed to the ordinary Free Software process is closed by the classic chicken-and-egg problem: if it's truly original, it's hard for people to understand, and to understand why they (will) need it. If they don't understand it, they won't feel an itch, and they won't volunteer to help build it. If it's too big to build without lots of help, it won't get built, and nobody who might have helped will ever see it in action and be inspired (or assigned!) to participate.
This problem has been got around many times via government and corporate aid, but I see those as coming from outside the Free Software community. We don't have any institutions in place specifically to seed Free Software projects, from those sources, according to our strategic goals. Each time it has happened has been unique, quirky, and nonrepeatable: luck.
An example of the problem is that we are still living with CVS, which grew incrementally on top of RCS. Replacing CVS is a big job begun only after CVS and its proprietary competitors penetrated into every nook and cranny. Subversion is good, and big, but it's not original. Some people understood long ago how to make something a lot better than CVS, but couldn't scratch up the volunteer force, or grants, to make it happen.
So, restating my original conclusion: For Free Software to be able to build big, original products without relying on lucky accidents, we need to build apparatus within stably-funded institutions that either are chartered to contribute to the public good, or have urgent needs which happen to match the needs of other similar organizations and our own. They need to recognize Free Software development processes as a good match to their needs or goals, and they need to have people in place who understand how to help start Free Software projects that will thrive. We need to be ready to offer advice to these institutions about which of the projects proposed to them for funding are viable, and who has demonstrated sound leadership on previous projects. All this will happen if and only if individuals in the Free Software community (that is, you) make it happen.
Growing small products and copying proprietary products has taken us, and will take us, a long way, but we need to plan for a future where Free Software acts an industry leader.
Dispensing with subtlety...
What we need to work on is having thousands of people in positions where it is their job to say, "We can pay Free Software developers to solve this problem, once and (literally) for all," and where it is their job to make it happen.
Seems the best stable funding for Free Software should be from the State. In mainland China and Taiwan, for example, government funding is provided for some Free Software development, but the goal has region-specific color to it (to bring up the competitiveness of the local software industry, to reduce dependency on foreign software and to improve Chinese computing technologies), and thus the Chinese tax payers' dollars spent on these projects probably do not matter to the majority of the population in Advogato. However, given the fact that most Free Software developments are not driven by profit motives, why can't governments be persuaded to support Free Software development? Free Software's costs (when also considering its social benefits) should be less than the expenses the society pays for proprietary software.
Free Software can be seen as another form of research, and governments do support research. Free Software development is also like building public infrastructure like highways and bridges. Supporting it should be one responsibility of governments in the computer age.
We know Microsoft is hard at work to oppose government support for Free Software. Free Software has proven that we do not need the traditional capitalistic model, or the motivations (maximizing profits) associated with this model, for good software. As Free Software becomes the mainstream, public funding for Free Software should be the norm.
(For people employed by Red Hat, Sun, IBM, etc. who are working on Free Software, would you have worked differently if it is the government, rather than a company, who pays your salary, provided that the government does not control you any more than the current company does?)
Public funding for free software seems like a good idea, but ideologically difficult to sell in the United States, where the government avoids competing with the private sector. It still happens, but more often in the form of research monies aimed at unmet needs of some branch of government. And the sooner you can promise commercialization the better for your funding.
Private funding can be for-profit or not-for-profit. ncm seems to suggest a public-broadcasting model, with all that entails. I can imagine many people diverting their yearly Microsoft/Apple stipend to a free software pledge drive instead. Shareware writ large. Good luck to any with this motivation/orientation.
But I think the most stable form of sustainable free software entrerprise will come from an evolution of the dual-licensing business model. Someday a Fortune 500 company will fully embrace dual-licensing as their competitive edge, continually delivering a valuable copyleft version of their technology to academia, educators, and hobbyists, while simultaneously selling a value added version for embedding or other conventional commercial reasons.
What we need to work on is having thousands of people in positions where it is their job to say, "We can pay Free Software developer to solve this problem, once and (literally) for all," and where it is their job to make it happen."
An experienced project manager's response: Most business, government and academic organizations have these. They are called project managers, administrators, management, owners, etc.
These people have been slow to embrace open source because it appears risky and places their destiny in the hands of communities that often appear hostile to newcomers. It is much cheaper to buy existing commercial software which takes little maintenance to accomplish basic business tasks than it is to pay nothing for software with plenty of bells and whistles but which the work force is unfamiliar.
It is my sense that Free software is making incursions into the power user desktops and perhaps desktops they service commercially. Progress is slow because there is a lot of time invested in other solutions and the time of the workforce is the dominant factor slowing down innovative change.
Perhaps rather than recreating a parallel "parasitical" structure with thousands of people (for whom we have no reliable funding) we should just get friendlier and more effective at interacting with the business communities' professionals. That way we can remain software developers while existing "parasites" begin spending money on initial system design, installation, training, support, etc.
sej says I seem "to suggest a public-broadcasting model, with all that entails". I don't know what that is, or what it entails. As for public funding, as noted in the original essay (which see), the last thing we want is "to end up supporting and dependent upon a big bureaucratic apparatus to dole out grants, with its institutional imperative in conflict with" us. This is not to say that public funding would be harmful, but rather that we have to be careful what we ask for, or we might get it.
atai asks how Red Hat etc. employees would like working for a government instead. I expect governments would hire Red Hat and other Free-Software-friendly companies to do the development work. Governments routinely contract with companies for one-off development, just as for building bridges. Once it's widely deployed, each office that uses it especially heavily might keep somebody on staff to contribute to maintenance -- just as many are doing now, albeit unawares.
Each city legislature should have a Free Software commission, keeping ties to its counterparts in similar cities, and spending money to develop Free Software to improve the city's operation. The promise is that, once developed and deployed in all the other cities, its maintenance costs will be minimal. States will pick up the practice as legislators graduate to state office, and the feds will catch on eventually.
This isn't researchy stuff, I am talking about nuts-and-bolts road maintenance equipment scheduling, schoolbus routing, police-officer shift assignment, vehicle service tracking -- boring stuff, but equally useful to all cities, and bloody expensive and buggy today.
You are not going to get immensely rich with free software. That's a pipe dream, nothing more. It has never worked before, and it probably will never work. And I think it shouldn't ever be like that.
My personal free software development model is that I founded a security company, make a living there, and use that money to write free software in my spare time. My experience is that software does not get better if it's rushed, for example by artificial deadlines and customers who have to have it until tomorrow evening. In the contrary, software written in such a climate will always suck, because you have to cut corners, and later nobody is willing to invest in sanitizing the code.
I have explicitly reserved the option for commercial dual licensing for my main free software project, the diet libc, but I don't see making a living from it. And I wouldn't want to. Programming is only fun if I can control the pace.
Don't center your business model around making money. Most people who do that will never make much money, and the few that do -- well, history tells that they aren't happy either. Most spend all their life trying to make money and none of their life enjoying the money they made. Targeting the big money will always leave you wanting. You will always ask yourself if you could have made even more money. Greed is bad for your karma. The harder you try to make lots of money, the greater the probability that you will be royally screwed, because greed makes you blind towards the risks. You only see the potential profit, not the risks.
I am quite happy with my business model. It works. It pays the bills for me and my family. And there is even good synergy. My customers benefit from me knowing about software development, and I have solved many a customer's problem with the free software I had previously written in my spare time.
Please try to stay on topic.
ncm wrote: "Replacing CVS is a big job begun only after CVS and its proprietary competitors penetrated into every nook and cranny."
Aegis started life in 1991, if I recall correctly, so it's mature, although it's still developing forwards today. It's just most people didn't realise how important a revision control system was until CVS was common and people don't seem to realise how suboptimal it is until they are either burnt or learn something better. Some still don't, even then.
My Opinion Only, perhaps.
New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!