The link is here:<br><a href="http://socghop.appspot.com/gsoc/student_proposal/show/google/gsoc2010/noughmad/t127005100494">http://socghop.appspot.com/gsoc/student_proposal/show/google/gsoc2010/noughmad/t127005100494</a><br>
<br>If you can't see it, I included the proposal, but it might be strangly formatted by gmail.<br><br><p>Name: Miha Cancula</p>
<p> </p>
<p>Email Address: <a href="mailto:miha.cancula@gmail.com">miha.cancula@gmail.com</a></p>
<p> </p>
<p>Freenode IRC Nick: Noughmad</p>
<p> </p>
<p>IM Service and Username: Jabber,MSN: <a href="mailto:miha.cancula@gmail.com">miha.cancula@gmail.com</a></p>
<p> </p>
<p>Location (City, Country and/or Time Zone): Ljubljana, Slovenia, 
GMT+02 during the summer.</p>
<p> </p>
<p>Proposal Title: Unified front-end for version control systems in 
KDevelop</p>
<p> </p>
<p>Motivation for Proposal / Goal:</p>
<p>The goal of my project will be to provide a usable plugin-independent
 interface for most used VCS functions within the IDE. KDevelop 
currently has basic views for some functions, but definately all. A 
suitable target would to enable the whole workflow (checkout, modify, 
review the patch, export or commit it) without leaving the program.</p>
<p>If I find any additional time during the summer, I would update and 
improve the Git plugin to support the interfaces that the new front-end 
will use. This will be important because of the planned global switch to
 Git for the whole KDE repository.</p>
<p> </p>
<p>Implementation Details:</p>
<p>KDevPlatform has a module named vcs that includes interface classes 
that are implemented by specific plugins. These classes specify which 
features a particular VCS plugin supports. My work will be writing a set
 of GUI elements for most commonly used VCS features. They might be 
implemented either a dockable Tool Views or separate popup windows. 
These elements will be:</p>
<p>- Repository browser / searcher: It will enable the user to browse a 
remote subversion repository and automatically checkout and import a 
project into the IDE. The goal is to have it work with KDE's repository,
 but really every repository should work. It might require an additional
 interface for the plugins to implement, in this case I will do so in 
the svn plugin. I will try to get it to browse KDE's svn repository and 
Gitorious, as these are the two most used sites for KDE development. Due
 to their differences in structure, I plan to provide two different 
widgets.</p>
<p>- Modified files monitor: This is already available in the existing 
Patch Review Toolview.</p>
<p>- Integrated inline diff viewer: Again, it's already present. The 
widget, however, lacks some useful features, like exporting the patch 
file</p>
<p>These should be available for any version control system. There are 
also some useful features that are only supported or needed for some 
VCS's. KDevPlatform provides specific interface classes for them, so the
 view can easily tell if the current plugin supports these features.</p>
<p>- Branch manager: Will only show up if the current plugin implements 
the IBranchingVersionControl. It will display a list of current 
branches, with actions to switch, merge or delete them. It should be 
able to display diffs between branches.</p>
<p>- Remote repositories tracker: Distributed VCS, like bzr or git, 
often have one local repository (to which you "commit"), but also one or
 more remote ones (to which you "push"). This view will list currently 
setup remote repositories and will allow the user to pull and push to 
them. Remote repositories might have branches as well, so (if supported 
by the plugin) the view will allow matching remote and local branches.</p>
<p>If possible, implementing these features in Git would mean 
implementing additional virtual functions in the Git plugin, currently 
in playground. Some basic functions are already there, I would 
especially like to add those related to the last two parts, branches and
 repositories.</p>
<p> </p>
<p>Tentative Timeline:   Do you have other obligations from late May to 
early August (school, work, vacation, etc.)? Please note that we expect 
the Summer of Code to be a full-time, 40-hr a week occupation. It is 
important to be clear and upfront about other commitments that you may 
have during that time.</p>
<p>I finish school at end of May and have exams in June. However, we 
have another exam perion in september, so there will be no problem in 
postponing the exams until afther the Summer of Code is completed. 
Nevertheless, I won't be able to work full time at the start. The first 
couple of weeks will be a little lighter on the timeline.</p>
<p>Before the start: I will go through all the code related to version 
control in KDevPlatform and KDevelop. I would discuss with the mentor 
and other developers exactly what workflows need the most support. 
During that time the general parts of GUI components would be decided. I
 will try to have the user interface as consistend as possible. Also, I 
will study the current svn plugin and Kdesvn for doing the repo browser.</p>
<p> </p>
<p>Week 1: May 24 - May 30</p>
<p>The first stage of the project will be to design the interface of the
 missing pieces. It is likely we will have to change it several times, 
