GSoC 2017: Fast LAN Sync

gsoc

#1

Hello,
I'm Kaustubh Welankar, a freshman Computer Science student at BITS Pilani-Hyderabad Campus, India. I'm interested to contribute to ownCloud since its very useful to me. This is my first experience with Open Source contributions!

Right now, I've installed ownCloud on a RaspberryPi which I and my friends use over the college network. I'm trying to understand the code base and will soon do a Junior Bug fix(I would love some guidance for this). I'm particularly interested in the FastLAN sync feature. I'm curious about networks and this project will help me learn a lot along with a useful feature being implemented.

Thanks,
Kaustubh Welankar


#2

If all goes good, I will be happy to introduce you to client/server internals regarding sync during GSoC
We probably need this https://github.com/owncloud/client/pull/5440


#3

Hello,

I am Yahya Hassanzadeh, Ph.D. student of Computer Science and engineering at Koç University, Istanbul, Turkey. My main field of research is secure and efficient P2P cloud storage. I did several research-based implementations of cloud-based and client/servers projects including one similar to the Fast LAN Sync. I am very interested in contributing to a real-world, very empirical project like Fast LAN Sync. Please find more background details about me in https://sites.google.com/view/yhassanzadeh/home. Just for your kind information, I am migrating to the GitHub from BitBucket, hence my GitHub account is not very furnished yet.

Best Regards,
Yahya


#4

Hi, it has been 4 days and I do not find any reply. Kindly, would you please let me know the roadmap to submit my application?

Best Regards,
Yahya


#5

Applications open today, 20th March, https://developers.google.com/open-source/gsoc/. On April 3 - 24 Organizations review and select student proposals. We will submit more technical details about this project next week, so that you can get a feeling how and where to start to forge LAN Sync into the ownCloud distributed system. There are certain requirements to be satisfied.

General idea here is that client should first search in its local network for missing new/updated files before it asks the server. This means, you might need to introduce some consensus algorithm to avoid conflicts between client and server (State at the client needs to be reflected on the server eventualy), so if you sync from your Peer you need to have the same state as you would sync from server. For keeping the state in ownCloud we use modification time and ETAGs. For more datails please go through articles in @dragotin blog https://dragotin.wordpress.com/2015/03/13/owncloud-etags-and-fileids/ and https://cds.cern.ch/record/1970463?ln=ru

Anyways, along with the technical details, for all the C++ code and client side related project we would encourage you to submit some patch during application and between 4-30 of May (introduction session with mentor, most probably me with support of other colleagues), we will later announce what patches that could be, so that you get good introduction to the code.

To give you an early feeling what is required for this project is definitely knowledge of C++, some understanding what is Qt (but not required), and relatively strong feeling on HTTP, networking principles. Good to know will be also what is WebDav. During the project you might also need to write some PHP code on the server side (security, keeping state and knowledge on connected clients) for your prototype to work and later be a production code eventually.

Maybe also this topic will give you some feeling how to implement sync optimizations in ownCloud https://central.owncloud.org/t/improving-data-sync-process/2517 -> This was my student prototype project to assess how much sense for us might have HTTP2 and Bundling (https://www.youtube.com/watch?v=9RecQUqddfs)

@kaustubh @yhassanzadeh13


#6

I think you already have all required information to construct the Project Proposal on the GSoC page. After project proposals deadline, we will probably ask for some patches on client/server to verify your application (to verify that you will be capable of completing the project on time, you know how to use tools like github, make for C++ code, discover QT libraries for sockets, listeining on ports etc.). Please mind the deadline for proposals is fastly approaching, and the acceptance period is very long, for us to verify your application)

Furthermore, project itself is not easy and will require keeping the deadlines tight. But on the other hand it is very valuable for us and we will want to see it be production ready, we will do our best in the client team to ensure that you have all help required :>

If you need a hint concerning your proposal, please ask reasonably detailed question.


#7

On 3 April the application for the proposals closes, I will right after announce "get started" guide and patches in the server and client (code refactor level, maybe something more difficult at later stage if needed). With them you would be accelerated in your future project and give me (and our client/server leads/senior devs with which you will most likely collaborate with) a chance to evaluate if you will be able to complete your project in time.


#8

Hello, I'm very interested in this development: how was it with GSoC? Any plan to release this feature? Happy to test if needed. Thank you!


#9

On github they are think about using bittorrent sync (https://github.com/owncloud/client/issues/230#issuecomment-349968421), but why not the open source solution synchting, someone already wanted to integrate an app for ownCloud? @PVince81 @guruz