Sourcebo is a content management system (CMS) for software projects. Each project has its own source code repository, a download area, documentation listings, mailing lists, and bug tracking. Sourcebo uses the Subversion source control system for almost all interaction. There are no web forms or other hosted software for the majority of Sourcebo tasks. The only exceptions are mailing list management and bug tracking.
At its core, Sourcebo provides source control for a project. This source control is provided by Subversion. The "source repository", as Sourcebo calls it, lives under the project URL in the src/ directory. The repository is visible via HTTP to everyone. Developers with write access can use WebDAV to commit their changes.
A project needs more than just source, however. Project leaders may wish to provide archives of released versions, compiled binaries, documentation, and other accoutrements. Sourcebo provides this with the "content repository". The content repository is a second Subversion repository living under the project URL in the content/ directory. Most of the web-visible content is stored here.
- Project downloads can include release archives, binary packages, configuration files, or pretty much anything a user would download to an offline source. The structure of the download area is up to the project developers.
- Project documentation can also be stored in the content repository. The documentation can be in any format a web-browser can view, including HTML, text, PDF, etc. Again, the structure of the documentation area is up to the developers. While documentation files could, in theory, be placed in the download area, the documentation area allows them to be organized in a fashion that helps users of the software.
- The news section allows announcements and articles to be uploaded and placed in the project's web space.
- Finally, the content repository contains the basic project configuration. This includes the human-readable title of the project, a short description of the project, the project's license, and any additional HTML to go on the project's front page.
Sourcebo uses the Mailman mailing list software to run project mailing lists. Each project gets four mailing lists:
<projectname>-commits -- Every Subversion commit is mailed to this mailing list
<projectname>-announce -- Major project announcements sent by the project developers
<projectname>-users -- A list for users of the software to get help and share experiences
<projectname>-devel -- Communication among project developers
Sourcebo uses Bugzilla to track bugs. Each project has its own entry in the bugzilla database.
Most Sourcebo users will interact completely through Subversion. Their basic tasks will all be accomplished via manipulation of the source and content repositories. Here are some documents on Subversion:
The Subversion Book - The authoritive guide to Subversion
CVS to SVN Guide - A guide to Subversion for CVS users
The Source Repository
Developers should have no trouble using Subversion with the above documents to manage the project's source code. Sourcebo enforces the "trunk, branches, and tags" repository layout recommended in the Best Practices guide. If you have a project named myproject on the server myserver.mydomain.com, you will be able to access the trunk of development via the URL http://myserver.mydomain.com/projects/myproject/src/trunk/. If you have write access to the repository, you can commit and change source as much as you like. Happy coding!
The Content Repository
The content repository is also a Subversion repository. It uses the same layout as the source repository, but with some extra structure. As it is slightly more complex, I've split the content repository information into a few separate pages:
/ContentBasics - Basic information about how the content repository is laid out, how it functions, and how the content appears on the project's web pages
/ContentProject - Setting the project's title, description, and license
/ContentFiles - How to fill the download area
/ContentDocumentation - How to add documentation
/ContentNews - Creating news articles