Proposed Organization

Mike Prince mprince@crl.com
Wed, 2 Nov 1994 14:46:11 -0800 (PST)


Proposal for Tunes Organization
===============================
I have compiled comments about our organization and have presented an 
edited version of them below.  Following those is my suggestion for the 
organization of Tunes.

Luke
====
This project, this group, this initiative...

The last first. This initiative is THE step into our future. I believe 
that Mike is on to some things here that (coincidentally I have been 
mulling over in the back of my mind also) and are the future of computer 
engineering.

This group.
For this to work we need some structure both centralized and
decentralized. The centralized structures:
	1. Centralized communications. We need one re-mailer. Second we 
need a topics moderator. Someone who will pick the current topic to 
discuss and only forward mail along those topics. We are currently as a 
group suffering from brain diarrhea. That is we have too many good ideas 
oozing out of our brains. Lets agree to each keep a record book that we 
can jot down our ideas in, so that we can present those ideas in a 
concise and appropriate manner. Also we need to take time to mull over 
peoples ideas so that we can "work through them".
	2. We also need someone who will volunteer to be the central 
workbook keeper. In other words they are willing to keep a central 
design document that we submit our work to.

The decentralize structures:
	1. Eventually we need to form groups that are working on common 
pieces.  These groups must have team leaders, et cetera.
	2. We also need to have some formal processes to support our 
independent work.

Johan
=====
Organization. If we don't get this right, we might as well pack up and 
go home. I've seen a _great_ number of really good ideas in the past few 
days, and I imagine things will settle down but at present I have 
difficulty in keeping up with all the suggestions and counter-
suggestions.  Many of them seem to be saying the same / similar things 
in different words! The idea of having different subject groups with 
different editors seems good to me. I would like to take it a bit 
further:-

Is it not possible for someone originating a new idea/section to send, 
as the first part of the title, the following:
  (?)
Let the TUNES@ENS.FR mailer identify this as being a request for a new 
theme, stamp it with the next number in sequence, AND THEN PASS IT ON TO 
EVERYONE. (1) would be the first ever theme, (2) the second, and so 
on..Extending this idea, one could reply to e.g. thread number (3) with 
the message: 3()  in the header, and our reply would be stamped with the 
number 3(7) - if it were the seventh reply - before being re-mailed to 
everyone.  This approach would:-
	a. Clearly delineate who preceded whom:
		-- 3(6) precedes 3(7)..
	b. Enable immediate identification of various threads:
		-- eg thread 1 might be low level language ideas ..
	c. Tell you if you're missing items in the sequence:
		-- this is 7(23). Whatever happened to 7(21) and 7(22)?
	d. Be useful in assessing who is active, which threads are being 	
		used:
		-- currently active threads are 1, 3, 17, 4 etc.
	e. Be useful in requesting back copies / archives:
		-- please send me 1(7), 23(184) etc.
The idea could even be extended to sub-threads for a lovely branching 
tree structure: for example, IF thread (1) is "low level language" and 
you want to create & control the compiler section, you might send a 
message with the title:-
	(1?) LLL : Compiler Section - Moderator Joe Bloggs
and the TUNES@ENS.FR mailer responds by stamping your message with:
	(1.1) Compiler Section - Moderator Joe Bloggs
 -- or, if (1.1) already exists, then (1.2) and so on.

Kyle
====
I think he has some very good points here and I would like to argue for 
this kind of organization.

Due to the limited/scattered time most people have, it is not reasonable 
to be able to organize as a project group would in a company.  People 
are not going to be able to deal with things like deadlines effectively.  
This is not necessarily a problem.  Rather than trying to micromanage 
everything, I think that Luke's proposal be used as a basis for project 
work.

There needs to be enough centralization that people are kept aware of 
what others are doing and have some sense of progress.  At the same 
time, the constraints imposed by the 'net (time zones), work, school, 
play, etc. require that people be able to work on projects fairly 
independently.

The centralized part should be able to set goals and project tasks while 
individuals will carry out these tasks pretty much on their own. I don't 
really see much of a way to handle closely coupled collaborative work 
with the wide range of places and external work that people have to do.

