Line 1: |
Line 1: |
− | <noinclude>{{ GoogleTrans-en | es =show | bg =show | zh-CN =show | zh-TW =show | hr =show | cs =show | da =show | nl =show | fi =show | fr =show | de =show | el =show | hi =show | it =show | ja =show | ko =show | no =show | pl =show | pt =show | ro =show | ru =show | sv =show }}{{TOCright}} | + | <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: |
− | * manually included Journal objects
| |
| * auto included Journal objects | | * auto included Journal objects |
− | ** by MIME type
| |
| ** 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 92: |
Line 112: |
| ** ''local objects'' that were created on local system | | ** ''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 | | ** ''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 | + | * ''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: |
| | | |
| * ''local objects'' stored in local Journal | | * ''local objects'' stored in local Journal |
− | * ''Sugar users'' joined(if they are online) to this Library session | + | * ''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 128: |
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 === |
Line 135: |
Line 155: |
| | | |
| * ''chosen tags'' backslashed list of tags that were chosen | | * ''chosen tags'' backslashed list of tags that were chosen |
− | * ''related tags'' cloud or tree of tags to choose | + | * ''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: | | After proper ''tag'' was chosen: |
Line 141: |
Line 164: |
| # ''related tags'' would reflect on the final list of objects | | # ''related tags'' would reflect on the final list of objects |
| # ''objects list'' would contain 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 === |
| | | |
− | It filter objects for ''tags sidebar'' | + | It filters objects for ''tags sidebar'' |
| | | |
− | List of known(not necessarily online) ''sources'' of objects.<br> | + | 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 152: |
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 161: |
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 178: |
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 186: |
Line 218: |
| # click "publish" button | | # click "publish" button |
| | | |
− | === (?) Room/Lesson mode === | + | = 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 204: |
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)<br>v1 release | + | | Remote version(Sugar users as an objects source) |
| | 2009-05-19 | | | 2009-05-19 |
| | | | | |
| |- | | |- |
− | | Publish objects on activities.sugarlabs.org<br>v2 release | + | | Publish objects on activities.sugarlabs.org |
| | 2009-05-26 | | | 2009-05-26 |
| | | | | |
| |- | | |- |
− | | Provide [[#Keep activities up-to-date]] scenario for LTSP<br>v3 release | + | | Provide [[#Keep activities up-to-date]] scenario for LTSP |
| | | | | |
| | | | | |
| |- | | |- |
− | | Provide [[#Keep activities up-to-date]] scenario for intranet library portal<br>v4 release | + | | Provide [[#Keep activities up-to-date]] scenario for intranet library portal |
| | | | | |
| | | | | |
− | |-} | + | |- |
| + | |} |
| + | |
| + | == Activity Library == |
| + | |
| + | See also [[Activities/Activity Library]]. |
| + | |
| + | = Resources = |
| | | |
− | [[Category:Activities]] | + | * [http://git.sugarlabs.org/projects/library Sources] |
| + | * [http://activities.sugarlabs.org/en-US/sugar/addon/4089 Activity Library page] |