Yet Another Charter

Mike Prince mprince@crl.com
Wed, 30 Nov 1994 11:48:05 -0800 (PST)


I have taken to heart what Johan has composed, and it seems good.  I only 
hope he does not take offense to my minor changes.

I have tacked on the last sections of my previous charter, and have added 
goals from Kyle and Johan.

I would like to adopt the following charter;



PROPOSAL: RULES FOR A REVISED CHARTER (SHORT!)

1. This project shall be called "Q" or "Joy"
	and its founder members shall be:
		Francois Rene Rideau (project coordinator)
		Mike Prince
		Kyle Hayes
		Johan van Schalkwyk
		[fill your name in here]

2. This project shall be governed by a set of rules, organized hierarchically. 
	2.1 Conflicting rules: rules with lower numbers take precedence 
		over rules with higher numbers (and rules over 
		sub-rules).
	2.2 A rule may be added/removed/modified by; 
		2.2.1 a successful VOTE (as outlined in Rule 5) 
		2.2.2 the PROJECT COORDINATOR
	2.3 In referring to a rule, accepted names may replace numbers
		(e.g. 13.3  might become MOOSE.WOMBATS).

3. A PROJECT is a rule containing:
	3.1 the name of a PROJECT COORDINATOR
	3.2 A list of MEMBERS
	3.3 A list of sub-rules 

4. The project coordinator is responsible for adequate documentation of
	that project, including its list of rules.

5. Voting procedure
	5.1 Message is posted to "VOTE" with that project, containing:
		5.1.1 rule to be revised/deleted/added;
		5.1.2 proposer;
		5.1.3 expiry date by which votes must be in;
		5.1.4 project coordinator (to whom you post your votes);
		5.1.5 new rule text (if needed).
	5.2 Minimum period of one week must elapse, during which members
		post YES, NO, or SPOILED votes to the project coordinator;
		5.2.1 At least one-fourth of the members in projects
			affected by the rule must cast votes for the vote
			to be valid.
	5.3 Within 48 hrs of expiry date, coordinator posts results of vote.
		5.3.1 Rules pass by 2/3 or more of cast votes. 

6. Goals
========
	The following is a list of goals for our project;

	6.1 must be a friendly intuitive UI
	6.2 must have a lot of productivity apps (mail, wp, spreadsheet, 
		ie necessary apps)
	6.3 must fill a strategic niche (i.e. choose our customers well)
	6.4 must be maleable (no set ui, easy to personalize)
		It is great to have a flexible system, but, let's face it, 
		most people are creatures of habit. Present John Citizen 
		with more than several options, and he will more likely than 
		not crack wide open! Have a set UI that is so damn good that 
		no one in his right mind would want to change it and then 
		make it so easy to change that even Windows users can adapt 
		it to suit their perverted needs!
	6.5 use all the available resources (over net too)
	6.6 all the above must remain constant over all platforms (who 
		cares what hardware they are using).  My app here runs on all 
		my platforms.  No multiple shrinkwrap copies.
	6.7 must have a good development environment
	6.8 must be able to use all available resources (look above too)
	6.9 persistency  
		Considered to be part of the user friendliness 
		thing.  Not only is the ui the same, but the apps and all 
		objects in the system are exactly the way you left them.
	6.10 separate mechanism from policy
	6.11 support standards where feasible
	6.12 simple, portable strategies
	6.13 include marketable things, not gee whiz features
	6.14 Maintain identity of each interacting "organism" 
		(ie. don't splurge things out all over so you don't know 
		whether you're Arthur, Martha, or HAL)
	6.15 Do NOT do elsewhere what you can do locally
	6.16 Keep it straight and simple (KISS). 
		Apply Occam's razor ruthlessly.
	6.17 Organization of diverse talents
		Turn our major weakness (lack of ability to organise) into 
		a strength.  Is there a general purpose system, disseminated 
		in time and space, that can in a user-friendly and perfectly 
		general, object-oriented way, allow organisation of diverse
		talents, with permanence etc? No. Not yet. But this is 
		surely what we want to create! So let's create it, and then 
		USE it, refine it, and sell it! If we can't do this, we will 
		surely fail, and if we can, we may just have our "niche". 
		Perhaps we could design into it as an extremely simple
		"point and shoot" hypertext system (that even I could use).
	6.18 A low-level goal. Ruthlessly eradicate redundant instructions. 
	6.19 Establish the identity of the individual user. 
		Treat him as an individual, and respect that he is using 
		the system as his own personal TOOL. People enjoy feedback, 
		especially warm positive feedback. Even build a simple
		personality (as simple as Parry without the paranoid 
		ideation!) into the OS, and win the heart and mind of the 
		user. Turn the OS into a combination of an expert assistant 
		and a waiter in a high-class restaurant!! And, above all, 
		respect the intelligence of the user!! If the system makes 
		a fuck up, let it apologise! Treat the user as a human being, 
		not as a simple minded dickhead who really should know that 
		depressing SHIFT+Q with your left hand and CTRL+ALT+Z with 
		your right while pressing the N key firmly with your nose 
		is the only recognized way of indenting the paragraph!
	6.20 Be able to use a distributed network of processors.
		6.20.1 coherency - is what I see what you see, 
			at the same time?
		6.20.2 reliability - how certain am I that I am not 
			getting garbage?
		6.20.3 time - is my time your time?
		6.20.4 causality
		6.20.5 efficiency
	6.21 Unify error detection _and_ correction and allow graceful failure.
	6.22 Approach problems holistically

7. Glossary
===========
	The glossary is available by ftp at .........

8. Survey
==========
	The following have been evaluated as to their ability to satisfy 
	our goals as set forth in Section 6.

8.1 Microkernels
-----------------
	8.1.1 Amoeba
	8.1.2 Mach
	8.1.3 SpringOS

8.2 Operating Systems/Environments
-----------------------------------
	8.2.1 UNIX
	8.2.2 NextStep
	8.2.3 Taligent
	8.2.4 ANDF (OSF)

8.3 Languages
--------------
	8.3.1 Forth
	8.3.2 C++
	8.3.3 Scheme