Bundle concepts: Difference between revisions

From OLPC
Jump to navigation Jump to search
m (Reverted edits by 116.50.230.74 (Talk) to last revision by 203.190.248.30)
 
(13 intermediate revisions by 5 users not shown)
Line 1: Line 1:
<center>''This page lays out early bundle concepts. For other uses of the term, see [[Bundle (disambiguation)]].''</center>
{{draft}}


A '''bundle''' in Sugar terminology is broadly speaking a zipped collection of files including metadata defining its name and origin.
Copied from SJ's email 8/21/07 and email discussion between Lauren & Eben later in the week. [[User:Mchua|Mchua]] 12:35, 21 August 2007 (EDT) See also [[Bundles]] for related materials, although this page is currently draft material under debate whereas [[Bundles]] is more settled, static decisions that have already been made. [[User:Mchua|Mchua]] 01:44, 27 August 2007 (EDT)


== What is a bundle? ==
== Background ==
Here is some terminology oriinally uesd when defining bundles:

An overview of the situation on bundles as an attempt to understand and define what they are. Feel free to edit & comment, etc.

Some useful terminology:


* '''Objects''' - a single file; a drawing, story, photo, sound, etc. Objects are not necessarily bundles.
* '''Objects''' - a single file; a drawing, story, photo, sound, etc. Objects are not necessarily bundles.
Line 18: Line 15:
Since bundles are just a special type of object, the same tagging and sharing interface should be used for both bundles and objects.
Since bundles are just a special type of object, the same tagging and sharing interface should be used for both bundles and objects.


=== Extensions ===


Extended bundles are bundles which have a well known format, which may include among other things a defined directory hierarchy, one or more required files, and a manifest defining specific properties of the bundle.



The notion of "extended bundle" and what the term means is currently under debate.




==== Current status ====
==== Current status ====
Line 29: Line 26:
* '''Activity bundles''' - collections of non-child-produced materials used for a particular activity. For instance, a selection of Etoys tutorials created by the etoys team is an activity bundle.
* '''Activity bundles''' - collections of non-child-produced materials used for a particular activity. For instance, a selection of Etoys tutorials created by the etoys team is an activity bundle.
* '''Content bundles''' - collections of non-child-produced materials used in the Library specifically. These use the .xol file format detailed by Lauren in [[Creating a content bundle]]. For instance, a collection of Wikipedia articles in Arabic is a content bundle.
* '''Content bundles''' - collections of non-child-produced materials used in the Library specifically. These use the .xol file format detailed by Lauren in [[Creating a content bundle]]. For instance, a collection of Wikipedia articles in Arabic is a content bundle.
* ''Extended content bundle'' - a proposed format. this would refer to collections of files that don't qualify as either of the above -- either because they don't have the superstructure of an activity with a single executable, or that of an html directory; or because they are more transient and not intended to persist over months and years (so some of the metadata can/should be autogenerated and arbitrary).
* '''Extended content bundle''' - the term loosely refers to activity or content bundles created by children themselves. The above example of a child's paper on cats is an extended content bundle.


== Discussion ==
==== What it should change to ====
==== Some ideas for improvement ====


This is not an ideal set of terminology - it's been proposed (by Eben) to move to the following:
This is not an ideal set of terminology - it's been proposed (by Eben) to move to the following:


* '''Bundle''' - an object that contains multiple other objects within it. Bundles take the form of a .zip folder containing the objects they are bundling; that is all. There is no distinction between child-created and non-child-created bundles. By default, bundles are opened with the [[Bundle activity]].
* '''Bundle''' - an object that contains multiple other objects within it. A specification is available at [[Bundles]]; bundles take the form of a .zip folder containing the objects they are bundling; that is all. There is no distinction between child-created and non-child-created bundles. By default, bundles are opened with the [[Bundle activity]].
* '''Extended bundles''' - any bundle format with a superset of the requirements of the basic bundle bundle format. The extension may include a type identifier and/or owner such that these bundles open with various appropriate activities by default. There are currently three common extended bundle formats:
* '''Extended bundles''' - any bundle format with a superset of the requirements of the basic bundle bundle format. The extension may include a type identifier and/or owner such that these bundles open with various appropriate activities by default. There are currently three common extended bundle formats:
** '''Object bundle''' - a bundle format that includes additional metadata and requirements that make it possible to use a bundle within and with a specific Activity. It's well known format allows an object bundle to be treated like an object and opened with any activity which recognizes it.
** '''Object bundle''' - a bundle format that includes additional metadata and requirements that make it possible to use a bundle within and with a specific Activity. There is no set specification for an object bundle, although individual Activities may have their own object bundle format requirements. An object bundle format allows an object bundle to be treated like an object and opened with any activity which recognizes it.
** '''Activity bundle''' - a bundle that defines an activity object which can be instantiated as a running application on the laptops. Activity bundles are really just a specific form of an "object bundle."
** '''Activity bundle''' - a bundle that defines an activity object which can be instantiated as a running application on the laptops. Activity bundles are really just a specific form of an "object bundle." The specification for activity bundles is available at [[Activity bundles]] and instructions on creating one are available at [[Creating an Activity bundle]] - note that these instructions use ''sugar.activity.bundlebuilder'' which is the only way to create an activity bundle at present.
** '''Content bundle''' - the .xol file format detailed in [[Creating a content bundle]] that adds metadata requirements that make it possible to use the bundle within the Library.
** '''Content bundle''' - the .xol file format detailed in [[Creating a content bundle]] that adds metadata requirements that make it possible to use the bundle within the Library.


