Competition and Open Source Projects
Masoud Kalili has been thinking recently about competition as it applies within the open source realm, versus how it applies within the corporate business realm. In his recent blog post Competition is good but to what extent and at what expense... Masoud begins by saying:
It is always said that competition between different producer and companies producing similar products is good for the end users and consumer of those products because the each company tried to provide better products to satisfy the consumer and finally receive more income.
All of the above are true when we are discussing commercial entities which produce the products, for example ORACLE and IBM competition lead to better database and set of middle-ware. But I believe it is not the case for open source projects and specially for smaller open source projects.
He goes on to note that comhttp://java.net/homepage/managepetition between similar, small open source projects can be wasteful:
Looking around we can find at least 10 different open source blogging clients, MP3 meta data editing tools, media players, instant messaging clients and so on. Except for the first project, other similar projects started after there was something usable around. Developers working on each of these projects work to implement same set of features...
I agree with Masoud that in the open source world there is an incredible amount of, in essence, duplicated effort. And much of this duplication of effort is of a type that would never occur in the corporate business world. In the open source realm, you can indeed have a plethora of small projects that have approximately the same objective, but with various tweaks in the feature set. This happens to a much lesser extent in the business world.
So, what difference between open source and corporate business drives this? Well, it's money. In the corporate business world, all effort is funded by someone. If an idea doesn't convince someone that a profit can be generated somewhere down the line, that idea does not receive funding; and no development effort (beyond, perhaps, a very basic prototype) is expended.
Meanwhile, with open source, the driver behind the effort is usually some combination of love of the activity of software engineering, practicality ("I need this, and it doesn't exist, so I'll invent it"), charity ("the world needs this, so I'll provide it"), socialization (each open source project is its own little community), ego ("I like seeing my name up there as owner of a project") -- and, there can also be a desire and/or hope for eventual profit. Even without profit, you could say that open source projects are kind of like little businesses that operate within a different realm, where the currency through which effort is rewarded is self-satisfaction, influence, or fame, rather than hard, cold cash. Though, sometimes, involvement in a major open source project can indirectly turn into cash by spiffing up your resume, leading to new professional consulting opportunities or a better chance to land your next job.
The profit motive for a software engineering project within a corporation is number one, while in a smaller open source project financial profit is typically far down on the list of objectives, if it's there at all.
Due to the tether of needing to make immediately visible to the marketing team the probability of making a profit (and soon!), many good ideas go nowhere in the corporate world. I think this is a major reason why open source came to be such a powerful force in software engineering. Surely, everyone would be pleased if their ideas and their work ultimately produced a financial reward. But, sometimes the desire to make the idea reality is sufficiently pervasive that developers, seeing no route within their day jobs, decide to work on the project on their own. Especially when open source was first coming into being, I think this was the case.
Masoud, who has worked on many open source projects, looks at the wasted effort expended by 90% of small projects that seek to create their own version of a product that already exists in a bigger, more established open source project:
I know that there are architectural differences between projects and developers think that they will do the job better than the previous one, I was there once and I know how does it feel, but believe me, working together on a single project makes much more sense than working on 10 separate projects with similar goals and later on seeing 7 of them abandoned.
A better solution:
Imagine that all developers working on different instant messaging project combine the effort and work on one of available IM projects, wouldn't that please everyone in the community?
Masoud's view on open source projects and developer effort is practical. Pooling efforts indeed produces more functional and fully featured products. You see this in the big open source projects.
But, some people are by nature inventors, and need constantly to strike out on their own. They don't like to be limited by other people's opinions, constrained by things like a "community process." Such constraints immediately begin to feel like an overarching bureaucracy to these people, somewhat like what exists in the corporate world. They don't like limiting structures, so they leave and start new projects.
Others, of course, simply have big egos, or can't get along with anyone else, so they prefer to create and work on their own one-person projects.
Between these two groups, the natural inventors and the big egos, I think we'll always have lots of small open source projects, and lots of basically duplicated developer effort. But it's also true that among that small, devoted inventor group, some people are today working on ideas no one else is thinking about, that will become major products everyone knows about 10 years from now.
Oracle OpenWorld 2009 begins on Sunday, October 11, and continues until October 15 at Moscone Center in San Francisco, California. Oracle Develop, a premier developer conference for Oracle technologists sponsored by Sun Microsystems, takes place from October 11 to 13 at the nearby San Francisco Hilton. Oracle OpenWorld offers more than 1800 sessions, 400 partner exhibits, keynotes from the world's technology leaders, hands-on labs, several special networking events, and more...
The Java ME SDK Team is running a Device Selector Poll:
Java ME SDK 3.0 was released half a year ago. During this time you have got a lot of experience with this product and we would be happy if you could share it with us. It helps us to improve the product to satisfy your needs. Today we would like to know your opinion about Device Selector...
Terrence Barr invites developers to Join me at the Mobile 2.0 Conference this week:
I'm in the San Francisco Bay Area this week for the Mobile 2.0 Conference (Thu, 10/15 and Fri, 10/16). Mobile 2.0 is a grass-roots conference that brings together experts and thought leaders from around the mobile ecosystem. It focuses on new mobile applications and services, mobile ecosystem issues, and disruptive mobile innovation...
In today's Weblogs, Masoud Kalili says Competition is good but to what extend and at what expense...:
It is always said that competition between different producer and companies producing similar products is good for the end users and consumer of those products because the each company tried to provide better products to satisfy the consumer and finally receive more income. All of the above are true when we are discussing commercial entities which produce the products, for example ORACLE and IBM competition lead to better database and set of middle-ware. But I believe it is not the case for open source projects and specially for smaller open source projects...
Rex Young continues his series with Thread-Safe Swing Application (Part 2):
Design thread model along with OO model for your Swing application. A thread model defines a scope e.g. a set of classes a thread (or a pool of threads) will stay in. As threads would step out the scope, scopes employ message passing for event notification...
Jim Driscoll talks about JSF 2, Custom Java Components, and Ajax Behaviors:
Unlike most of my blog posts, where I try to describe the easiest possible way to do things, in this posting, I'll instead go over a Java-based custom JSF component that responds to the Ajax tag. The reason being that there simply aren't any examples out there of how to do this, and at least two people have expressed interest in finding exactly out how this is done. I'd advise anyone considering doing this to make really sure that you can't do the same thing in a Composite Component (you usually can), but sometimes, a Java-based custom JSF component is going to be required. We're going to cover the following topics here, and it's going to be a little more code than usual, but I suspect that this will end up saving some folks a bunch of time, so lets plow forward. I'll cover ...
In the Forums,
bconnors has JXMapKit questions: "I just started playing with JXMapKit and the JXMapViewer. Maybe I'm doing something wrong but it would appear that there are some issues lurking out there. The first is when creating a TileFactoryInfo object and try to constrain the zoom to 5 levels, I..."
gkariis working on JPA - One to Many persistence issue: "Hi All, We are facing an issue with one to many relationship persistence using JPA. We have a one to many relationship between Company and Personnel. When A personnel is created, the company(the parent in the relationship) is..."
thisisnotme has A couple of questions about the virtual keyboard: "The keyboard works really well on my Nokia 5800, running their Beta Java VM. I have a couple of questions: 1. We're meant to initialise the keyboard before calling Display.init(): VKBImplementationFactory.init(); ..."
Our current Spotlight is the JavaFXpert RIA Exemplar Challenge. The java.net JUGs Community reports: Java Champion Jim Weaver has a serious JavaFX contest going on. "Create an application in JavaFX that exemplifies the appearance and behavior of a next-generation enterprise RIA (rich internet application)". Entries must be submitted in the form of a NetBeans project by 00:00 GMT on 10 January 2010.
The current java.net Poll asks What future do you foresee for GlassFish? The poll will run through Thursday.
Our Feature Articles include Jeff Lowery's A Finite State Machine Supporting Concurrent States, which demonstrates how Java enums and EnumSets can be used as a basis to define and validate application states and state transitions. We're also featuring Jeff Friesen's article Introducing Custom Paints to JavaFX, which shows how you can leverage undocumented JavaFX capabilities to support custom paints in JavaFX Version 1.2.
The latest Java Mobility Podcast is Java Mobile Podcast 88: Robert Virkus of Enough Software: 'A conversation with Robert Virkus of Enough Software about J2MEPolish and the "Mobile Deverloper's Guide to the Galaxy."'
Current and upcoming Java Events:
- October 19-22: SpringOne 2GX 2009
- October 19-23: Java Power Tools - Sydney
- October 19-23: JavaEE Training Philipines
- October 23: Strange Loop Conference - St. Louis
- October 23-24: 2009 Greater Atlanta Software Symposium: Fall Edition
- October 24: Florida Linux Show 2009 Orlando
- November 6-8: 2009 Northern Virginia Software Symposium: Fall Edition
- November 9-13: W-JAX 2009
- November 13-15: 2009 Great Lakes Software Symposium
- November 16-20: Java Power Tools - Wellington
- November 20-22: 2009 Rocky Mountain Software Symposium: Fall Edition
- December 1-4: 2009 JSF Summit
- December 1-4: 2009 Rich Web Experience
- December 11-12: 4th IndicThreads.com Conference On Java Technology, Pune, India
Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of java.net it will be archived along with other past issues in the java.net Archive.
-- Kevin Farnham