User:Alsroot/trash/Unified Objects

From Sugar Labs
Jump to navigation Jump to search

Preamble

Major ideas of this proposal.

NOTE

  1. This sections talks not about bundles(activity or content) but about Activities and Content themselves.
  2. Proposal differentiate Journal(as "storage") and Journal View(as view on "storage")

Activities as Journal Objects

Separation all objects to verbs and nouns can be failed in some cases - and moreover its failed when sugar is used for purposes that it was designed for - Create, Reuse, Share.

This CRS scheme works(more or less at present) for content since we have Journal to store objects, but what about Activities?

We should encourage people CRS theirs activities as well. Only one but - current sugar cannot work with many versions installed. At the same time this multi versioning is cornerstone of CRS activities since we have(should have) many versions of one particular activity installed on the same box. And these versions could include "home made" activities not only "official" ones. User should have possibility to treat all these versions(of one activity) effectively to CRS them.

Journal Objects is a 1st class Objects as well

Unified Bundles shows that Content(.xol) are the same level Objects as Activities. We could also extrapolate this idea to regular Journal Objects - it should mean user could have access to Activities, Content and Journal Objects from the same place.

More relevant View(s) of Journal

Having all these Objects user should have more powerful View to threat them. See Journal reloaded and Journal mockups for proposals. Moreover we could emulate "classical" Home and Journal Views.

Summarising

Instead of having:

  • Activity bundles(.xo in Journal)
  • Content bundles(.xol in Journal)
  • Activities(from Home View and placed to /usr or ~/Activities)
  • Content(in meaning of Unified Bundles)
  • Journal Objects(from old Journal View)

We could have only Objects in Journal(in terms of "storage" not Journal View). And operate these Objects in one unified way - Create(or copy existed) in Journal, Reuse(Change) them in Journal and Share Journal Objects.

Proposal

Modify sugar-datastore

  • Store all Activity versions(not only .xo) in Journal and let users modify and run it
    • identify the whole activity by jobject_id
    • support life cycle of regular Journal Objects
    • do not rely on external modules like 9p kernel module or FUSE

Modify Shell

to start activities from Journal's paths

Create Views of Journal

  • Views could be regular activities(installed from Activity Library) and registered in Shell as Views

Pro

With this scheme accepted user will have unified interface to all objects(and theirs versions) - content(generated by activities or downloaded from the internet) and activities(downloaded, transfered from friends and home made).

We could treat ASLO(Activity Library) as a Objects Library and encourage people share theirs objects(not only activities) via activities.sugarlabs.org(objects.sugarlabs.org? or library.sugarlabs.org?)

Contra

Well, it couldn't solve multi versions issue for activities out of the box, but I'm strongly for having *only one* storage for content versions and activities versions(since we could treat current activity as a source(noun) to produce new activity).

Going further

Sugar integration with http://activities.sugarlabs.org/

  • common tags
  • common objects(links to ASLO objects in Tags view - not only local)
  • easy way to post objects to ASLO
  • Objects updater which uses Activity Library as a source of updates

System activities could be stored in Journal as well

  • main purpose - we should encourage user to change all activities(including system ones)
  • physically these .xo could be stored in /usr/share but user should have access to them from the Journal(Tags View)
  • basic system activities could be installed by default while first creating of .sugar instance

Sugar Infection

Migrate activities between friends

Sets of Objects

To support meta bundles