Alex Rivera | Logout

Best Practices for Setup and Management of an Open Source Project

Asked 2010-04-02T16:23:03.447
20

Later this year I want to release a PHP framework that I've been working on as open source. I do use source control (SVN), but it's on an extremely limited basis. I'm self-taught, I develop by myself and don't have the experience of working with large teams. I have some ideas about what can help make a project successful, but I'm fuzzy on some of the details. Since it's not yet released, I want to do everything I can to set up the right infrastructure from the beginning. What do I need to know in order to setup and manage a successful project?

Some ideas that I have to make it successful (beyond marketing it):

  • Good documentation and tutorials
  • Automated unit tests and builds to push update to the website
  • A clear roadmap
  • Bug Tracking integrated with the source control
  • A style guide to keep the code consistent
  • A forum for the community to get support, share ideas, etc.
  • A good example application built with the framework
  • A blog to keep the community informed
  • Maintaining backwards compatibility wherever possible

Some of my questions:

  • How do I setup and automate a one step submit-test-commit-generate API docs-push update to website process? Edit: Would Ant or Maven be good candidates for this? If so, do you know of any resources for setting up a PHP project using them?
  • How do I handle (technically) submissions from other users? How can I ensure that those submissions must be approved before being integrated?
  • What are some of the pitfalls that can be avoided in terms of the project community? I'd prefer to have it be as friendly and helpful as possible without a lot of drama.

I'd love to learn from your experience on any of these points. If you think I'm missing anything big, please share that as well. Any resources (preferably geared toward a beginner) that you could point me towards would also be g

Edit
Report

1 Answer

4

The most important thing you have to do is to attract users. Without users, you won't get any contributions and developers helping you out. Because developers are users first, and then they decide to extend/fix something they use and might become contributors.

So to get users, you should consider

  • describe what your framework does in one or two sentences at the top of your project page
  • mention how your framework can be used and for what, what situations it is most useful for
  • add a lot of examples on how to use it
  • mention whether your framework is stable, beta or alpha. That's important because user need to know that before they start using it
  • also mention whether you want to keep improving it and keep working on it - most users don't want to use a framework that's abandoned (also keep in mind that a lot of users check your commits to see whether you really are working on it - if your last commit to the repository was months ago then you're not really working on it, so cheating isn't possible)

If you got all this, and people start submitting patches, you can use a patch tool to apply those to your source. Depending on your version control system, you can either use the GNU patch, a diff/patch tool that comes with your version control or maybe even a GUI tool that helps you with this. SVN doesn't have a patch tool (yet), but 'svn diff' will create a patchfile which you can then apply with the GNU patch tool, or in case you're using TortoiseSVN, right-drag the patchfile to your working copy and have TortoiseMerge apply it for you.

And on how to best deal with the community:

  • answer questions in time, don't wait more than two or three days to answer questions
  • try to be nice, even with upset and angry people. Only if they keep bothering tell them to (still in a nice way if possible) go elsewhere
  • always keep discussions about the project on a mailing list. You
answered 2010-04-09T21:44:05.690

Your Answer