Changes

Line 41: Line 41:  
'''Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?'''
 
'''Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?'''
   −
My project will add advanced backup-restore, cloud sync and easy sharing features for the Sugar journal. The following are the features in detail:
+
My project will add advanced Sugar-server integration to increase the utility of available servers (XSCE or cloud). The following are the features in detail:
#'''Add selective backup-restore:''' User can select part of the journal to be backed up or restored directly from within the backup page. Metadata for each Journal entry will store the list of dependencies and library objects, which will be downloaded again as needed (and, as available). <br /> <u><i>Why?</i></u> Backups will be specific and save unnecessary wastage of storage space. Replace the ineffective way to store Journal images with the risk of running out of local space. Teachers will be able to distribute tutorials on activities without hampering the existing Journal a student.
+
#'''Add selective backup-restore:''' <i>(Difficulty level: easy).</i> User can select part of the journal to be backed up or restored directly from within the backup page. Metadata for each Journal entry will store the list of dependencies and library objects, which will be downloaded again as needed (and, as available). <br /> <u><i>Why?</i></u>  
#'''Add system to backup and restore from school servers (XSCE):''' Now backup can only be stored and restored from devices, but this feature will add school servers to the options. <br /> <u><i>Why?</i></u> <br />
+
#*Backups will be specific and save unnecessary wastage of storage space.  
 +
#*Teachers will be able to distribute specific Journal objects without hampering the existing Journal of a student.
 +
#'''Add system to backup and restore from school servers (XSCE):''' <i>(Difficulty level: medium)</i>. Now backup can only be stored and restored from devices, but this feature will add school servers to the options. <br /> <u><i>Why?</i></u> <br />
 +
#*If the school-servers are present, then they can be made an easy way to store and distribute backups among many.
 
#*The existing (ds-backup) option on OLPC OS is not an effective method because it cannot be easily restored. (from what I understand)
 
#*The existing (ds-backup) option on OLPC OS is not an effective method because it cannot be easily restored. (from what I understand)
#*As school servers are the best common node for all the local hardware running Sugar, hence storing backups at such common location will increase its accessibility by many fold.
+
#'''Add cloud service:''' <i>(Difficulty level: easy).</i> In a few clicks, it will let schools to connect each student’s pc to a local cloud server or a third party cloud server as per the availability to sync the journal data at a central location.<br /><u><i>Why?</i></u> It will be easy for schools to let hardware be shared among the student batches as students can login to their account from any hardware and can still access his/her own journal. This feature will strongly support the "One to many concept" that can be implemented on Sugar. (concept discussed on GSoC 2016 idea page [https://wiki.sugarlabs.org/go/Summer_of_Code/2016 link])
 +
#'''Easy sharing of Journal items based on above server frameworks:''' <i>(Difficulty level: medium)</i> When server frameworks like XSCE and cloud are available, their utility can be increased by adding features where children can share any item with each other in just few easy clicks. <br /> <u><i>Why?</i></u>
 
#*The backups can be used by multiple types of hardware/platform running Sugar (OLPC pcs, Android, Sugarizer) seamlessly using school-server’s multi-platform support to the advantage.
 
#*The backups can be used by multiple types of hardware/platform running Sugar (OLPC pcs, Android, Sugarizer) seamlessly using school-server’s multi-platform support to the advantage.
 
#*Teachers can distribute journal entries on mass scale.
 
#*Teachers can distribute journal entries on mass scale.
#'''Add cloud service:''' In a few clicks, it will let schools to connect each student’s pc to a local cloud server or a third party cloud server as per the availability to sync the journal data at a central location.<br /><u><i>Why?</i></u> It will be easy for schools to let hardware be shared among the student batches as students can login to their account from any hardware and can still access his/her own journal. This feature will strongly support:
+
#'''Use the servers for sharing storage space:''' <i>(Difficulty level: hard)</i>. <u><i>The data created by a Journal may take the free storage space on a low storage device pretty soon.</i></u> Hence this background feature will let the Journal utilize both the local storage and the server storage. Journal objects or libraries will be shifted if it can be shifted to the server. When any object will be needed, it will be downloaded and cached temporarily on the local storage. A method will be devised that will be looking for the objects that can be shifted to the server like, objects which are rarely used and those containing library items. The user will be able to set rules to manage the behaviour.
#*"One to many concept" that can be implemented on Sugar. (concept discussed on GSoC 2016 idea page [https://wiki.sugarlabs.org/go/Summer_of_Code/2016 link])
  −
#*The OLPC’s new “Infinity” modular computer. A student’s personal setup (Journal) becomes another module.
  −
#'''Easy sharing of Journal items based on above server frameworks:''' When server frameworks like XSCE and cloud are available, their utility can be increased by adding features where children can share any item with each other in just few easy clicks. The GUI will be indifferent to the framework being used in the background even though it will provide options, if both are present at the same time.
     −