I like the idea, but I think that this might place a bit of a strain on 
Francois-Rene to set this up.  It looked like he was using one of the 
"standard" list servers.  Anyone familiar enough with these to say if 
adding such functionality is feasible.

Actually, Johan describes the numbering/annotation system that is used 
by SCCS for source code control.  I have used this in a couple of 
projects (for source code) and it works well, but you need to have a 
sort of glossary that translates the number schemes back into something 
vaguely human understandable.  I.e. "what does 1.2.16(32) mean?"  "Hmm, 
1 is the low level topics, 2 is the VM, 16 is the register allocation 
recompiler stuff, OK..."

My guess is that if it could automatically generate numbers, the list 
server could work with arbitrary text strings.  I would prefer this as I 
found it annoying to constantly look up what these codes mean.  If 
possible (a big if), it would be nice if we could use a more USENET 
approach to topic naming.  My above example could be 
lowLevel.VM.RegAlloc(32) instead of 1.2.16(32).

I am just burbling in my beer on this one, but it would be nice to have 
things recognizable at a glance.

One part of Johan's idea I think would be really great would be the idea 
of sequence numbers.  I am getting stuff completely out of order and I 
have to wait and look at stuff that is a few hours old just to make sure 
that I have the entire thread at that point.  Even if only sequence 
numbers could be prepended to the subject line, I think that would be 
great.  It would give me a chance to figure out the order in which 
things should be read.

Rideau
======
Proposed Organization chart:
We divide work between a hierarchical list of subjects.  Message 
"Subject:" field will begin by the list of subjects (well, using 
abbreviations).  Each subject has got a maintainer.  The maintainer 
will; who must maintain a file about what was said about the subject.  
He must provide regularly updated versions through ftp and/or mail.  He 
also must animate the debate about the subject.  Decisions are done by a 
vote of concerned people.  If nobody disagrees, the maintainer of a 
subject may also take decisions.  The subject maintainer is responsible 
for the vote.  If no decision is reachable through vote, the maintainer 
will ultimately choose, or reorganize a new vote later.  If the 
maintainer's choice is vetoed by a member, a maintainer for a "higher" 
subject in the hierarchy is called to decide (or reorganize a vote).  
Ultimately, an absolute arbitrary judge is to decide (or say who among 
those who know will decide).  The ultimate judge is chosen according to 
an arbitrary but known in advance method. Suggestions: one of the 
project founders, and/or a rotation between members. His identity may 
change with time, as long as there is no way to contest it.  Any 
decision may be later changed if someone can provide new arguments.  The 
same procedure applies for the new decision.  The choice for subject 
maintainers and absolute judge choice method are a decision among 
others.

We still need an initial absolute judge.  If we join PIOS or Merlin, I'd 
propose the project initiator, else myself.  I also propose myself (or 
anyone willing for that ungrateful job) as a maintainer for the 
organization subject (whose mail symbol will be ORG if no one 
disagrees).

 [MOOSE Administration]
-----------------------
- MOOSE People			Fare		Members & contacts
- MOOSE Manifesto		Fare		Our goals and means
- MOOSE Administration		Fare		How we organize
- MOOSE Specificating tools	Fare		What will we use ?
- MOOSE pre-Specifications	Fare		A first wish/hate list.
- MOOSE Glossary		Fare		Internal vocabulary explained
- MOOSE Howto			Fare		How to reach each other
- MOOSE ToDo			Fare		What next to do

References:
-----------
The archive of the MOOSE mailing list will be available
from frmap711.mathp7.jussieu.fr, in ~rideau/pub/moose

Idea status
-----------
Some idea in the project can have several status:
	finished/(well)implemented
		Not only is the idea in the specifications,
		but it also has been implemented !
	defined
		The idea has been agreed and has found its path in
		the official MOOSE specifications.
	agreed
		The idea was voted and accepted, or not contradicted for
		enough time.
	proposed
		was proposed and not contradicted.
		After next meeting, if still not contradicted, agreed.
	discussed
		was proposed, and discussed.
		must be voted or its decision delayed at next meeting
	rejected
		The idea was voted, and rejected.
		not defined yet:
		Nobody has talked about such a thing being or not in the 	
		project.
		of course, we're not maintaining a list of such ideas 8)
	defined not to be
		The official specifications reject such an idea.

