Google Summer of Code Project : Writing a CIFS client

Fri, 2008-04-25 23:38   Tags:  :: ::

In this post, I'll do my presentation, and will talk you about my GSoC project, "Writing a CIFS client"

Hi everybody !

My name is Adrien Lemaire, I'm a new member of the Haiku community. I was accepted on the Google Summer Of Code to work for Haiku. To summarize, I'll have to :

  • Implement a CIFS file system add-on.
  • Implement a interface to browse/mount remote shares.

Biographical sketch :
I was born in France (Toulouse) where I lived for twenty years, but I have always been interested in getting to know other countries and cultures, as I traveled a lot with my father, who works for an international corporation. I have graduated with Honor (Baccalaureate S) and decided to study computer science and business administration. I'm a student of SUPINFO (French computer science engineering school). I took my first year in Toulouse (France) and my second in Montreal (Canada). I enrolled at SUPINFO because of its combined program of computer science and management, as well as its international opportunities (implementation in many countries). During my studies, I already had internships with 2 companies. Later, I went to Montreal for one year, which will enable me to improve my English and to discover America. I'll return to France next year, and I'm going to finish my studies at Oxford university to have a double degree in French and English.

CS skills :

  • Programming languages : C, C++, Objective-C with cocoa, Applescript, Java, vb2005, Python, Perl, SVG. (learning C#, ASP and Ruby).
  • Web languages : HTML, XHTML, CSS, PHP, Javascript, XML, Ajax.
  • Databases : MySQL (SQL), Oracle (iSQL*Plus, PL/SQL), SQL server
  • Operating systems :
    • Windows XP, Vista, Windows 2003 Server
    • Linux (Mandriva, Ubuntu, Debian, Suse, BackTrack)
    • Mac Os X 10.4 and 10.5

Work experiences :

  • Librement Humain
    I began my first internship in February 2007 (until May 2007) in the French "Librement Humain" association, a charity organization that wants to promote exchange and awareness of the concept of sustainable development for the business by using internet tools. I worked with PHP and Ajax on a website. I also created an advanced search tool (father/brothers/children relations between elements found in XML files).
  • Clarisys
    I did a 3 month internship at Clarisys, a computer company that develops software and manages the IT of some French medical analysis laboratories. I created the design of a website with templates, JavasSript, PHP and Perl. I had to create graphics for the quality control section. For this project I used Python, Perl, PHP, templates, JavaScript and SVG.
  • Other projects
    I also did other some projects, often as a project manager :

    • Creation of a chess game in Java. I was a member of the SUPINFO SUN laboratory, and I had no Java courses during the first year. So I contacted all first year students who were in this laboratory like me (6 persons in the world), and I proposed to create a chess game.
    • Creation of a Cisco configuration tool in Cocoa and Applescript, in a team of 4 students
    • I'm currently participating in a project for Orange (France Telecom), which will be finished by the end of April, and I'm learning C# and ASP. I have to search data in a database by a sniffer and arrange these data in SVG graphics and tables on a page.

Stop to talk about my life, and now talk about my project !
My mentor is Bruno G. Albuquerque, and I asked Philippe Saint-Pierre to be co-mentor on this project (because he live in Quebec like me). Now, I have a special contract (which needs no sign from Google or Haiku), and I'll have no other summer internship to do, so I'll take all my time on my GSoC project. If you want more details about this contract, please email me (lemaire.adrien@gmail.com) or ask me on irc (my nickname is Wiss).
You can see now a detailed plan on my project :
General tasks

  • Learn about Haiku in general.
  • Learn about Haiku's virtual file system interface (bfs, dos).
  • Learn about Haiku userland (gdb) anb kernelland (kdl) debugging and tracing.
  • Learn how to call network functions inside the kernel (nfs).
  • Learn the CIFS/SMB protocol.
  • Learn CIFS/SMB discovery.

File system add-on

  • Implement the CIFS protocol as a library that would be linked statically to the kernel add-ons or userland testing apps.
  • Implement basic (mounting/directory iteration/unmounting) CIFS file system add-on based on this library.
  • Implement read-only support for reading files.
  • Implement write support.

Share browser

  • Implement SMB/CIFS discovery in your CIFS library.
  • Create a SMB/CIFS discovery file system add-on.
  • Implement server discovery.
  • Implement share discovery.

I'm trying to develop on Mac Os X, and use Qemu to launch Haiku.
My dear mentor have bought me a great book, called "Implementing CIFS", by Christopher R. Hertel : I've begun to read it, and I'll finish it in 2 weeks.

That's all for now !
Thanks to have accepted me for this project.

Bye,
Adrien Lemaire

jeanmarc
Submitted by jeanmarc on Mon, 2008-04-28 05:55.

Nice resumé :) good luck Adrien and have fun !