''As an aside, we could instead argue that the "object bundle" should simply be the "extended bundle", and that "activity bundles" and "content bundles" are simply specific examples of extended bundles.''
== Use cases ==

=== Creating an extended bundle format ===

As discussed above, it is possible to create extended bundle formats for specific uses. Extended bundle format specifications are supersets of the base bundle specification. The Activity bundle format and Content bundle format are the two most common extended bundle formats, but it is possible for people to create their own - usually as a superset of the Object bundle format. The most common usecase for this is if an Activity requires certain metadata to be in a bundle before you can use that bundle within the Activity - for instance, Write requires certain file formats and metadata to be present in a document object in order to open and edit it.

To create an extended bundle format, simply take the existing bundle format and specify additional features (metadata to include, directory structures or files to follow, etc), then include a .info file in the top level of your bundle containing information about your bundle type. {{pending|is there a spec for this .info file?}} However, we recommend that you try to avoid creating additional formats whenever possible, and to keep your formats as broad and generally usable as possible; the current bundle formats have been designed for maximum flexibility.

=== Use cases ===


We need clearer discussion of bundling. Some bundling use cases [BUCs]:
We need clearer discussion of bundling. Some bundling use cases [BUCs]:


=== Use case 1 ===
==== Use case 1 ====


BUC-1 : I take a photo and make a drawing. You make a collage. I send you the photo and drawing so you can include them in the collage:
BUC-1 : I take a photo and make a drawing. You make a collage. I send you the photo and drawing so you can include them in the collage:
Line 59: Line 65:
# by publishing a local-permalink to the entries in my Journal as a catalog-update, either just for you or for everyone nearby; and sending it to you; your catalog daemon now updates your local catalog with metadata about the two pieces, and they show up in your journal view as available links and in the first results you get when searching for new material on your network.
# by publishing a local-permalink to the entries in my Journal as a catalog-update, either just for you or for everyone nearby; and sending it to you; your catalog daemon now updates your local catalog with metadata about the two pieces, and they show up in your journal view as available links and in the first results you get when searching for new material on your network.


=== Use case 2 ===
==== Use case 2 ====


BUC-2 : I make a webpage on the school server. You like it and save a local copy on your XO, including images. The next day you want to share the page with João:
BUC-2 : I make a webpage on the school server. You like it and save a local copy on your XO, including images. The next day you want to share the page with João:

Latest revision as of 16:52, 10 October 2012

This page lays out early bundle concepts. For other uses of the term, see Bundle (disambiguation).

A bundle in Sugar terminology is broadly speaking a zipped collection of files including metadata defining its name and origin.

Background

Here is some terminology oriinally uesd when defining bundles:

  • Objects - a single file; a drawing, story, photo, sound, etc. Objects are not necessarily bundles.
  • Bundle - a type of object. A bundle is an object that contains multiple other objects within it, and which opens with a bundle activity.

For instance: A .png of a cat is an object. A collection of pictures of cats and a Write document that includes all these pictures could be packaged up in a bundle, which would open with an appropriate bundle activity.

Interface

Since bundles are just a special type of object, the same tagging and sharing interface should be used for both bundles and objects.




Current status

As currently described on the wiki, there are three main types of bundles that have their own specifications beyond the standard bundle format.

  • Activity bundles - collections of non-child-produced materials used for a particular activity. For instance, a selection of Etoys tutorials created by the etoys team is an activity bundle.
  • Content bundles - collections of non-child-produced materials used in the Library specifically. These use the .xol file format detailed by Lauren in Creating a content bundle. For instance, a collection of Wikipedia articles in Arabic is a content bundle.
  • Extended content bundle - a proposed format. this would refer to collections of files that don't qualify as either of the above -- either because they don't have the superstructure of an activity with a single executable, or that of an html directory; or because they are more transient and not intended to persist over months and years (so some of the metadata can/should be autogenerated and arbitrary).