<u>Technologies:</u> I will use python and its libraries for the main backend along with GTK+ (GTK3) for the GUI and graphics generator like Inkscape for the icons. For the different server integration, I am planning to use use server specific cli, apis, libraries or scripts like “owncloudcmd” for ownCloud,  “RClone” that supports many cloud services like Google Drive, Amazon S3, Openstack Swift / Rackspace cloud files / Memset Memstore, Dropbox, Google Cloud Storage, Amazon Cloud Drive, Microsoft One Drive, Hubic, Backblaze B2, Yandex Disk, The local filesystem and tools like rsync for XSCE school-servers. I will also use polkit for permissions and symbolic links. If I finally use rclone for cloud sync, then I might learn and use go programming language (its written on) or use pexpect to run its cli.
+
 
 +
<u>Technologies:</u> I will use python and its libraries for the main backend along with GTK+ (GTK3) for the GUI and graphics generator like Inkscape for the icons. For the different server integration, I am planning to use use server specific cli, apis, libraries or scripts like “owncloudcmd” for ownCloud,  “RClone” that supports many cloud services like Google Drive, Amazon S3, Openstack Swift / Rackspace cloud files / Memset Memstore, Dropbox, Google Cloud Storage, Amazon Cloud Drive, Microsoft One Drive, Hubic, Backblaze B2, Yandex Disk, The local filesystem. I will also use polkit for permissions and symbolic links. If I finally use rclone for cloud sync, then I might learn and use go programming language (its written on) or use pexpect to run its cli.
 
    
 
    
   Line 80: Line 82:  
| 23 May-29 May
 
| 23 May-29 May
 
|  
 
