This is sort of a major push for AlliedModders to be a bit more streamlined. We're encountering growth problems, especially as our personnel has dwindled quite low recently. This document discusses some changes I'm proposing. Anyone is free to discuss this on the forums or add comments into this document.
Everything related to source code management in this document refers to Metamod:Source and SourceMod. AMX Mod X is considered "mature" and is no longer maintained except for critical or high priority bugs. If and when we do a move past Subversion, it is unlikely AMX Mod X will follow.
- We're finding it hard to manage multiple projects in a unified way.
- There are site disparities, Metamod:Source and SourceMod and AMX Mod X each have entirely different backends.
- Similarly, each site has a different version of the mirror system script.
- Subversion doesn't cut it -- Mercurial might handle things better. Subversion basically has no branching or tagging support, and it has no real branch merging capabilities. This is a real problem for SourceMod which has pretty active development.
- The packaging system is disorganized and fundamentally broken. It's inconsistent, inaccurate, and takes up 1.7GB of wasted space and growing.
- AlliedModders has plans past SourceMod. We need to be able to grow our project base without adding exponential amounts of work.
- We still don't have a main site
- MediaWiki still has authentication problems since its handling of usernames is broken
- Flyspray is buggy, definitely non-production, and doesn't get maintained frequently
- It's impossible to maintain the AMXX/SM/MM:S sites right now
Subversion doesn't let us branch nicely or create user-specific branches without forever mucking up the central repository. It's difficult to do merges.
An excellent tutorial for how Mercurial works is here.
Phase 0 - Done
DONE: We've eliminated build numbers and are back on the x.y.z system.
Apply new versioning scheme, whatever it may be.
Phase 1 - Done
Move from Sente to Iroh so we can get away from ThePlanet and clean up/optimize some infrastructure. This is documented at Iroh Migration.
Expected date: Mid-July
Redo automation so the "packaging" versus "sending upstream" processes are fundamentally separate. Redo "sending upstream" process so it simply sends over FTP. Use an SSH tunnel to notify of new packages, so we don't have to do something idiotic like mirrors.pl for the mirror system, or using post-commit scripts on the Packages repository.
- Redo the package system so only 30 days worth of builds are available.
Write a script to help users diff between packages? (Update: No one asked for it.)
- Remove the Packages repository entirely (transitioning AMX Mod X to this will be trivial).
Update symbol server to include binaries and maybe even sourcecode? Removes the need for fetchdll's.
Expected date: End of 2009
Phase 4 - Done
Move the pdbstore to be centralized client-side. This can be accomplished by making a more advanced symstore wrapper that will remove anything older than 30 days, and then (in a similar SSH tunnel method as above), rsync all changes upstream to the webserver. The exact mechanism is still up in the air, but rsync would probably suffice (as long as we can stomach cygwin). Remove the Symbols repository. Rewrite fetchdlls to support the new layout.
Phase 5 - Done
Add hg.alliedmods.net pointing to our "repository roots," which will be per-project. For example, hg.alliedmods.net/sourcemod. From there, import trunk as "sourcemod." Branch every major release off as separate repositories, from the appropriate revisions. Tag minor releases. Update all links we can find on the site and in the docs.
Expected date: Q4 2008
Import mmsource into Mercurial. Import hl2sdk/hl2sdk-ob into Mercurial.
- Update all links we can find on the site and in the docs.
Expected date: Q1 2009
- bug 3259: We need to update vBulletin to the 3.7 branch. This is potentially a huge task.
Expected date: Q1 2009
We really, really still need a CMS to make this packaging, mirroring, etc business much more streamlined. But this phase is so far in the future I expect other phases to creep in before it. This is more a mind dump than anything, but here goes --
Moving from flyspray to bugzilla. After using bugzilla, I'm convinced that its massive feature set far outweights the few permissions issues we ran into. flyspray is severely lacking, and even though bugzilla isn't the nicest looking tool, it's templated and professionally done. It has little things that really count, like.. The input system isn't broken and convoluted like Flyspray's embedded dokuwiki (which seems to be less a product than a bunch of bugs someone coded) A much, MUCH better attachment system that allows for attachment reviews More focused on triaging and patch management than flyspray, which is simply a list of tasks with some basic statistics
- Moving from MediaWiki, which (I view) as a very, very outdated piece of software. From version 1.5 to 1.10 I have noticed no real usability or feature set changes, and the installation/upgrade process is always very buggy for us. Its administration and permissions model is laughably limited. A possible target for this is DekiWiki which Mozilla is supposedly converting to. It's open source and it's actually a CMS, which (perhaps) could kill two birds with one stone.