Difference between revisions of "User:Alsroot/Sugar Architecture"

From Sugar Labs
Jump to navigation Jump to search
(→‎Platform Team: more focusing on suporting community)
 
(15 intermediate revisions by the same user not shown)
Line 43: Line 43:
  
 
Core Team generates ideas and is not restricted by any releases and distribution schedules (it is [[#Platform_Team|Platform Team]] task). It identifies the major trends for Sugar. The area of responsibility of the Core Team is not only a limited set of Sugar components but any project of Sugar [[#Sugar_universe|universe]]. The team takes part in discussing/improving [[Features]], the consolidated opinion of the team is critically important for [[#Tracked_projects|tracked projects]]. Particular project might agree or disagree (and follow another way or try to dissuade Core Team by their particular implementations), but the Core Team is exactly what Sugar face is for non-sugar community.
 
Core Team generates ideas and is not restricted by any releases and distribution schedules (it is [[#Platform_Team|Platform Team]] task). It identifies the major trends for Sugar. The area of responsibility of the Core Team is not only a limited set of Sugar components but any project of Sugar [[#Sugar_universe|universe]]. The team takes part in discussing/improving [[Features]], the consolidated opinion of the team is critically important for [[#Tracked_projects|tracked projects]]. Particular project might agree or disagree (and follow another way or try to dissuade Core Team by their particular implementations), but the Core Team is exactly what Sugar face is for non-sugar community.
 
=== Standard Team (or merge it with the Core Team) ===
 
 
The team is intended to provide a set of standards (API, DBus interface, etc) to let [[#Sugar_universe|Universe]] work with each over in most effective way when all projects might be human/task/purpose sized.
 
  
 
=== Platform Team ===
 
=== Platform Team ===
  
The mission of the Platform Team is creating infrastructure for Sugar ecosystem:
+
The mission of the Platform Team is functionally support Sugar ecosystem from technical side:
  
 +
* Develop new or tune existed services that might be useful for Sugar ecosystem. It is not about taking job from Infrastructure Team that does technical support for Sugar Labs servers but about taking care what functionality needs to be run on these servers.
 
* Providing as-unified-as-possible runtime and development time environments for all Sugar doers, regardless of what platform they are using. In other words, Platform Team makes everything to let ideas, generated by Core Team (as well as any other ideas), happen within the Sugar [[#Sugar_Universe|community]].
 
* Providing as-unified-as-possible runtime and development time environments for all Sugar doers, regardless of what platform they are using. In other words, Platform Team makes everything to let ideas, generated by Core Team (as well as any other ideas), happen within the Sugar [[#Sugar_Universe|community]].
 
* Work closely with GNU/Linux distributions, that provide sugar packages, and Sugar deployments to fulfill their needs and coordinate related efforts within Sugar community.
 
* Work closely with GNU/Linux distributions, that provide sugar packages, and Sugar deployments to fulfill their needs and coordinate related efforts within Sugar community.
* Release a product - Sugar Platform distribution
+
* Take care of technical standards (API, DBus interface, etc) to let all Sugar components/activities interact smooth.
 
 
Out side of the Platform Team, Sugar is a community of:
 
 
 
* Open minded educators, designers and just thinkers who don't asked themselves, ''Am I doing right, designing/thinking-about this, so invasive for Sugar, feature?'' and free in choosing the way they think is important.
 
* Open minded doers of Sugar [[#Sugar_universe|projects]], who don't asked themselves, ''Am I doing right, implementing this, so invasive for Sugar, feature?'' and free in choosing the way they think is important.
 
 
 
And only inside the Platform Team:
 
* Sugar is a product, [[#Sugar_distribution|Sugar distribution]].
 
* All responsibilities about how this product looks and behaves go to the Platform Team from developers of particular [[#Sugar_universe|project]].
 
 
 
==== Tracked projects ====
 
 
 
Tracked projects are analogs of Sucrose components. The key difference is that Sucrose project itself is not a core project any more, it is an independent project (like other [[#Sugar_Universe|ones]]) and Platform Team is just tracking its life cycle to consider possibility of including its particular release to the [[#Sugar_distribution|distribution]]. It looks how GNU/Linux distributions package upstream projects.
 
 
 
Platform Team may consider possibility to support particular branches of tracked projects to fulfil deployments' needs.
 
 
 
==== Sugar distribution ====
 
  
The major purpose of Sugar distribution is providing a set of releases of tracked projects that are being well tested in particular environment (a set of versioned dependencies). That should help Sugar distributors to deploy Sugar. In ideal situation, they need test Sugar distribution only on their hardware.
+
==== Doers environment ====
  
It is all about moving responsibility from developers [of particular tracked project] to Platform Team about how Sugar ''product'' looks and behaves.
+
Stable Sugar Distribution is a startup kit for Sugar doers. The real doing starts where new code is involved, e.g., by getting new versions of activities or preparing and sharing new code. Thus, where read-only nature of Stable Sugar Distribution is insufficient.
 
 
There are two types of Sugar distributions:
 
* Regular, per 6 months, releases that are synced with regular releases of major GNU/Linux distributions.
 
* Long Term Support (LTS) releases that are synced with LTS releases of major GNU/Linux distributions (if possible).
 
 
 
Having LTS releases should simplify sugar deployments since, in most cases, 6 months is too short major releases cycle.
 
 
 
==== Doer's environment ====
 
 
 
Sugar distribution is a startup kit for Sugar doers. The real doing starts where new code is involved, e.g., by getting new versions of activities or preparing and sharing new code. Thus, where read-only nature of Sugar distribution is insufficient.
 
  
 
The key features that any Sugar doer needs, are:
 
The key features that any Sugar doer needs, are:
Line 94: Line 64:
 
* share the code on more regular basis, i.e., uploading changed code to the server.
 
* share the code on more regular basis, i.e., uploading changed code to the server.
  
These features are critically important and should as simple as possible. It is exactly the purpose behind Zero Sugar initiative (except coding tools, i.e., code editors and IDEs):
+
=== Sugar Universe ===
 
 
* [[Activity_Team/Zero_Sugar|Overview]]
 
* [[Platform_Team/Overview|Bazaar]]
 
 
 
=== No Development Team ===
 
 
 
The word ''development'' is quite confusing. Is it about any development within sugar community, how about Activity Team, etc. Sucrose projects will flow to the rest of Sugar [[#Sugar_universe|universe]] and will be, by default, [[#Tracked_projects|tracked projects]] of [[#Platform_Team|Platform Team]].
 
 
 
=== Sugar universe ===
 
  
 
Thats the matter of Sugar, i.e., what makes Sugar useful. The variety of Sugar software projects, Glucose projects, libraries and activities.
 
Thats the matter of Sugar, i.e., what makes Sugar useful. The variety of Sugar software projects, Glucose projects, libraries and activities.
  
Most of them are being developed and supported by individuals (mostly activities), the rest are using management model which is most useful for them. All of them are self organized structures and have their own release schedules and roadmaps, though [[#Tracked_projects|tracked project]] work in close interaction with the Platform Team.
+
Sugar projects work closely with the Core Team (that generates ideas) and with the Platform Team (that provides the technical floor).
  
=== Collaboration ===
+
Most of them are being developed and supported by individuals (mostly activities), the rest are using management model which is most useful for them. All of them are self organized structures and have their own release schedules and roadmaps, though [[#Sugar Distribution|Sugar Distribution]] projects release new versions in close interaction with the Platform Team.
  
It would be good to make clear [[Best_Collaboration_Practices|some statements]], using existed experience, about how collaboration might happen within Sugar community.
+
=== Progress ===
  
=== Questions ===
+
* [[Platform_Team/Roadmap|Initial release of Doers Environment]]
  
'''To designers'''
+
== The whole picture ==
  
* Should Core Team be a home team for designers instead of Design Team?
+
As the last [[#Organizational|premise]] says, the major idea is not creating concrete vertical organizational structures for Sugar ecosystem but giving [[#Core_Team|fruitful ideas]], [[#Doers_environment|useful instruments and rules-how-communicate]] to Sugar [[#Sugar_Universe|doers]] to let them gain an [[#Common|experience and knowledge]] during the process of implementation, and [[#Doers_Environment|spreading]] the results within Sugar community.
  
'''To distributors'''
+
When community of Sugar doers is:
  
* Should Platform Team be a home team for distributors instead of Deployment Team?
+
* Open minded educators, designers and just thinkers who don't asked themselves, ''Am I doing right, designing/thinking-about this, so invasive for Sugar, feature?'' and free in choosing the way they think is important.
* Should incremental Sugar distribution releases of the same LTS release contain new users visible features?
+
* Open minded developers of Sugar [[#Sugar_Universe|projects]], who don't asked themselves, ''Am I doing right, implementing this, so invasive for Sugar, feature?'' and free in choosing the way they think is important.
 
+
* Purpose minded [[#Platform_Team|Platform Team]] that releases the [[#Sugar_Distribution|product]].
== The whole picture ==
 
 
 
As the last [[#Organizational|premise]] says, the major idea is not creating concrete vertical organizational structures for Sugar ecosystem but giving [[#Core_Team|fruitful ideas]] and [[#Doer's_environment|useful instruments]] to Sugar [[#Sugar_universe|doers]] to let them gain an [[#Common|experience and knowledge]] during the process of implementation, and [[#Sugar_distribution|spreading]] the results within Sugar community.
 

Latest revision as of 15:05, 11 August 2011

Pencil.png NOTICE:  This page is a draft in active flux...
Please contribute to these contents and discuss issues on the discussion page.


Premises

Please read premises from the first to the last, they are based on each other in that direction.

Common

  1. Sugar is a community [and not a product] around ideas
    (but might be a product, see below)
    Community which is united around ideas of cognitive and social constructivism in [self]education. The highest result point of this process is a Воспитание (do not mess this word with English words like "parenting", "education", "training", "breading" etc).
  2. Process does matter
    Once Воспитание is a primal target, process[of doing something] is a major instrument to achieve this target. In other words, process of developing Sugar should not look like creating a product (by developers) to let other people (users) use it. Instead, Sugar consists of doers, all doers teach each over (and themselves) all time while creating something sustainable, starting from a hacker who codes sugar core and ending by a kid who creates his first Turtle Art project.
  3. Cement the floor, remove the ceiling
    Once Воспитание is a primal target and the process is a major instrument within great variety of doers, organisation is critically important. As education can't happen using only one particular instrument, such, Sugar should not impose using particular vertical structures (i.e., software applications). Instead, Sugar should provide a set of basic, low-level, horizontal instruments and a set of rules how doers should behave to create[and teach themselves] something. As addition, Sugar provides a set of ready-to-use, vertical structures but with detailed instruction how to disassemble them and how to create new creatures using the same components.

Technical

  1. Sugar architecture starts from the core
    This means that every feature, being added to one of core component, will affect entirely Sugar ecosystem (when this core release will be accessible for most users). Thus, decision about adoption one conceptions (and not adoption another ones) is critically important.
  2. Experiments with the core
    Once core is a central part of Sugar architecture, this fact should not suppress any experiments (including useless) with the core. Here, we are skipping the huge field for possible experiments - activities, but, keeping in mind the first premise, core is the most attractive part of Sugar for doers' experiments.
  3. Easy to get, easy to change, easy to share
    Once core is a central part of Sugar architecture and Sugar should stimulate doers to make experiments with the core, it is critically important to make this process as convenient as possible. Saying that current situation does not prevent any experiments with the core is a hypocrisy. It is easy to get core sources, it is less easy to change them (If we are talking about collaboration between participants on, e.g., sugar mailing lists. For other people, there is only one sugar core and any experiments will finally affect it, if "do not stop" these efforts), it is mostly impossible to share results of experiments (asking to fetch new sources and build them is not useful in most cases).

Organizational

  1. Sugar needs the be a product as well
    The first method to distribute Sugar are various GNU/Linux based distributions and Sugar deployments. For them, Sugar has to be a product because only in that case they can schedule releases and deployments.
  2. Change the minds
    Once Sugar might be a product, it is critically important to understand the unoriginality of this fact. Deploying the Sugar gives only the first push (technical possibility to run Sugar). The major behaviour happens within the community; in class, school, region, around the world. In other words, in situation when the code is mutating and spreading fast on irregular basis.
  3. Organized chaos
    Keeping in mind all premises, any trying to create a concrete organizational structure for Sugar itself (but not for its particular components when concrete organization makes sense, e.g., for deployments) is defected by design. On high level, ecosystem might be a set of self-organized components that need only rules to interact with each other. Particular Sugar ecosystem components (software project, teams, deployments, etc.) might use various management systems, starting from anarchy and ending by despotism.

Implementation

Start key points:

  • Before arguing with implementation details, check if you are agree with premises.
  • For the first time, nothing will be changed for, e.g., Sugar deployments (if it will be changed at all).
  • Implementation might take several core releases, it is exactly the path of step-by-step Sugar evolution.
  • It is just details of implementation and might lack of important details and be changed in process.
  • Please, improve it.

Core Team

Core Team is a team of architects of Sugar ecosystem.

The team should contain at least one person for each followed category. The list is sorted from the most important categories to the least, since it is fine to have unskilled developers, maybe fine to have unskilled designers, but it is critically important to have skilled educators.

  • Experienced educators. To throw in ideas and methodology.
  • Designers and Human Interface specialists. To think how implementation might look and behave.
  • Developers, to limit educators and designers in their dreams.

Core Team generates ideas and is not restricted by any releases and distribution schedules (it is Platform Team task). It identifies the major trends for Sugar. The area of responsibility of the Core Team is not only a limited set of Sugar components but any project of Sugar universe. The team takes part in discussing/improving Features, the consolidated opinion of the team is critically important for tracked projects. Particular project might agree or disagree (and follow another way or try to dissuade Core Team by their particular implementations), but the Core Team is exactly what Sugar face is for non-sugar community.

Platform Team

The mission of the Platform Team is functionally support Sugar ecosystem from technical side:

  • Develop new or tune existed services that might be useful for Sugar ecosystem. It is not about taking job from Infrastructure Team that does technical support for Sugar Labs servers but about taking care what functionality needs to be run on these servers.
  • Providing as-unified-as-possible runtime and development time environments for all Sugar doers, regardless of what platform they are using. In other words, Platform Team makes everything to let ideas, generated by Core Team (as well as any other ideas), happen within the Sugar community.
  • Work closely with GNU/Linux distributions, that provide sugar packages, and Sugar deployments to fulfill their needs and coordinate related efforts within Sugar community.
  • Take care of technical standards (API, DBus interface, etc) to let all Sugar components/activities interact smooth.

Doers environment

Stable Sugar Distribution is a startup kit for Sugar doers. The real doing starts where new code is involved, e.g., by getting new versions of activities or preparing and sharing new code. Thus, where read-only nature of Stable Sugar Distribution is insufficient.

The key features that any Sugar doer needs, are:

  • possibility to run any (including not yet released) versions of Sugar components,
  • useful instruments to edit the code,
  • share the code in peer-to-peer manner to fast and easy sharing of experiment results with the friends (F1/F2 views),
  • share the code on more regular basis, i.e., uploading changed code to the server.

Sugar Universe

Thats the matter of Sugar, i.e., what makes Sugar useful. The variety of Sugar software projects, Glucose projects, libraries and activities.

Sugar projects work closely with the Core Team (that generates ideas) and with the Platform Team (that provides the technical floor).

Most of them are being developed and supported by individuals (mostly activities), the rest are using management model which is most useful for them. All of them are self organized structures and have their own release schedules and roadmaps, though Sugar Distribution projects release new versions in close interaction with the Platform Team.

Progress

The whole picture

As the last premise says, the major idea is not creating concrete vertical organizational structures for Sugar ecosystem but giving fruitful ideas, useful instruments and rules-how-communicate to Sugar doers to let them gain an experience and knowledge during the process of implementation, and spreading the results within Sugar community.

When community of Sugar doers is:

  • Open minded educators, designers and just thinkers who don't asked themselves, Am I doing right, designing/thinking-about this, so invasive for Sugar, feature? and free in choosing the way they think is important.
  • Open minded developers of Sugar projects, who don't asked themselves, Am I doing right, implementing this, so invasive for Sugar, feature? and free in choosing the way they think is important.
  • Purpose minded Platform Team that releases the product.