Friday, March 11, 2011

Project Websites

a - I am fed up.
b - Why ?
a - Damn spammers using phpBB is ticking me off. Seriously.
b - Well, what can we do about this, using phpBB ?
a - Not a whole lot, I've tried. And bulletin boards suck at this.
b - OK then - come up with a better thing, smarty pants.
a - Fine - let me try...

First, a project (in this case, my time sink that is Open-AudIT - but this could apply to most other software projects) needs a website for people to discuss the software in question.
Not a mailing list (apologies to those that love them - I don't think they're a good fit for this). Not even a bulletin board (phpBB, et al). A way to communicate that is relevant to the discussion being held. So - different types for different conversations.

What type's of conversations does a project (usually / regularly) have ?

Users submitting Bug Reports.
Users submitting Feature Requests.
Users wanting help.
Documentation provided by Dev's and commented on by users.
Recipes contributed by Users & Dev's for "doing stuff" with your software - FAQ, How do I, etc.
Other (general) conversations about the software.

OK, so they're stuff to "talk about", but what else does a project website need ?

Brochure type pages.
A demo of the software to play about in.
Statistics of "commits" and ChangeLog reports.
A developer blog.
Somewhere to download the code from.
An easy to use sign-in / sign-up system that stops a lot of spammers.

OK - so now go and try to find ONE easily installable package to deliver ALL that. It doesn't exist. Sure, the various parts exist separately.

Users submitting Bug Reports. Bugzilla.
Users submitting Feature Requests. UserVoice.
Users wanting help. StackOverflow.
Documentation provided by Dev's and commented on by users. PHP Docs.
Recipes contributed by Users & Dev's for "doing stuff" with your software - FAQ, How do I, etc. A website.
General Discussion's. phpBB.
Brochure type pages. A website.
A demo to play about in.
Statistics of "commits" and ChangeLog reports. SF.net reporting.
A developer blog. Wordpress.
Somewhere to download the code from. SF.net code hosting.
An easy to use sign-in / sign-up system that stops a lot of spammers. OpenID.

But I want ONE thing to do this. I want my users to come to ONE place. Not to have to sign in to several individual systems. To have a CONSISTENT experience. To be EASY to use and find stuff.

Nothing exists. Well, not that I have found and that is free. Damn.

I guess it's put up or shut-up time.

I don't want to build something from scratch. I don't have the time (just ask those waiting for the next OAv2 release !). So, what is out there that is written in PHP (I know PHP), runs on Linux (I use Linux on my home desktop and my hosting runs on Linux), is extensible, is well written, has a good community, has good Docs (and books about it even) and can do the above stuff (obviously with modification) ?

My answer is WordPress. Yes, it may not be everyone's answer - but I really don't care. It's what suits ME. I am writing this for ME. If other's wish to use it great - it will be Open Source licensed.

So I am currently reading some WordPress books and it looks to be able to accomplish most of the above. The one's I do not plan to tackle are the code hosting/version control stuff - although a plugin to report on SF.net, GitHub, BitBucker, Google code, LaunchPad, et al would be nice. Obviously an example install of any given project won't be done in/by WordPress. I think everything else though, is achievable.

So - that's my goal.

A theme & plugin and recipe for including others plugins to make this happen.

If you would like to get on board or have some constructive feedback, please let me know (or reply to this blog post). If there's other things a project website would find useful that I have missed, please do let me know.

I have two goals.

First and foremost - to get this working for MY project website.
Second - to package it as a theme & plugin and provide a recipe for others to easily use.

I don't think this is rocket science. I want an easy to use and simple user experience. I realise there will be edge cases and most of them will simply not be catered for. I don't plan for this to be an "all things to all people" type approach. I want it SIMPLE.

So, there you have it. Damn I hate making work for myself :-)