so I estimate about a week for it. I would begin with the repository 
browser, so the work will go in the same order as the workflow I'm 
trying to support. During this time I will be somewhat busy with school,
 that's why I estimated the entire week for a relatively simple task.</p>
<p> </p>
<p>Weeks 2-4: May 31 - June 20</p>
<p>Next come writing of the actual view for the repo browser. During 
this week I will still have some school obligation, but I will be able 
to postpone it to september. On the back-end side, it will browse the 
<a href="http://svn.kde.org">svn.kde.org</a> repository. It will have to be configurable for accounts and
 will use the anonsvn by default. Browsing will be limited to 
folders-only for folders not manually imported to minimize bandwidth and
 disk space space usage.</p>
<p>Before the start date, I will look into both the current kdevsvn in 
the KDevPlatform trunk and other svn clients like KdeSvn and decide 
which one is most suitable for the task. I will integrate its 
functionality into the view. I will still need custom code for checking 
out and importing the projects, and for determining how much of the 
repository will have to be downloaded.</p>
<p> </p>
<p>Weeks 5: June 21 - June 27</p>
<p>With the repo browser hopefully done, I will move on to the modified 
file and diff viewer widget. The UI will be updated, and I would add 
additional functions, for example  exporting a diff file.</p>
<p> </p>
<p>Week 6-7: June 28 - July 11</p>
<p>At that time, I would start on the more specific features that are 
still  pargely supported, particularely branches. A view will have to be
  created to monitor branches, view differences between them and merge  
them. It will have to be integrated with the diff viewer, especiallly  
for confilict resolution.</p>
<p>My goal for the mid-term review will be the first three components 
(the once that would be used in any VCS) done and the complete "Find, 
checkout, modify, review" workflow supported in the IDE. If there are no
 delays (wishful thinking, I know) I will proceed to the next task.</p>
<p> </p>
<p>Weeks 8-9: July 12 - July 25</p>
<p>Now come the last piece of the plan, a remote repository tracker for 
 distributed version control plugins. This will be more important if a  
Git plugin is also finished. DVCS's store a list of remote repositories 
 to which to push changes and from which to pull updates. This view will
  show all the currently associated repositories, along with information
  about how up-to-date they are, differenced between them, and  
(optionally) branches contained in them. This part is less significant  
if there's no usable Git plugin, so I'm leaving it for the last weeks.</p>
<p> </p>
<p>Weeks 10-11: July 26 - August 9</p>
<p>Finally, I plan to add support for as many new interfaces as possible
 to the Git plugin. That way the previous weeks' work will be used and 
tested with a real implementation. Also, similar to the svn browser, a 
Gitorious search function will be implemented here, along with checkout 
and auto-import functionality. The search will use a different view, 
because of the differences in repository structure between Git and SVN.</p>
<p> </p>
<p>Week 12: August 10 - August 16</p>
<p>After the suggested pencils-down date, I will try to fix any 
remaining glitches. If the timeline turns out to be too steep, I will 
try to finish any uncompleted tasks.</p>
<p> </p>
<p>About Me (let us know who you are!):</p>
<p>I'm a second year Physics student from Ljubljana, Slovenia. Even  
though my main field is physics, I've always been interested in  
computers, especially programming. I attended both the Internation  
Mathematics and Physics Olympiads as part of the Slovenian team, as well
  as several national programming competitions. As a Physics student, I 
 do a lot of programming at school, but also for fun, mostly with KDE  
Development Platform: I am the author of <a href="http://kde-apps.org/content/show.php/Opeke?content=76417">Opeke</a>
 and the new rewrite of <a href="http://kde-apps.org/content/show.php/Knights?content=122046">Knights.</a>
 I also have an unreleased pet project in Qt called Card Game Table,  
it's available on <a title="CGT Gitorious page" href="http://gitorious.org/cgtable">Gitorious</a>. I'm a firm believer  
in free software and I've been useing Linux and KDE exclusively for  
several years now. As a student have a great interest in education  
tools, especially ones for Mathematics and Physics, and I believe  
education is one of the major opportunities of free software. I know C++
  and KDE libraries quite well, although so far mostly from outside. I  
use KDE extensively, but never really contributed anything to them, so  
I'd like to give something back.</p>
<p>I should also note that I applied for the Summer of Code last year,  
also with KDE, but was not accepted. As a first-year student, I really  
didn't have that much programming experience back then, but I believe I 
 learnt a lot during this year, in school and especially by writing  
Knights and CGT.</p><br>