Kyle
====
I agree with Mike Prince.  Until there is some sort of organization this
is all just hot air.

I think there should be an emphasis on letting people do projects alone.  
In view of the type of connection we have with each other and the time 
constraints everyone has, I don't think that we can have much closer 
collaboration than that on projects.  However, some things need to be 
done together.

Just to throw out some ideas, how about this:

Two fixed central positions: secretary and coordinator.

The secretary would be a sort of chair to moderate discussion.  It would 
be the responsibility of the secretary to control discussion about major 
topics and projects.  Once some agreement has been reached and a sort of 
specification has been hammered out, the secretary could hand the 
project over to the coordinator.  The secretary would be the one to call 
for votes and discussion on topics.  If someone has any ideas or 
proposals for a project, that person should hand it off to the 
secretary.

The coordinator would coordinate projects.  S/he would gather the specs 
and monitor ongoing projects as closely as possible.  Part of this 
monitoring would be to make sure that the project is going in the 
direction that everyone else thinks it is and that it is moving along.  
The coordinator should bring big changes to the secretary for a general 
vote.

I think that is psychologically important to have the two positions be 
separate.  The coordinator is to some extent an overseer and as such 
should be divorced from the actual decision making.  This should reduce 
tension a bit.

Perhaps a librarian would be good, but I think that the secretary can do 
that as well.

Other positions would be filled purely on a volunteer basis.  The 
secretary would solicit votes and discussion on a proposed project and 
when it was decided, solicit volunteers.  There are going to be some 
things more popular than others and the secretary will have to deal with 
cajoling people to work on their second choice.  The day to day/week to 
week project work will be followed by the  coordinator.  People can 
certainly be involved with more than one project.  However, I think they 
should be primarily involved with one or at most two.  It is far too 
easy to spread yourself thin.

I think the secretary would act as an important central point for things 
like argument summaries etc.  It helps no one to read the same argument 
four times in four different ways.  Obviously the secretary could be 
partisan, so perhaps the secretary shouldn't get a vote.

The positions of secretary and coordinator should rotate or be up for 
election relatively often.  Both positions would be a lot of work and I 
can't imagine that people would be really interested in doing only that.

For each project, we should have a clear statement of goals and what 
kinds of things we expect to get from it.  If it is a coding project, we 
want code back from it and some sort of documentation telling the rest 
of the people how to use it.  A project might be just research in which 
case some sort of report would be the deliverable.  People within a 
project would have pretty much total control over how and what they did 
as long as it meets the initial goals set up for the project.  The 
coordinator can act as a sounding board to make sure that the project 
stays aimed at the target everyone agreed on.  This does mean that goals 
will have to be made such that implementation is left up to the people 
working on the project so that they have as much freedom as is possible.

This sounds pretty draconian compared to what we have now (total 
anarchy), but some sort of center is needed to both handle discussion 
and day to day project work.  It sounds like a lot, but it isn't really.  
People would not be told to go do something against their will, there 
must be a lot of discussion so that everyone has their viewpoint put 
forth and understood by all.  Think of it as a committee with 
subcommittees doing projects.  Then again, in view of how people react 
to committees in government in the US, perhaps I should use a different 
term :-)

Initially, I think we should first concentrate on how to organize 
people.  Then, we can concentrate on the ideas and try to get some sort 
of spec for MOOSE TUNES.  That spec should be something like a list of 
projects for people to dig into.  Probably the first set of projects 
should be researching existing work.  There is a lot out there and we 
would be foolish to reinvent the wheel all the time.  Tech reports, 
theses etc. are great sources of ideas.  People have tried to implement 
a lot of the things I have seen discussed on this list.  I think we 
should try to find out some results before just jumping into design.  A 
lot of seemingly good ideas turn sour near the end of design or even 
coding.

