From Fedora Project Wiki

< GSOC 2012‎ | Student Application arunscaria91

Revision as of 15:35, 6 April 2012 by Arunscaria91 (talk | contribs) (Project Proposal (GSOC 2012) for "A binding translator for GlusterFS")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)


Project Prorposal:

* An overview of proposal:

       GlusterFS is a scale-out NAS file system with a stack-able user space design without compromising performance. As a high performance system it should be open for extension and support more programming environments. As a fastly growing data-storage solution the GlusterFS needs feature like multi programming language support.
        This project implements a  language binding translator that can take request from various programming languages. For each basic operations in GlusterFS(based on FUSE) for e.g. open, read, setxattr the translator would need to have a way to call out to a foreign-language function.


* The need it fulfills:

        A language binding translator would greatly increase the number of programmers who would be able to more easily extend GlusterFS. The GLuster can support more programming languages other than using the native C based libglusterfs. This idea can popularize the GlusterFS among programmers who use dynamic programming languages and languages other than C.


* Relevant experience I have:

      Yes. Last year I participated GSOC under fedora for "SUDO support for SSSD". I completed my requirements within GSOC. I contributed to the project for 3-4 months after the GSOC. But I couldn't continue contribution after 3 or 4 months, due to my over loaded academic pressure and main project at college. But I will be graduated by end of this years GSOC, and I won't have any academic pressures anymore. Also I am planning to join GlusterFS at Banglore, India. Only because of Gluster and Redhat is an amazing platform.
   Also my main project was in python and it is my favorite dynamic programming language. I am proficient in C/C++ and Linux too.

* How do you intend to implement your proposal:

     My plan to implement a binding translator from python to GlusterFS providing the POSIX file system calls that GlusterFS already offer. For this project a python module is implemented which creates an abstraction layer of the inner workings of the GlusterFS.

The translator must bind all operations (like create, open, readdir, read, setxattr etc) provided by libglusterfs.so. Also it should not change the actual architeture of GlusterFS and python programmer should be able to connect this one in the simpliest way possible. His code must be able to manipulate all arguments necessary, without any limitation.

So, for each operation type (e.g. open, read, setxattr) the translator would need to have a way to call out to a python function, and that function would need a way to call in e.g. to call STACK_WIND and invoke the next translator.

Ideally it would also be able to do things like get/set context on file descriptors and inodes, and handle non-I/O-path calls like reconfigure.


* Final deliverable of the proposal at the end of the period:

        The final product is python module that binds all the functions implemented by libglusterfs and can be used by the python programmer by importing it. He can access and manipulate the data in GlusterFS Posix brick using these modules bypassing the FUSE requests.


* A rough timeline for your progress:

+) April 23rd to May 21st (Community bonding period):
      Interact with the GlusterFS project community, learn documentation and source code.
      Interact closely with the project mentor to get into the specific details of the project. 
      Generate design documents.
+) May 21st to May 27th (1 week): Set up all the required tools and code base. Make abstract code for the module.
+) May 28th to June 10th (2 weeks): Complete binding of most important operations create, open, readdir, read, setxattr provided by libglusterfs.so
+) June 11th to June 24th (2 weeks):  Handle errors and implement error recovery  routines.
+) June 25th to July 8th (2 weeks):  Complete goals set for mid-evaluation.
+) July 9th to July 15th (1 week): Complete all mid-term evaluation related formalities
+) July 16th to July 29th (2 weeks):  Complete binding of all functions necessary for the translator.
+) July 30th to August 12th (2 weeks): Write and run test cases for all features added to the translator. Also, Document the module in the appropriate wiki.
+) August 13th to August 19th (1 week): Perform a general code clean up and prepare for final evaluation.
              My plan is to continue contributing to the project post GSoC.


* Any other details you feel we should consider

       More than GSOC I am expecting an career opportunity from GlusterFS. Iam going to get an interview call from Gluster after my graduation. The developer who took my interview guaranteed me that they will call me after my graduation. This GSOC will be a wonderful opportunity for me to familiarize the Gluster development  & to contribute something valuable to the community even before I start my work there, Which is really thrilling. :)