Open Source Project Management for Beginners?
aendeuryu asks: "So I've been getting the programming bug again, and I started up a Sourceforge project for a game I'm trying to write. Development is going really well so far, but I've quickly realized that programming in my own personal vaccuum for my own personal pleasure is completely different from programming for the community at large. Things I never needed to worry about -- applying patches, writing documentation, license requirements, creating autoconf files for Linux compatibility -- are suddenly my responsibility. Now, I'm trained in programming in several languages, using databases and specialized libraries, etc. but when it comes to deployment for, and interacting with, the Open Source community at large, I know just about nothing. So, to all the veterans out there, where is a good place to go to get your feet wet on this? Is there any good advice for people who are getting started in OS project management?"
Tutos.
Its one of the most versatile project tools I've used for development projects. Full time management and accounting, tasks, there were even gantt charts addons, although I cannot remember where to find them.
Beyond project management, this also starts to grow into things like resource management. Its a very comprehensive package that I find extremely useful.
PHP+SQL and released under the GPL2. Will run on pretty much any platform (I have it on OSX, Apache+postgre) and easy to use once you get used to it. ;)
This might be a little ways down the road for your, but here goes anyway.
In my opinion, these are three essential things for your developer and user community to grow:
- bug tracking software (I recommend mantis)
- forums (I recommend anything other than the sourceforge forums)
- code repository (again I recommend using subversion on your own box rather than cvs at sourceforge)
The bug tracking software will allow you to set milestones and log issues so you can build towards those milestones. It gives active users as well as new users a good idea of what work is being done, at what pace, and your intended direction.
The forums are a great place for developer discussion to sort out what the next great feature will be or how to solve the current roadblock. Also makes for great reference material for new users. Almost like self documentation.
And obviously your code repository will give users easy access to checking out the latest changes and also commiting their contributions.
Let your community give you feedback on your project and steer the direction while you act as the figure head to sort out any conflicting needs/wants within the community. Remember that if your users/developers lose interest, your community will suffer.
Got a site/story worth sharing? Leave a mark
The first rule of autoconf is to find someone else to do it for you, or if that's really not possible to copy it off some existing code. autoconf is deep scary badly documented hacked together voodoo -- it's really not worth learning it properly unless you're going to be doing distribution work or similar.
I evaluated dotproject not too long ago. The initative to implement it at my company got sidetracked, so I can't comment on actual usage.
It's on sourceforge and at http://www.dotproject.net/
The facts have a liberal bias. --The Daily Show
If your case is typical, you will be programming on your own time for a long time to come. Just that it's on Sourceforge doesn't mean people are playing your game, let alone supplying patches - you should be very happy to receive one or two patches in the first year.
The important thing is to stay active, code a lot, and not let your project turn into yet another dead Sourceforge project. And then just handle things as they come up.
For 95% of the projects out there, there really isn't any difference between an open source project and something you just do on your own.
I believe posters are recognized by their sig. So I made one.
I didn't want to clutter the submission with my own personal dumb questions, so here they are:
* All my development right now is on a Windows box. What's the best way to go about ensuring Linux/POSIX compatibility over the web? Compile farms? Recruiting a Linux maintainer?
* If I don't have access to my own server, where is the best place to host? Sourceforge (the only one I really know about) or somewhere else?
* Somebody's submitted a patch. What's the protocol for crediting them for the work?
* What are the criteria for determining whether or not something is "pre-alpha", "alpha", "beta", etc. Is there a set standard, or do I get to determine this on my own?
* How useful are wikis for OS projects?
* If I have legal questions regarding licenses or IP, who should I talk to?
GanttProject seems nice. I haven't tested it thoroughly, but it seems promising. It was mentioned on a NewsForge article.
Pre-alpha means that some features have not been implemented. Alpha means that all features have been implemented, but some bugs remain, and you are still missing some content. Beta means that all features and content have been implemented, but some bugs remain. Final/Gold means that all features and content have implemented, but no bugs remain that your team is aware of. Some people may have different definitions, but these are pretty widely agreed upon by professional game studios and publishers.
Voodoo Girl is the bomb!
Read Eric Raymond's "The Art of Unix Programming", available online here, especially Chapter 19 about good free software development practices. Most of the guidelines are directed towards contributors instead of project maintainers, but you will get a good overview of the "best practices". The rest of the book might be less interesting to you if you're a Windows guy, but it's still a nice read (ignore ESR's random political rants and self-righteous examples) and gives a good overview of "The Unix way" of doing software development.
Always remember to defrobnicate the fitzer valve. Nobody will take you seriously until you do.
A hasty Google search revealed the submitter has launched a project consisting of a game called Rush 2005 , which is described as is quoted beneath.
It looks quite primitive as it is, but with your help(I am not affiliated to the submitter, by the way.)
Check out There's No Such Thing as a Free (Software) Lunch. It's summarized as: What every developer should know about open source licensing and written by a General Counsel at Wasabi, an Open Source company.
Ed Grossman, InformationWeek
For a relatively small project, Wiki can integrate bug tracking, forums, homepage, documentation, etc.
You rock, aendeuryu! You actually said "different from" rather than "different than"... Thank you.
> How useful are wikis for OS projects?
Never use a Wiki for documentation! Instead, you need a documentation maintainer to handle submissions. They will ensure that your documentation is clear, complete, correct, current, and consistent. This is hard work that goes largely unrecognized by the rest of the Open Source community.
Consider your documentation maintainer a part of your team. Give them CVS privileges. Don't disrespect them because they don't contribute massive amounts of source code. Answer their questions quickly and in a friendly manner.
If they have a problem explaining a feature, it may be a usability problem with your interface. Also, users will find a bug but will complain that the manual is wrong. So documentation maintainers are a source of good bug reports. Don't ignore their input because they're not an active programmer!
DocBook is the standard markup language for the major Open Source projects, so learn it.
I didn't read your comment till the end, and missed "...that hasn't been a problem for me on any of the Windows machines, and I don't have access to a Linux box..."
Anyway, cygwin is a good way to run Linux commands on a Windows box.
SourceForge lets you specify what kinds of help you are looking for -- use this to find someone to help you out with these details. People love giving advice -- find someone interested in your project who has done this before, and take advantage of that. Give them access to your project, discuss the best options with them (nice learning experience for you... plus needing to explain "why" will push them towards better suggestions), and you're on your way.
I found PMK to be MUCH easier to work with than the autoconf nightmare. Also, if you are doing C++, check out the Boost libraries, which hide most of the cross-platform complexities for you.
On my game project I "defined" this:
Pre-alpha: something working that it's worth to show.
Alpha: Most basic engine and gameplay components working.
Beta: I finally looks like the game I had in mind (that is, all features that I thought off for the game are working), but it's not finished yet (gameplay tweaks, maybe a bit more content, bugs, maybe some optimization..)
Final: It's ready (but can envolve further).
I once worked at company where the PMs were treated like royalty -- and with good reason. You saw them fighting Murphy's Law every day, and usually winning. I worked closely two of the most respected PMs ("respected project manager" sounds strange, since most companies treat them like shit) and neither of them relied on fancy tech. One simply kept a lot of notes on hard copy, email, and internal web sites. The other mostly did the same, but also hacked together a simple web-based database to help the developers on his team not trip over each other. Both did a really great job.
At the same company, I worked for the one department(publications) that refused to have a professional PM. (Manager was a socially challenged empire builder.) A lot of PM chores fell to me, because of the nature of my job (production for an online document bundle) and because I was the lowest-status member of the department. I knew jack about project management, and had to learn by doing. I made a lot of stupid mistakes, but the biggest was putting my faith in a Lotus Notes database to help me coordinate workflow. It looked cool, and it satisfied my long-frustrated desire to learn Notes, but it just didn't come close to repaying the amount of time I spent working on it.
Later I worked at another company where everybody had the more usual attitude towards PMs: they're petty bureaucrats whose only role is to waste everybody's time. Since there was no coordination, projects were always going off the tracks. Management lacked the ability to change the way people worked, so they kept coming up with silly magic bullets: weird organizational changes, rules for how people were supposed to do things (always ignored), and of course lots of fancy project management tools.
I spent hours learning and fighting this software. It wasn't totally hopeless, but it was overdesigned and inflexible. We would have been better off with simple web pages and databases. Wikis come to mind.
My point is this: you need to learn how to be a Project Manager first of all. Then you'll know enough to chose the right tools.
Get rid of PHP. Your site is slow and has ugly URL's. It's much easier to refer somebody to http://pobs.sf.net/download.html than to http://pobs.sf.net/index.php?section=9&page=25.
Even easier... Use PHP or anything you want and just send them to pobs.sf.net. The first thing they should see are obvious "download", "forums", "documentation", "screenshot" links. Encourage everyone to go in through the front door.
Shortest URL possible and opportunity to see other urgent/useful things.
One minor typo/error in my list of release stages. The entry for "beta" reads:
...when it should actually read:
Sorry if this caused any confusion.
Yaz.
I have been using Trac for a little over half a year. Trac provides a combination of wiki + ticketing system (bug/issue tracking) + Subversion integration for source. Project Roadmap and Milestones are particularly helpful.
Check it out at http://projects.edgewall.com/trac
Eventum is a user-friendly and flexible issue tracking system that can
v entum/index .html
t um/scree nshots.html
u m/featu res.html
...
be used by a support department to track incoming technical support
requests, or by a software development team to quickly organize tasks
and bugs. Eventum is used by the MySQL AB Technical Support team, and
has allowed us to dramatically improve our response times.
Product Overview:
http://dev.mysql.com/downloads/other/e
Screen shots:
http://dev.mysql.com/downloads/other/even
Features List:
http://dev.mysql.com/downloads/other/event
Eventum has three main areas it may be used: One as a bug tracker, one
as a support software (ticket system), and one for project management.
We currently track many projects through several stages of development.
Using custom fields we are able to add project specific infomation to
the issue/task. i.e files edited, file added. SCM integration allows us
to track cvs commit history of all modified files associated with a
given issue/task (Change set). The project is supported and developed by Mysql AB
with a very nice user interface and well written php code (easy to
customize).
Quick List of Features:
-SOAP and XML-RPC
* add issues/task via web service api
-Email Integration
* add issues via email
* Create / Modify / Delete canned email responses to automate
common tasks of replying to support email
-SCM Integration
-Assigned issues listing by user
-Project Management
-Reports and graphs (by issue, by priority, by issue time, etc...)
-Command Line Interface
-Phone calls by issue/task
-notes by issue/task
-File upload by issue/task
-and many more
Eventum is wonderful for managing a large group of people over many
projcts and breaks the barrier between a bug tracking/ticket system and
a project management system. Well worth a quick look!