|  
*Continue the development of the selective backup-restore feature on which I already have done some work.[https://github.com/ManashRaja/sugar/commit/e186d37182be8baf2feff0c6e3726a5e1b3753b6 link] I plan to finish at least 90% of this feature on this week.
+
*Complete the specific backup-restore(1) and cloud server backup(3) features as I have a head start on both, having gone through the code and tested the functionality. [https://github.com/ManashRaja/sugar/commit/e186d37182be8baf2feff0c6e3726a5e1b3753b6 1], [https://github.com/ManashRaja/cloud-sync-demo 2].
 
*Try to match my style of coding with the existing code by reviews and proper study of the code.
 
*Try to match my style of coding with the existing code by reviews and proper study of the code.
 
|60 hours a week (summer vacations)
 
|60 hours a week (summer vacations)
Line 87: Line 89:  
| 30 May-5 June
 
| 30 May-5 June
 
|  
 
|  
*Complete the basic functionality of the specific and multiple backup-restore
+
*As I would have already installed the XSCE server at my place, and the implementation discussed to its detail in the "Community bonding period" hence I believe that I can buckle up and finish at least the basic functionality of this feature.
*Start implementing and coding for making the XSCE server as backup destination and restore source.
+
*Relatively free week to act as buffer if required or start the next week's work.
*Build up the coding pace
   
|60 hours a week (summer vacations)
 
|60 hours a week (summer vacations)
    
|-  
 
|-  
 
| 6 June-12 June
 
| 6 June-12 June
|  
+
| Since, the feature "servers for sharing storage space"(5) is a difficult task, hence I have planned more time for this feature. I will create the basic functionality as per the road map we would have discussed in the "Community Bonding period"
*Finish off the XSCE server feature.
  −
*Relatively free week to act as buffer if required or start the next week's work.
   
|60 hours a week (summer vacations)
 
|60 hours a week (summer vacations)
   Line 102: Line 101:  
| 13 June-20 June
 
| 13 June-20 June
 
|  
 
|  
*Finalize the cloud integration for ownCloud and majority of the third party providers like (Google Drive, Dropbox, Amazon S3), whose prototype has been made by me already [https://github.com/ManashRaja/cloud-sync-demo link].
+
*Finalize the 5th feature.
*Testing and code documentation
+
*Testing and code documentation.
*90% as per functionality of the project will be complete
+
*90% as per functionality of the project will be complete before the Mid-Term Evaluation.
 
|60 hours a week (summer vacations)
 
|60 hours a week (summer vacations)
   Line 125: Line 124:  
|  
 
|  
 
*Understand all types of collaborations that happen in the school among the children(students) and teachers, to know how my sharing feature fits in.
 
*Understand all types of collaborations that happen in the school among the children(students) and teachers, to know how my sharing feature fits in.
 +
*Will add more finishing touches to the features (1,2,3,5) developed above.
 
*Start coding for the sharing feature.
 
*Start coding for the sharing feature.
 
|60 hours a week (summer vacations)
 
|60 hours a week (summer vacations)
Line 172: Line 172:     
My strength lies in my dynamic learning and self motivated hard work. I am a 2nd year undergraduate of the Indian Institute of Technology, Kharagpur where I am actively involved with the tech community and contribute to 2 research groups ([http://quadrotor-iitkgp.github.io/ 1][http://www.agv.iitkgp.ac.in/ 2]), 2 tech societies([https://www.robotix.in/team/ 1]), projects under professors and have participated in many competitions and hackathons apart from keeping my academics up. In these two years of my stay, I have learnt a great deal about time management. <b>All the professional level work we do has made me to realize realistic timelines for myself and my team.</b> Though I failed initially, but I am getting better. My work has been mostly in software RnD and autonomous robotics and hence <b>I have gained lots of experience about the process and its time consumption involved in converting an idea to finished product.</b> So, I have learned to plan my work and execute it efficiently.
 
My strength lies in my dynamic learning and self motivated hard work. I am a 2nd year undergraduate of the Indian Institute of Technology, Kharagpur where I am actively involved with the tech community and contribute to 2 research groups ([http://quadrotor-iitkgp.github.io/ 1][http://www.agv.iitkgp.ac.in/ 2]), 2 tech societies([https://www.robotix.in/team/ 1]), projects under professors and have participated in many competitions and hackathons apart from keeping my academics up. In these two years of my stay, I have learnt a great deal about time management. <b>All the professional level work we do has made me to realize realistic timelines for myself and my team.</b> Though I failed initially, but I am getting better. My work has been mostly in software RnD and autonomous robotics and hence <b>I have gained lots of experience about the process and its time consumption involved in converting an idea to finished product.</b> So, I have learned to plan my work and execute it efficiently.
Another important fact is that <b>my college summer vacations lie in the period of 29th April to 24th July, during which I will be able to devote 100% of my work time as GSoc being my top priority</b> (8-9 hours a day and around 60 hours a week for 12 weeks) towards my contribution. Even though my college semester will start from 25th July, I will still be able to devote 40 hours a week due to a light semester. I also have a head start on the project I would be working on as <b>I have been involved with the Sugar code base since February 1st, added a new feature, fixed a bug and have made the prototype of two features ([https://github.com/ManashRaja/sugar/commit/e186d37182be8baf2feff0c6e3726a5e1b3753b6 1][https://github.com/ManashRaja/cloud-sync-demo 2]) I will develop in this project</b> apart from discussion about the project on IRC. Hence I am confident that I can ensure fully dedicated work and a pledge to deliver more than I promise.
+
Another important fact is that <b>my college summer vacations lie in the period of 29th April to 24th July, during which I will be able to devote 100% of my work time as GSoC being my top priority</b> (8-9 hours a day and around 60 hours a week for 12 weeks) towards my contribution. Even though my college semester will start from 25th July, I will still be able to devote 40 hours a week due to a light semester. I also have a head start on the project I would be working on as <b>I have been involved with the Sugar code base since February 1st, added two features [https://github.com/sugarlabs/sugar/pull/665 1], [https://github.com/sugarlabs/sugar/pull/679 2], fixed three bugs [https://github.com/sugarlabs/sugar/pull/668 1], [https://github.com/sugarlabs/sugar/pull/677 2], [https://github.com/sugarlabs/sugar/pull/682 3] and have made the prototype of two features ([https://github.com/ManashRaja/sugar/commit/e186d37182be8baf2feff0c6e3726a5e1b3753b6 1][https://github.com/ManashRaja/cloud-sync-demo 2]) I will develop in this project</b> apart from discussion about the project on IRC. Hence I am confident that I can ensure fully dedicated work and a pledge to deliver more than I promise.
    
== '''You and the community''' ==
 
== '''You and the community''' ==
Line 197: Line 197:  
:: It's normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.
 
:: It's normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.
   −
Yes I have sent two pull request. [https://github.com/sugarlabs/sugar/pull/665 Proxy setting feature] and [https://github.com/sugarlabs/sugar/pull/668 Bug fix]
+
Yes I have started the following pull request.  
 +
* [https://github.com/sugarlabs/sugar/pull/665 Feature: Proxy setting]
 +
* [https://github.com/sugarlabs/sugar/pull/679 Feature: Connect to multiple School Server easily]
 +
* [https://github.com/sugarlabs/sugar/pull/668 BugFix: Fix custom restart message display in control panel]
 +
* [https://github.com/sugarlabs/sugar/pull/677 BugFix: Timezone change not accepted on cancel, fixes #3093]
 +
* [https://github.com/sugarlabs/sugar/pull/682 BugFix: Metacity on fail reaped after timeout, fixes #4958]
 +
 
 +
<br /> <br />
    
* If you plan to work on Sugar-Web projects we want to be sure that you're familiar with web technologies, so:
 
* If you plan to work on Sugar-Web projects we want to be sure that you're familiar with web technologies, so:
52

edits