Creating a successful open source project

People write and contribute to open source for various reasons. My main reason to start writing an IDE for Perl was to help people: Both beginners and people who don't know much Perl or who need to maintain large or just old projects. I'll use it as an example to go over the various aspects of making a project successful.

For me it is important that the product will be used by many people and that it will make them happier. For me, in the context of Padre, that's success.

That means it is not enough to just write the code. It is also important to make sure people who could benefit from it can find it and use it. So I need to look at it in a way somewhat similar to how a company looks at a product. I pulled out my marketing book from my university studies. Surprisingly it looked unfamiliar. Then I remembered I got 60 on my marketing exam. The lowest mark that still let me earn my degree.

I recall something called the the 4 P-s. (Product, Price, Place, Promotion). I looked it up and it can be found on Wikipedia under the title Marketing mix. I'll go over the items as they are related to the Padre project.

Product

AFAIK most of the open source projects focus on this part only.

We have built the product. It is quite good already. Sure there are areas of improvement and there are even important areas that need a lot of work. In general the product is quite good. Thanks to the 50+ people who were involved in the project.

We will certainly need to make further adjustments and we will need to invest a lot more energy in the development but the most important of the Marketing mix we have done. We have a good product.

Of course I know it does not fit everyone. I know for example that people using vi or emacs will have a hard time to adjust to the more Windows-like editor. I also know there are many people for whom Padre would be of great help.

Installation

For Windows it is solved now in a reasonably good way as we have a Windows installer.

For Linux it is partially solved as the major distributions carry a version of Padre. Unfortunately in some cases their package is broken and naturally it always lags behind the source-code releases of Padre. People can install the most recent version of Padre relatively easily but it still requires spending some time.

On Mac the situation is quite bad as Padre can only be installed manually.

While the mostly potential users are on Windows, these issued need to be addressed on Linux and Mac as many of the vocal people are using those platforms.

Tutorials and documentation

A couple of months ago we started to collect a list of all the features of Padre and started to describe them on our wiki. This work needs to be continued and presented in a better way.

I have made a few screencasts showing features of Padre. I should make a few more describing all the features. That will also help me find out if I missed some of them :)

Price

Price is a funny thing. We don't charge anything for Padre. It is free. Both as in free beer and as in free speech. I am just not sure if it is always a good thing? I know many people, especially in the corporate environment, who would value it more if it cost them money. Anyway. We have a price and it is 0 USD.

There is however another cost factor besides the actual purchase price.

It is the time the customer needs to spend with installation, learning to use the product and on maintenance. In many open source projects this is higher than in their shrink-wrapped proprietary counterpart. For Padre this boils down to ease of installation, tutorials and good documentation.

Place

Traditionally this referred to the location of the store to make it convenient for the customers to visit and buy the product. In a supermarket setting this referred to the location of the product on the shelves. Who can put its sweets next to the counter where people are waiting with small kids?

On the Internet the physical location is not relevant but it is very important to make sure it is easy for the customer to find the product and it is convenient to purchase / download and install it. (In our case purchase is irrelevant.) Download and install was already mentioned under product.

So what remains is to make it easy for the potential users to find Padre. That brings us to the last of the 4 P-s:

Promotion

We would like to make sure people who are learning Perl will see Padre very early.

That means we have to make sure Padre is featured on learn.perl.org and maybe also on www.perl.org. For that we need to make sure it's worth the attention of the maintainers of those sites.

People who learn Perl will look for a tutorial. So we should build a free tutorial for learning modern Perl. I already started it using both screencasts and blog posts. (see Install Perl, print Hello World, Safety net (use strict, use warnings)) This needs to be expanded and made it good enough to be features on the main page of learn.perl.org.

In addition we will need to find other channels where people - not yet familiar with the Perl community - are looking for information about Perl. That's a much longer job and it will include using various social networks.

Lastly, many people get recommendations from friends who are already experts in Perl. Previous polls and surveys showed that a large part of the Perl community is using vi or emacs. I know they won't switch to use Padre but at least some of those understand that for many people vim and emacs are not the best choices. Especially when they are learning. (You don't want people to be distracted by the editor while they are learning Perl, do you?) Some of the hard core vim users told me:

Probably I won't use Padre but I see its value and I'll recommend it to others.

That's the message I would like to see echoed in the Perl community.

Conclusion

So there are a number of things to do. They are quite interconnected. Luckily while I enjoy coding Padre I also enjoy the promotional activities such as creating screencasts.

Published on 2011-07-06 by Gabor Szabo

In the comments, please wrap your code snippets within <pre> </pre> tags and use spaces for indentation.
blog comments powered by Disqus
Code::Maven
Python, JavaScript, Node.js, Ruby, and more.


Google Plus Twitter RSS feed