I hope this stimulates some discussion on this topic.  My personal 
experience with Internet projects is that without some clear form of 
organization nothing happens.  Perhaps I have just been unlucky, but I 
have yet to talk to anyone that has had a different experience.

Best,

Kyle

Mike's Compromise Proposal:
===========================
Everyone has very good ideas.  Let's see if I can squeeze them into one.

We should create a blanket organization to oversee the development of 
multiple projects.  The organization would be composed of members.  The 
organization would have a Secretary elected by all members.  Each 
project would have a Coordinator appointed by the Secretary.  There 
would be an Council composed of all the Coordinators plus the Secretary.

The Council would elect an Alternate Secretary to take over in case of 
illness, absence, or impeachment of the Secretary.  The Secretary could 
also name a Pro-tem Secretary to act on his/her behalf for periods of 
not more than 15 days.

I support creating a hierarchy of topics as suggested by Johan.  I also 
believe we should adopt the naming convention for topics that Kyle 
advocated.  Though I believe that only the Secretary can create new 
topics.  I suggest that each _topic_ actually be a project.  And that 
the subject line of our communications take the form of;
	"project.subproject:Description_of_message"
NOTE: In this document all text enclosed in quotes is the argument to 
the Subject: line of an e-mail message.

The use of projects will simplify the organization and development of 
our groups ideas.  I propose the following initial projects;

	organization:  The organization structure of our group (as
		defined by this document)  This would also serve as the
		forum for casting general votes and debating new project
		proposals.
	announce:  A forum which can only be posted to by the Secretary
		and Coordinators.  This is used to announce new projects
		and their status, and for Coordinators to update the group
		about on-going projects.
	glossary:  Standard definitions of our terms.  This way we all 
		speak the same language.
	kernel:  Formerly LLL, discussion of low level stuff
	HLL:  Discussion of the high level language

I have left out SEC and DIS.  Security conversations have floated 
between kernel and communications to the high level language.  Likewise 
DIS can cover a number of domains.  I would like to subjugate each of 
these to a particular domain, say creating subprojects "kernel.security" 
and "HLL.security".  But we'll decide that later.

To create a project a Request For Project (RFP) message is sent to the 
Secretary.  If that project is subordinate to another project it would 
inherit all the properties of the parent.  Otherwise it would become a 
root project.

The RFP would have the following form;

	REQUEST FOR PROJECT
	Date:  Date of proposal.
	Project:  The complete "path" of the project.
	Description:  A short description of the project.
	Coordinator:  Name and e-mail address of the coordinator.
	Goals:  The goals of the project.
	Agenda:  Very important.  It will motivate the project and
		provide others with expectations so we can plan together.
		This is not a hard deadline that if not met is punishable
		by death.  Instead it helps us work together as a team.
	Reason:  Why do we need a new project/subproject.  This should
		be at most two paragraphs, which may contain references to
		the Comments section.
	Comments:  Descriptive text, references, etc.

The RFP would be submitted in ASCII directly to the Secretary.  The 
Secretary must respond within 5 days.  If a response has not been issued 
within that time then the Alternate Secretary would take control of the 
RFP.

After receiving the RFP there are four actions the Secretary could take;

	Decide to deny the project and post the RFP along with a statement
		of reasons for denial to "announce:RFP Denial-Description".
	Accept the RFP and immediately create the project.  Post the RFP 
		"announce:RFP Accepted-Description"
	Put to vote the RFP and post the RFP to "announce:RFP for Vote-
		Description".  All votes would be mailed to the 
		"organization" topic.  Voting begins immediately and ends
		on the deadline decided by the Secretary.
	Request discussion about the RFP by posting it to "announce:RFP 
		Discussion-Description".  All discussion would take place
		in the "organization" topic.  A deadline must be posted by
		the Secretary stating when he/she will decide how to 
		proceed.

Only the Secretary or a Coordinator can post to announce.  This will 
minimize noise for that topic.  I suggest we use announce to update 
members on the status of projects and proposals for projects.

