17 lines
3.0 KiB
Plaintext
17 lines
3.0 KiB
Plaintext
|
The future of software forges
|
||
|
<p>I’m still not going to talk about my attack on the forge infrastructure problems quite yet; the software is coming along nicely, but I intend to announce only after it handles its fourth forge type (yes, that was a tease). But I will say this: I now think I know what the future of forges looks like. It’s called <a href="http://roundup.sourceforge.net/index.html">Roundup</a>, and it is <em>astonishingly</em> elegant and potentially more powerful than anything out there. <em>Anything</em>, not excluding the clever decentralized systems like Fossil or Bugs Everywhere.</p>
|
||
|
<p>Here are the big wins:</p>
|
||
|
<p>1. Mailing lists, issue trackers, and online forums unify into *one* message queue that can be filtered in various ways.</p>
|
||
|
<p>2. Scriptable via XML-RPC or an email responder ‘bot.</p>
|
||
|
<p>3. Small base system with good extensibility – just three base classes (User. Msg, File) and the ability to define new classes. ‘Issue’ is a class built on top of these.</p>
|
||
|
<p>4. Arbitrary attributes per issue is basically free, with baked-in support for defining controlled vocabularies.</p>
|
||
|
<p>5. There’s a uniform way, called “designators”, for messages and other objects to refer to each other in text.</p>
|
||
|
<p>6. Small, clean implementation written in Python.</p>
|
||
|
<p>There are some things it needs, though… (Read the <a href="http://roundup.sourceforge.net/docs/design.html">Roundup design document</a> before continuing.)</p>
|
||
|
<p><span id="more-1359"></span></p>
|
||
|
<p>First, namespaces. A namespace is a set of User, Msg, and File objects that belong together. Each namespace gets its own hyperdatabase blob. Each namespace numbers objects separately. Each namespace has a unique name used as a prefix in designators. Thus, if I say [gpsd/msg23], I’m asking for the 23rd msg object in namespace gpsd. Everyone talking to a system system has, at all times, a current namespace. If I just say [msg23], I am designating the 23rd message object in my current namespace.</p>
|
||
|
<p>Why the slash? because, in the most general case, designators will be URIs – as, for example, [https://developer.berlios.de/gpsd/msg23]. Presto! There is now an internet-wide namespace of Roundup objects <em>all of which can refer to each other!</em></p>
|
||
|
<p>No prize for guessing that a namespace is a project. I’ve actually done two things above – I’ve defined all the required semantics for multiple projects to coexist in a forgelike system, and I’ve created a way for projects to refer to each others’ data even if they’re not on the same machine. Both features will be sources of power.</p>
|
||
|
<p>The subtler thing about namespaces is that they are perfectly orthogonal to the system’s other primitive concepts. This will pay off huge in some ways I can already foresee and many that I cannot yet.</p>
|
||
|
<p>I think the design also needs a primitive object class to encapsulate repositories. But I may be wrong about that; I’m still considering it.</p>
|