Difference between revisions of "Activities/Library"
Line 136: | Line 136: | ||
=== Share objects between Sugar users === | === Share objects between Sugar users === | ||
− | # user ''A'' creates/fills his Library object and shares it | + | # user ''A'' creates/fills his Library object and shares it |
# user ''B'' joins ''A'''s Library session and browses his ''local'' objects, ''B'' can download particular/all ''A'''s ''local'' objects | # user ''B'' joins ''A'''s Library session and browses his ''local'' objects, ''B'' can download particular/all ''A'''s ''local'' objects | ||
Revision as of 20:59, 4 May 2009
Purposes
Cornerstone ideas:
- implement Unified Objects proposal to have unified method to create, reuse and share all Objects in Sugar
- work with remote Sugar Objects in the same way like with local
- make this activity Sucrose version independent(0.82+)
Objects model
How it looks like from top-level point of view.
Everything is an object
So, journal objects, activities/activity-bundles, content/content-bundles are the same level objects.
All object versions
- by activity_id if it exists
- by activity for activities/bundles
are represented in Library by one collapsed item.
Every Library object could include:
- manually included Journal objects
- auto included Journal objects
- by MIME type
- new version of object, if object was already included
- all Journal objects
Tags
Every Library object have finite quantity of predefined tags and infinite quantity of users tags.
Objective tags
Will be set by activity itself after including new Object.
- creator for activities
- creation for objects that were generated by activity(activity_id field is not empty)
- unbind for Journal objects w/o activity_id field
- local objects are stored in Journal
- remote link to remote object
Subjective tags
Will be set by activity authors or users
- activity required and mutually exclusive for content
- content required and mutually exclusive for activity
- endless quantity of users tags
Composite tags
User tags could consist of several child tags to represent tree of users tags.
If we have four objwith tags:
- games tag -> object #1
- books/nonfiction tag -> object #2
- books/science-fiction tag -> object #3
- news tag -> object #4
On the top level we have:
- games tag -> object #1
- books tag -> object #2, object #3
- news tag -> object #4
After choosing books tag:
- nonfiction tag -> object #2
- science-fiction tag -> object #3
See #.
Properties
Every object can have:
- summary short explanation
- description longer explanation
- icon of object
- screenshot of object
- rank
By default, some properties could be filled from Journal fields or from object itself (like .ogg properties).
Sharing
How users can share their objects.
Library user could operate with three kinds of objects:
- local objects stored in the local Journal; they are regular Journal objects
- remote objects stored in the Journal of other(online) users
Sources
Every Library object has list of known(not necessarily online) sources of objects:
- Sugar users joined(if they are online) to this Library session
- activities.sugarlabs.org
- various sources that are provided by proper backend, for example books from gutenberg.org
If source is online user can browse his objects(in separate way or merging them to the main set of objects) and download or download+start them.
Synchronize/Upgrade objects
User can manually/auto synchronize local versions with remote versions from online sources.
UI
Core UI components.
Objects list
The list of objects.
Modes:
- list view ala Journal
- thumbs view
Tags sidebar
- chosen tags backslashed list of tags that were chosen
- related tags cloud or tree of tags to choose
After proper tag was chosen it would be added to chosen tags list, related tags would reflect on the final list of objects.
Sources sidebar
List of known(not necessarily online) sources of objects.
User can select proper item to view objects only for this source.
Usage scenarios
- user A creates/fills his Library object and shares it
- user B joins As Library session and browses his local objects, B can download particular/all As local objects
Room/Lesson mode
At the first approach it could look like:
- teacher prepares one or several Library objects for future lesson
- during the lesson teacher shares proper Library object for all students
- teacher could observe if all students were joined to proper Library object, to proper object inside of Library object
So, this mode should contain mini-neighbourhood view for Library object's items.