Summer of Code/2016/Sugar Journal backup and restore: Difference between revisions
ManashRaja (talk | contribs) No edit summary |
ManashRaja (talk | contribs) No edit summary |
||
| 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 | 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. | #'''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) | ||
# | #'''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. | ||
#''' | #'''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. | ||
<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 | |||
<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 | ||
| | | | ||
* | *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 | ||
| | | | ||
* | *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. | ||
* | *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) | ||
|- | |- | ||
| 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" | ||
|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 | *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) | ||