Discussion

Some ideas for improvement

This is not an ideal set of terminology - it's been proposed (by Eben) to move to the following:

  • Bundle - an object that contains multiple other objects within it. A specification is available at Bundles; bundles take the form of a .zip folder containing the objects they are bundling; that is all. There is no distinction between child-created and non-child-created bundles. By default, bundles are opened with the Bundle activity.
  • Extended bundles - any bundle format with a superset of the requirements of the basic bundle bundle format. The extension may include a type identifier and/or owner such that these bundles open with various appropriate activities by default. There are currently three common extended bundle formats:
    • Object bundle - a bundle format that includes additional metadata and requirements that make it possible to use a bundle within and with a specific Activity. There is no set specification for an object bundle, although individual Activities may have their own object bundle format requirements. An object bundle format allows an object bundle to be treated like an object and opened with any activity which recognizes it.
    • Activity bundle - a bundle that defines an activity object which can be instantiated as a running application on the laptops. Activity bundles are really just a specific form of an "object bundle." The specification for activity bundles is available at Activity bundles and instructions on creating one are available at Creating an Activity bundle - note that these instructions use sugar.activity.bundlebuilder which is the only way to create an activity bundle at present.
    • Content bundle - the .xol file format detailed in Creating a content bundle that adds metadata requirements that make it possible to use the bundle within the Library.

As an aside, we could instead argue that the "object bundle" should simply be the "extended bundle", and that "activity bundles" and "content bundles" are simply specific examples of extended bundles.

Creating an extended bundle format

As discussed above, it is possible to create extended bundle formats for specific uses. Extended bundle format specifications are supersets of the base bundle specification. The Activity bundle format and Content bundle format are the two most common extended bundle formats, but it is possible for people to create their own - usually as a superset of the Object bundle format. The most common usecase for this is if an Activity requires certain metadata to be in a bundle before you can use that bundle within the Activity - for instance, Write requires certain file formats and metadata to be present in a document object in order to open and edit it.

To create an extended bundle format, simply take the existing bundle format and specify additional features (metadata to include, directory structures or files to follow, etc), then include a .info file in the top level of your bundle containing information about your bundle type. is there a spec for this .info file? However, we recommend that you try to avoid creating additional formats whenever possible, and to keep your formats as broad and generally usable as possible; the current bundle formats have been designed for maximum flexibility.

Use cases

We need clearer discussion of bundling. Some bundling use cases [BUCs]:

Use case 1

BUC-1 : I take a photo and make a drawing. You make a collage. I send you the photo and drawing so you can include them in the collage:

  1. by starting both Draw and Record and sharing them; you then choose to join the shared sessions and export the drawing and photo, then start Write and import them.
  2. by saving both photo and drawing as "Public". I now can browse to a view of your Journal, or search my local net of Journals and filter by creator, and find them.
    1. by saving both photo and drawing with a specific tag (sj-maria-collab) so you can find them later. Bonus: automatic tagging when you synch with flickr and myspace and whatnot.
  3. by exporting both photo and drawing to "Web" and letting me know, I can now browse to your public "Web" space with the browser and find them.
  4. by launching the Bundlemaker activity (for making 'extended' bundles), and selecting the photo and drawing from my Journal history. Then I name the resulting extended bundle "sj-maria-collab" and share it with you...
    1. ...you can now find it from your mesh view
    2. ...you now receive an alert that there is a bundle waiting for you
    3. ...the bundle immediately starts migrating across an ad-hoc file-sharing network, using space explicitly made free for this purpose by anyone who has started the fileshare Activity.
  5. by publishing a local-permalink to the entries in my Journal as a catalog-update, either just for you or for everyone nearby; and sending it to you; your catalog daemon now updates your local catalog with metadata about the two pieces, and they show up in your journal view as available links and in the first results you get when searching for new material on your network.

Use case 2

BUC-2 : I make a webpage on the school server. You like it and save a local copy on your XO, including images. The next day you want to share the page with João:

  1. by opening Browse and sharing a session while it is loaded
  2. by going into your journal and sharing a journal-view of the saved item
  3. by making an explicit content bundle out of the page and sharing it with João.
  4. by making an explicit extended bundle out of the page and sharing it with João (see above for options)