Re: Development Plan

Philippe C.D. Robert <[email protected]> Wed, 30 Oct 2002 00:25:25 +0100
Newsgroups gmane.comp.gnu.3dkit.general
Message-ID <[email protected]>
Hi,

On Friday, October 25, 2002, at 07:26  Uhr, Brent Gulanowski wrote:
> Fellows,
>
> I will admit right up front that I am a strong believer in design when 
> it comes to any complicated system. I know that in the age of Xtreme 
> Programming I may be a minority, but I'm going to make a short pitch 
> for it (well, short-ish), and maybe some of my suggestions will stick, 
> or at least generate discussions. And those of you who do this for a 
> living, and don't need me to tell you... well, I just want this stuff 
> on record. I'm the last person to school anyone. Phil, I know you're 
> working on something design document-esque in your secret laboratory 
> -- don't read this if it will interfere!

I agree with you, we should coordinate the design and dev work, esp. 
since I will/do not have as much time as I would like to (to work on 
the 3DKit).

> If GNUstep already has rules about anything here (notably part 3), 
> let's please post a link or a FAQ or something on the website, when 
> it's possible to do so. Apologies and excuses made...
>
> Suggestions for a Development Plan for GNU 3DKit
>
> Every project can benefit from planning of some sort. I think that G3D 
> would benefit primarily from a few particular kinds of documents.
>
> 1. Produce a major feature list
> This is just an itemization of the features that G3D will offer, from 
> general interfaces and platform targets to extensibility and 
> third-party hardware/software integration and support. Features should 
> be a) ordered by priority and inter-dependency, b) given some kind of 
> rating of how much work each will require, and c) grouped in some 
> sensible way (i.e.: by component or functional relationship). If each 
> major feature (well, those slated for a milestone release, like beta1 
> or v1.0 or whatever) was broken into sub-features, that would also be 
> good. Then we can look for over-lap and/or conflicts in the 
> sub-features. Finding the right granularity for feature specification 
> can be a dynamic process.
>
> The flip-side of the feature list is the anti-feature list: what the 
> system will not do, ever. Then assumptions about what might or might 
> not happen to the code can be made explicit. It's a separate issue if 
> they turn out to be wise assumptions.

Yes, this would also help newcomers to understand what it is all about. 
I suggest we create a white paper for this purpose which eplains the 
3DKit a little.

> 2. Identify the functional sub-systems
> Software just does work that, without computers, people would do. 
> People in an organization are always broken down into departments and 
> work groups, and I think this metaphor works very well for software 
> systems. Especially when you have OOP and multi-threading, 
> multi-process, or distributed process models: these are already 
> inspired by task management and workload sharing metaphors. Metaphors 
> aren't always appropriate, but they can help visualize a system that 
> is otherwise very abstract. (I've come to see software development 
> much more like people management than like mechanical engineering, 
> except at fine granularity.)
>
> If we want to support plug-ins or other modularity (such as a 
> modularized renderer), it's helpful to identify how this division in 
> the code base will result in a division of task responsibilities. This 
> allows programmers to choose what they want to work on and concentrate 
> on it, if they desire. It helps newcomers to understand the system, 
> including newbies.

I am working on this. I also hope to make things as easy as possible by 
the layout of the PB project (see the GeometryKit as an example).

> 3. Specify the code standards
> Naming, text formatting, documentation, file layout, repository 
> directory structure, and many other things are done quite differently 
> by different developers, but the project needs to be consistent. The 
> earlier this is specified, the less re-working required.

I think we should just use the GNU standards as it is a GNU project. 
This requires reindentation of the GeometryKit as well, I assume.... 
The rules should be available on the GNU pages. We should also add the 
link to the 3DKit page.

> 4. Dependencies
> Some are obvious and some aren't. This should be quite simple. What 
> environment are we developing in, what language, what tools, what 
> dependent libraries and the like. The fact that it's a library takes 
> away some of the burden. If we extract the renderer into its own 
> module, what's left is probably not far from pure Foundation OpenStep, 
> I think, which is great. But even extracted, the renderer will deserve 
> some boundaries to be defined around it. For an OpenGL renderer, what 
> version of OpenGL? What extensions are we supporting?

Hmmm ...  this should go into the white paper mentioned above as well, 
no? But to give a final answer the design has first to be finalised.

> 5. Construction Plan
> The last main thing might be to map out the order that the first set 
> of features should be addressed -- the first batch of essential 
> features all have the same priority. I'm sure Phil has some idea of 
> what order he wants to lay things out, whether it be down-up, 
> top-down, or some other approach. I like a kind of top-down iterative 
> blend, myself -- sketch the skeleton, then add the internal organs, 
> muscles, nervous system, blood vessels, skin, sensory implant 
> junctions, bionic limb attachments, kung-fu grip -- you get the idea.
>
> I'd recommend we avoid mixing implementation discussions in the 
> development plans, if at all possible. I was just reading the OpenSG 
> "Design Document", and it (the document -- not the project, I hope) 
> must have really fallen apart while they were writing it, since it's a 
> total mishmash of fine detail speculation. It's virtually unreadable. 
> They talk about bit mask word sizes in the midst of describing the 
> thread synchronization objectives!

I try to write a first version of such a white paper covering many of 
these issues within the next few days. I will then post it via CVS and 
hope that others will jump in and provide useful 
feedback/additions/corrections.

> Finally, I don't recommend anyone sitting down and single-handedly 
> writing some monster document and then presenting it to be argued over 
> and finally ignored or made obsolete. I recommend lots of debates on 
> the discussion list, and I recommend some kind of format 
> standardization to presenting sound bites for features, systems, code 
> standards, dependencies and construction plans. I've already submitted 
> a few attempts at features/goals -- to the wrong list, I fear. But if 
> the design work is modular and collaborative, the discussion list will 
> suffice for the documentation of our intentions. I surmise this is why 
> Phil made the three distinct mailing lists in the first place.

I read your emails, it was not the wrong list..:-) It's just that I try 
to sort out my thoughts and then I will come up with a preliminary idea 
which I hope will cause some heavy discussions. From there we can plan 
the further development process.

I also understand that it is hard to jump into the project w/o having 
any real code. I really try hard to change this ASAP. I am sorry that 
it takes me so long...

> What I do hope to do, when there is enough design-oriented material on 
> the list, is to then assemble something, perhaps even a system to pull 
> information out of the list archives dynamically and assemble it into 
> a rough draft, which could be edited for clarity and cohesion. If we 
> could identify a skeleton for the development plan documentation, like 
> with section names or, even better, a numbering system, this data 
> mining process would be dramatically simplified. But it's just an > idea.

This would be really nice. Maybe you want to write a list of topics in 
a first move which can then be discussed here so that material for the 
draft can be generated for all these subjects?

-Phil
--
Philippe C.D. Robert
http://www.nice.ch/~phip