REQUEST FOR VOTE (that means you!)

Mike Prince mprince@crl.com
Fri, 2 Dec 1994 14:34:13 -0800 (PST)


Here is the lastest incarnation of our charter.  I believe it is very 
workable.  I want to thank Johan especially for his input (for all intensive 
purposes he wrote the first part). 

This document will be a starting place for our discussions and a resting 
place for our decisions.  I encourage everyone to cite a section in their 
discussions and suggest a revision to our document.  In this way we can 
move forward more easily.  The alternative is scattered discussions with 
great ideas remaining, scattered.  

VOTING
======
Please give me a YES or NO vote on whether we should adopt the new 
charter.

Thanks,

Mike



The Charter follows...


AOYU (As of yet un-named) Project Charter
=========================================

1. This project shall be called "Rogue" or "Joy"
	and its members shall be:
		Mike Prince (project 1-5 coordinator)
		Francois Rene Rideau 
		Kyle Hayes
		Johan van Schalkwyk

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 malleable (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
===========
	This project is coordinated by Mike Prince.
	
	The glossary is unavailable by ftp at this time.

8. Survey
==========
	This project is coordinated by Mike Prince.
	
	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
	8.3.4 Hermes

9. Distribution Language
========================
	This project is coordinated by Mike Prince
	
	Development of a minimal low level "symbolic assembly language" and 
	simultaneous creation of higher level stack based interpreted 
	language.

	9.1 Goals
		9.1.1 Absolute simplicity 
			minimal code. Core code of <= 20 lines!
		9.1.2 Designed for fast interpretation or efficient
			compilation
		9.1.3 compatability
			9.1.3.1 POSIX
			9.1.3.2 i386
	9.2 Specifications
		9.2.1 Word size?
		9.2.2 Data types, especially iro communication of 
			information between objects.
		9.2.3 Basic notation/evaluation
			Polish, Reverse Polish, Infix ...?
		9.2.4 CRCs on a low level from the start?
		9.2.5 Message format
		9.2.6 Semantics
		9.2.7 local memory management 
			9.2.7.1 persistence
			9.2.7.2 garbage collection
			9.2.7.3 security

10. High Level Language
=======================
	This project is coordinated by Francois-Rene Rideau. 

	10.1 Goals
	10.2 Specifications
		10.2.1 typing semantics
	     
11. Distribution
================
	This project is coordinated by Francois-Rene Rideau. 

	11.1 communication protocol
	11.2 scheduling
	11.3 security/recovery
	11.3 distributed memory management 
		11.3.1 persistence
		11.3.2 garbage collection
		11.3.3 security

12. Documentation
=================
	This project is coordinated by Francois-Rene Rideau. 

	12.1 documentation format & conventions
	12.2 documentation tools
	12.3 comparison with other system software

13. User Interface
==================
	This project is coordinated by Mike Prince.  
	
	13.1 basic abstractions
	13.2 integration to high-level/distribution language
	13.3 automatic adaptation to terminal capability
	13.4 layout manager