The Secretary and Coordinators would make up the organizations officers.  
In time we may determine that special positions may need to be created.  
This is feasible under the project system.  If we need a public 
relations person, or librarian, we create a project with such a name, 
and the Coordinator for the project will fill the roles outlined by the 
Goals: section of the RFP.

Modification/removal of projects.  A project is defined by it's RFP.  To 
make a change to the RFP (including changing the Coordinator) a member 
would e-mail the Secretary a Request for Project Deviation (RFD).  The 
Secretary would have the same options as an RFP.  The format of the 
message would be the complete text of the original RFP, prepended with 
REQUEST FOR PROJECT DEVIATION, and the changes indented 5 spaces and 
marked with a >.

The Secretary shall have a term of 1 year.  Beginning November 1st.  All 
votes shall be registered by members after Octerber 20th and before 
October 26th.

The Secretary may be impeached by at least a 2/3 vote of the 
Coordinators, or by at least 1/2 of the current members.  If the 
Secretary is Impeached the Alternate Secretary, as previously selected 
by a majority vote of the Coordinators, will fulfill the roles of the 
Secretary until a general election can be called.  The general election 
must be called within 10 days of the impeachment.  All votes must be 
registered within five days after the election is called.  The new 
Secretary will take office two days after the voting has closed.

If the Secretary steps down the process is identical to that of an 
impeachment.

Each project will have several files to maintain at our central archive.  
Each file name shall be prepended by the project path.  All files in the 
archive will be at most one month out of date.  Here are the minimum 
files that need to be maintained by the Coordinator;

	.charter  This is a copy of the most recent incarnation of the
		RFP which defines the project.  If the project was created
		through a vote all ballots cast are listed.
	.talk.MonthYear  this is an archive of all that's been posted
		to that project, stored in mailbox format, and broken down
		by month into separate files.  This should be updated
		within 10 days after the end of each month.
	.vote.measurename  this is the text of a measure that has been
		put to vote for that project and a list of those who have
		cast ballots for or against that measure.

The organization project will have several additional files;
	.members  A list of members and their e-mail addresses. This
		will initially be derived from the listservers re-mailing
		list
	.contributors  A list of those who have made significant
		contributions to our organization.
	.projects  A list of all projects and their coordinators

Most project decisions should be arrived at through casual discussion.  
If a member is not happy with a decision arrived as such he/she may 
formalize a decision into a measure and call for a vote.  A vote is 
called by sending a Request for Vote (RFV) to the coordinator of the 
project it would affect.  A RFV would take the form of;

	REQUEST FOR VOTE
	Measure:  A short description of the measure.
	Project:  Path of the project being affected by this measure.
	Advocate:  Name and e-mail address of the person posting this
		measure.
	Text:  What the measure advocates.

Remember that all child projects might also be affected.  Measures in 
higher projects take precedence over lower projects.  No lower project 
may vote for a measure that would contradict a higher projects measure.  
However a higher project may vote for a measure affecting a lower 
project with the permission of the Secretary.

Similar to RFP, the Coordinator has five days to respond to this 
request.  In no action is taken within that time, it should be brought 
to the attention of the Council whom will then reside over it.  The 
coordinator would post the RFV to the "announce" topic but discussion 
would take place in the topic being voted on.

All votes are mailed directly to the Coordinator.

I think that about sums it up.  Remember this is a "rough" draft and I 
expect to make changes to it.  Friday is very soon, but we just might 
make it.

One last comment, Kyle is very correct about research.  We (very much 
including myself) have been winging it about doing research into what's 
already out there.  We MUST at least have a short blurb on each of our 
competitors and their deficiencies we hope to make up, in order to 
justify our own existence.  I believe Francois-Rene is already drafting 
one such document.  That should be our first goal after organizing.

Yet another _last_ comment:  It has been mentioned that the naming of a 
group/project is important.  TUNES, MOOSE, PIOS, are still interim names 
as far as I'm concerned.  A serious name, though having little real 
impact internally on a project, can only help us when interacting with 
others.  Let me know if you have any recommendations.

Hope to hear from you soon,

Mike