Changes

Jump to navigation Jump to search
4,467 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 34: Line 50:  
=== Objective tags ===
 
=== Objective tags ===
   −
Will be set by activity itself after including new Object.
+
Will be set by Library activity itself after including new Object.
    
* ''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'' link to remote object
+
* ''remote'' object from online ''source'' (only for current session)
 +
 
 +
=== Properties based tags ===
 +
 
 +
* tags values parsed from object's properties
    
=== Subjective tags ===
 
=== Subjective tags ===
   −
Will be set by activity authors or users
+
Will be set by objects authors or users
    
* ''activity'' required and mutually exclusive for ''content''
 
* ''activity'' required and mutually exclusive for ''content''
Line 52: Line 72:  
=== Composite tags ===
 
=== Composite tags ===
   −
User tags could consist of several child tags to represent tree of users tags.
+
User tags could be composite.
   −
If we have four objwith tags:
+
If we have:
 
* ''games'' tag -> object #1
 
* ''games'' tag -> object #1
 
* ''books/nonfiction'' tag -> object #2
 
* ''books/nonfiction'' tag -> object #2
Line 60: Line 80:  
* ''news'' tag -> object #4
 
* ''news'' tag -> object #4
   −
On the top level 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:
+
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
  −
See [[#]].
      
== Properties ==
 
== Properties ==
Line 87: Line 105:  
How users can share their objects.
 
How users can share their objects.
   −
=== Type of shared objects ===
+
=== Type of objects ===
   −
Library user could operate with three kinds of objects:
+
Library user could operate with two kinds of objects:
    
* ''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
* ''activities.sugarlabs.org''
+
* ''Sugar users'' joined (if they are online) to this Library session
* ''various sources'' that are provided by proper backend, for example books from gutenberg.org
+
* (?) ''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.
+
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:
* ''list view'' ala Journal
+
* ''list view'' a la Journal
 
* ''thumbs view''
 
* ''thumbs view''
 +
* ''grid view'' a la Calibre
 +
 +
User have several options for list items:
 +
* ''open'' object, for non-''creator'' objects<br>for ''unbind'' objects use the "right" activity to handle it i.e. open .txt in ReadEText not in Write
 +
* ''create'' new objects, for ''creator'' objects
 +
* ''edit'' current object, for ''creator'' objects
 +
* ''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''
 +
* ''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 it would be added to ''chosen tags'' list, ''related tags'' would reflect on the final list of 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''.
 +
 +
=== Mockup ===
 +
 +
[[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 136: Line 189:  
=== Share objects between Sugar users ===
 
=== Share objects between Sugar users ===
   −
# user ''A'' creates/fills his Library object and shares it.<br>
+
# 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
 +
# ''B'' browses ''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)
 +
# during the next online session ''B'' can synchronize previously downloaded objects
 +
 
 +
=== (?) Download objects from non-Sugar sources ===
 +
 
 +
# user selects proper non-sugar source in the sources list, for example activities.sugarlabs.org or gutenberg.org
 +
# makes it online
 +
# user browses remote objects
 +
# user can download particular/all remote objects
 +
# user can merge remote objects to the objects list(only for current session)
 +
 
 +
=== Keep activities up-to-date ===
 +
 
 +
# user creates "Activities" Library object
 +
# downloads activities from proper source
 +
# make these activities auto-updated
 +
# 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
 +
# "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 ===
 +
 
 +
# selects object to publish in object list
 +
# 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 ===
 
=== Room/Lesson mode ===
Line 149: Line 256:  
So, this mode should contain mini-neighbourhood view for Library object's items.
 
So, this mode should contain mini-neighbourhood view for Library object's items.
   −
[[Category:Activities]]
+
= Roadmap =
 +
 
 +
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
 +
|-style="background:#787878; color: white;"
 +
! Task
 +
! Planned date
 +
! Real date
 +
|-
 +
| Local version<br>v1
 +
| 2009-05-12
 +
| 2009-05-29
 +
|-
 +
| Remote version(Sugar users as an objects source)
 +
| 2009-05-19
 +
|
 +
|-
 +
| Publish objects on activities.sugarlabs.org
 +
| 2009-05-26
 +
|
 +
|-
 +
| Provide [[#Keep activities up-to-date]] scenario for LTSP
 +
|
 +
|
 +
|-
 +
| 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]

Navigation menu