Changes

Jump to navigation Jump to search
1,857 bytes added ,  11:02, 29 April 2010
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:
   −
* ''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 114: Line 135:  
=== Objects list ===
 
=== Objects list ===
   −
The list of objects.
+
The list of objects which represents result of ''chosen tags''.
    
Modes:
 
Modes:
Line 127: 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 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:
 +
# 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
   −
After proper ''tag'' was chosen it would be added to ''chosen tags'' list, ''related tags'' would reflect on 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 144: 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 153: 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 170: 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 178: 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 196: 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]

Navigation menu