I'm loving this list of quotes from Steve Jobs, which is offered up as a model for open-source developers by Tech Source from Bohol. I couldn't agree more.
Freedom is one thing, and we've got Richard Stallman to beat the freedom drum. But making products that people want to use is quite another, and equally difficult to accomplish (if not more so). Steve Jobs is the person for counsel on that aspect of engineering.
Here are two of my favorites from the list:
Look at the design of a lot of consumer products - they're really complicated surfaces. We tried to make something much more holistic and simple. When you first start off trying to solve a problem, the first solutions you come up with are very complex, and most people stop there. But if you keep going, and live with the problem and peel more layers of the onion off, you can often times arrive at some very elegant and simple solutions. Most people just don't put in the time or energy to get there. We believe that customers are smart, and want objects which are well thought through.
It's really hard to design products by focus groups. A lot of times, people don't know what they want until you show it to them.
I love these two, as they point to fundamental flaws in the way some open-source software is developed. In the first quote, Steve Jobs unwittingly reveals a key reason that open-source projects beyond infrastructure fail: because developers scratch their itch, and their itch is likely very different from the business user of a CRM system, for example. Developers often focus on elegance in design of the code, but what end-users want is elegance in design of the UI.
The second quotation relates to the first: Linux largely succeeded because Linus Torvalds knew what he wanted, and corralled a community around that vision. Where open-source projects truly depend on a community to not only build but also envision a product, they end up squandering time and resources. The key to great open-source programming is the same as great closed-source programming: a compelling, unified vision that drives people toward a common goal.
Open-source developers often look to projects like Apache and Linux for inspiration, but I think Mark Shuttleworth is right to set his sights on exceptional consumer products like those that Apple builds. Shuttleworth realizes that great engineering is about the end-user experience, and not really about the bits. Maybe he learned that from Steve Jobs.