Activities/Library: Difference between revisions
| (44 intermediate revisions by 6 users not shown) | |||
| Line 1: | Line 1: | ||
<noinclude>{{ GoogleTrans-en | | <noinclude>{{GoogleTrans-en}}{{TOCright}} | ||
[[Category:Activities|Library]]</noinclude> | |||
---- | |||
'''NOTE:''' Core functionality of Library was moved to [[Features/Unified Browser for Objects]], since now Library will be implemented in plugin form (as a separate activity). | |||
---- | |||
= Thanks to = | |||
Library activity idea was inspired by [http://thread.gmane.org/gmane.comp.education.sugar.discuss/2586 iaep@ mailing list thread]. | |||
= Related ideas = | |||
* [http://wiki.laptop.org/go/Journal%2C_reloaded Journal, reloaded] | |||
* [[Design_Team/Designs/Journal#01|Journal mockups]] | |||
* [[Unified Bundles]] | |||
* [[User:Alsroot/trash/Unified Objects | Unified Objects]] | |||
* ... | |||
= Purposes = | = Purposes = | ||
Cornerstone ideas: | Cornerstone ideas: | ||
* implement [[Unified Objects]] proposal to have unified method to create, reuse and share ''all'' Objects in Sugar | * implement [[User:Alsroot/trash/Unified Objects | 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'' | * work with ''remote'' Sugar Objects in the same way like with ''local'' | ||
* make this activity Sucrose version independent(0.82+) | * make this activity Sucrose version independent (0.82+) | ||
= Objects model = | = Objects model = | ||
| Line 22: | Line 39: | ||
Every Library object could include: | Every Library object could include: | ||
* auto included Journal objects | * auto included Journal objects | ||
** new version of object, if object was already included | ** new version of object, if object was already included | ||
** by datastore fields, like ''mime_type'', ''tags'' etc. | |||
* all Journal objects | * all Journal objects | ||
| Line 37: | Line 53: | ||
* ''creator'' for activities | * ''creator'' for activities | ||
* ''creation'' for objects that were generated by activity(''activity_id'' field is not empty) | * ''creation'' for objects that were generated by activity (''activity_id'' field is not empty) | ||
* ''unbind'' for Journal objects w/o ''activity_id'' field | * ''unbind'' for Journal objects w/o ''activity_id'' field | ||
* ''local'' objects are stored in Journal | * ''local'' objects are stored in Journal | ||
* ''remote'' object from online ''source'' (only for current session) | * ''remote'' object from online ''source'' (only for current session) | ||
=== Properties based tags === | |||
* tags values parsed from object's properties | |||
=== Subjective tags === | === Subjective tags === | ||
| Line 60: | Line 80: | ||
* ''news'' tag -> object #4 | * ''news'' tag -> object #4 | ||
On the top level in ''cloud'' view we have: | On the top level in ''cloud'' view in ''tags sidebar'' we have: | ||
* ''games'' tag -> object #1 | * ''games'' tag -> object #1 | ||
* ''books'' tag -> object #2, object #3 | * ''books'' tag -> object #2, object #3 | ||
* ''news'' tag -> object #4 | * ''news'' tag -> object #4 | ||
After choosing ''books'' tag in ''cloud'' view: | After choosing ''books'' tag in ''cloud'' view in ''tags sidebar'': | ||
* ''nonfiction'' tag -> object #2 | * ''nonfiction'' tag -> object #2 | ||
* ''science-fiction'' tag -> object #3 | * ''science-fiction'' tag -> object #3 | ||
| Line 90: | Line 110: | ||
* ''local objects'' stored in the local Journal; they are regular Journal objects | * ''local objects'' stored in the local Journal; they are regular Journal objects | ||
* ''remote objects'' stored in the Journal of other(online) users | ** ''local objects'' that were created on local system | ||
** ''local objects'' that were downloaded from remote ''source''<br>user can sync them with original remote objects | |||
* ''remote objects'' stored in the Journal of other (online) users | |||
=== Sources === | === Sources === | ||
Every Library object has list of known(not necessarily online) ''sources'' of objects: | Every Library object has list of known (not necessarily online) ''sources'' of objects: | ||
* ''Sugar users'' joined(if they are online) to this Library session | * ''local objects'' stored in local Journal | ||
* ''Sugar users'' joined (if they are online) to this Library session | |||
* (?) ''activities.sugarlabs.org'' | * (?) ''activities.sugarlabs.org'' | ||
* (?) ''various sources'' that are provided by proper backend, for example books from gutenberg.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. | 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 === | === Synchronize/Upgrade objects === | ||
| Line 112: | Line 135: | ||
=== Objects list === | === Objects list === | ||
The list of objects. | The list of objects which represents result of ''chosen tags''. | ||
Modes: | Modes: | ||
| Line 125: | Line 148: | ||
* ''download'' remote object, if current object is from remote ''source'' and wasn't downloaded previously | * ''download'' remote object, if current object is from remote ''source'' and wasn't downloaded previously | ||
* ''sync'' current object with remote one, if current object was originally downloaded from remote ''source'' | * ''sync'' current object with remote one, if current object was originally downloaded from remote ''source'' | ||
* ''delete'' object from local system(i.e. from the Journal), if current object was originally downloaded from remote ''source'' it would turn to "un-downloaded" state | * ''delete'' object from local system (i.e., from the Journal), if current object was originally downloaded from remote ''source'' it would turn to "un-downloaded" state | ||
=== Tags sidebar === | === Tags sidebar === | ||
It filters objects for ''objects list''. | |||
* ''chosen tags'' backslashed list of tags that were chosen | * ''chosen tags'' backslashed list of tags that were chosen | ||
* ''related tags'' cloud | * ''related tags'' | ||
** cloud of ''related tags'' | |||
** tree (made by ''composite tags'') of ''related tags'' | |||
* without any tags i.e. all objects | |||
After proper ''tag'' was chosen: | |||
# selected ''tag' would be added to ''chosen tags'' list | |||
# ''related tags'' would reflect on the final list of objects | |||
# ''objects list'' would contain the final list of objects | |||
User can choose what kinds of tags it should contain: | |||
* ''objective tags'' | |||
* ''properties based tags'' | |||
* ''subjective tags'' | |||
=== Sources sidebar === | === Sources sidebar === | ||
List of known(not necessarily online) ''sources'' of objects.<br> | It filters objects for ''tags sidebar'' | ||
List of known (not necessarily online) ''sources'' of objects.<br> | |||
User can select proper item to view objects only for this ''source''. | User can select proper item to view objects only for this ''source''. | ||
| Line 142: | Line 180: | ||
[[Image:library.svg|200px]] | [[Image:library.svg|200px]] | ||
[[Image:-1.png|200px]] | |||
[[Image:-2.png|200px]] | |||
[[Image:-3.png|200px]] | |||
[[Image:-4.png|200px]] | |||
= Usage scenarios = | = Usage scenarios = | ||
| Line 151: | Line 193: | ||
# ''B'' browses ''A''s ''local'' objects | # ''B'' browses ''A''s ''local'' objects | ||
# ''B'' can download particular/all ''A'''s ''local'' objects | # ''B'' can download particular/all ''A'''s ''local'' objects | ||
# ''B'' can merge ''A'''s ''local'' objects to the objects list(only for current session) | # ''B'' can merge ''A'''s ''local'' objects to the objects list (only for current session) | ||
# during the next online session ''B'' can synchronize previously downloaded objects | # during the next online session ''B'' can synchronize previously downloaded objects | ||
| Line 168: | Line 210: | ||
# make these activities auto-updated | # make these activities auto-updated | ||
# add rule to include to this "Activities" object all activities | # add rule to include to this "Activities" object all activities | ||
# treats created Library object like a regular Home view i.e. use it to run all(preinstalled and downloaded) activities | # treats created Library object like a regular Home view i.e. use it to run all (preinstalled and downloaded) activities | ||
# "auto-updated" should mean that downloaded activities will be up-to-date(in some way) when "Activities" object is run | # "auto-updated" should mean that downloaded activities will be up-to-date (in some way) when "Activities" object is run | ||
=== Publish objects on non-Sugar sources === | === Publish objects on non-Sugar sources === | ||
| Line 176: | Line 218: | ||
# click "publish" button | # click "publish" button | ||
=== ( | = Implementation = | ||
Implementation details. | |||
=== Database model === | |||
Library follows simple rules: | |||
* use local datastore API to search/filter ''local objects'' | |||
* use remote datastore API(in some way) to search/filter ''remote objects'' | |||
* use telepathy tubes for notifying users about changes | |||
* sync shared objects while opening Library activity or manually | |||
= Going further = | |||
=== Integration with Sugar components === | |||
* downloaded files by Browse activity | |||
=== Simplify UI usage === | |||
* several levels of UI complexity | |||
* presets with different sets of UI components | |||
=== Various non-sugar ''sources'' === | |||
* FTP servers | |||
=== Room/Lesson mode === | |||
At the first approach it could look like: | At the first approach it could look like: | ||
| Line 194: | Line 264: | ||
! Real date | ! Real date | ||
|- | |- | ||
| Local version | | Local version<br>v1 | ||
| 2009-05-12 | | 2009-05-12 | ||
| | | 2009-05-29 | ||
|- | |- | ||
| Remote version(Sugar users as an objects source) | | Remote version(Sugar users as an objects source) | ||
| 2009-05-19 | | 2009-05-19 | ||
| | | | ||
|- | |- | ||
| Publish objects on activities.sugarlabs.org | | Publish objects on activities.sugarlabs.org | ||
| 2009-05-26 | | 2009-05-26 | ||
| | | | ||
|- | |- | ||
| Provide [[#Keep activities up-to-date]] scenario for LTSP | | Provide [[#Keep activities up-to-date]] scenario for LTSP | ||
| | | | ||
| | | | ||
|- | |- | ||
| Provide [[#Keep activities up-to-date]] scenario for intranet library portal | | Provide [[#Keep activities up-to-date]] scenario for intranet library portal | ||
| | | | ||
| | | | ||
|-} | |- | ||
|} | |||
== Activity Library == | |||
See also [[Activities/Activity Library]]. | |||
= Resources = | |||
[[ | * [http://git.sugarlabs.org/projects/library Sources] | ||
* [http://activities.sugarlabs.org/en-US/sugar/addon/4089 Activity Library page] | |||