1. My project experience
I'm a postgraduate from Graduate University of Chinese Academy of Sciences. My major is Software Engineering. I’m familiar with c and python. As an old user on SVN, I would love to contribute to my old friend.
My last project is a mobile phone game on MTK (an embedded C platform for mobile phone, and popular in China), before which I have learned uc/os-ii and developed game on it. As the sole developer in this MTK project, I have designed an efficient file format to store game map, and got a high compression ratio. This project was certainly managed by SVN. Furthermore, I have designed a smart UI framework, which simplified later work greatly.
2. What have I done with SVN?
1.) Subscribed to the developer mailing list and joined in IRC, which helped me get familiar with SVN community.
2.) Covered ‘Hacker's Guide to Subversion’ to know background knowledge on SVN and the conventions in the community, such as on code style, error message and ARP pool.
3.) Downloaded the SVN source code with SVN, setup the environment in my computer. Browsed the source code with the help of ‘Subversion Documentation’; got a global view about SVN’s construction levels, modules and data structures.
4.) Launched a discussion about my GSOC project in mailing list [1]. I have received much important advice on how to carry out my project, and avoid bringing in many changes bothering scripts users.
3. My plan for GSOC
As the SVN Issue #901 [2] mentioned, when update, check in or out a huge bytes, users can just see a lot of dots or a long list of files. This is a bit dull. If a progress indicator gives a percentage of the total size to transmit, or the total number of files to transmit, users will be happy.
After the discussion in mailing list, I decide to divide this work into two steps:
1.) Deals with all the necessary work to create a progress-reporting callback
This is the core of this project. With well-defined callback, CLI and many third UI tools can improve their work. I will investigate into SVN’s Kernel, and focus on what information SVN can provide, when to get the information and where to place the callback.
So far, we can get information about:
a.) Amount of files to send or receive,
b.) Amount of data per file,
c.) Amount of data what has been transmitted per file,
d.) Amount of data what has been transmitted altogether.
And, we can’t get about:
a.) Amount of data to send or receive,
b.) Time to compute delta before transmitting
It’s necessary to make sure whether any other information is available, and find the proper place to put callback. A requirement report will be provided before the late May, which also means I have get a good knowledge of SVN’ kernel. I will begin to code on it at the early June, and plan to finish before the late July.
2.) Actually implementing a progress indicator for the command-line client.
It’s a relatively easier work. As in this original survey it’s strongly recommended that script users should be protected from changes the new function does, the progress indicator may be deactivated by default, and can be activated by an option. It’s planned to finish in the middle of August.
4. Additional
After the deadline for application, you can visit my newest work on my Blogger [3].
[1.]http://subversion.markmail.org/search/?q=show+output#query:show%20output+page:1+mid:nl6qbqhpbdogkce2+state:results
[2.] http://subversion.tigris.org/issues/show_bug.cgi?id=901
[3.] http://bigzhanghao.blogspot.com/2009/04/progress-on-svn-for-gsoc.html