<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>









  
  
  
  
  
  
  
  
  
  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">









  
  
  
  
  
  
  
  
  
  <title>application.html</title>
</head>


<body>









<small>Name: David Nolden<br>









Age: 25<br>









Residence: Aachen, Germany<br>









Participation: Student of "Computer Science" at RWTH Aachen
University(www.rwth-aachen.de) in the 10th semestre<br>









Email: david.nolden.soc@art-master.de<br>









IM: ICQ: 292699870<br>









<br>









Project: Rock-Solid C++ Support for KDevelop-4</small><br>









<small><br>









</small><span style="text-decoration: underline;">Information about me:</span><br>









<br style="font-weight: bold;">









<small><span style="font-weight: bold;">- Time I expect to have for
this
project:<br>






</span>


</small>
<div style="margin-left: 40px;"><small>During this year's SOC I will need to learn for some important exams. </small><small>I won't be able to do the same heavy lifting I did during my last 2 SOC projects. </small><small>Still I think there will be enough free time for satisfactory outcome.<br>



</small>





</div>









<small>





<span style="font-weight: bold;"><br>



- My general experience:</span><br style="font-weight: bold;">









</small>
<div style="margin-left: 40px;"><small><span style="font-weight: bold;">-
C/C++-development:</span></small><br>









<div style="margin-left: 40px;"><small>When I was about 13 I started
programming with C++, and since that spent a lot of my free time
working on my own 3d-engine until I finished school. During that time i
gathered a lot of experience with general C/C++-programming,
3D-mathematics, high-performance-programming, assember-programming, and
almost any other field that is related to game-programming.</small><br>









<small>In university I've worked for about 2 years on a
speech-recognition-engine, currently taking a break. Since that time I
gathered a
lot of additional experience with team-work and practical experience
with most of the more sophisticated features of C++, since those play a
big role on that project. Now I love those features.</small><br>









</div>






</div>






<small><span style="font-weight: bold;"></span></small><small><br>









<span style="font-weight: bold;">- My development-experience on
kdevelop:</span><br>









</small>
<div style="margin-left: 40px;"><small>More than 2 years ago, I got
the idea to
improve KDevelop-3.4 to remove its shortcomings that bugged me most. I started
with a few small patches, but then got more and more into it. It ended
in a complete rework of kdevelop-3.4's C++ support. Then I
participated on SOC 2 times, working on KDevelop-4. The first project
was kdevelop-teamwork, which added collaboration functionality.
Unfortunately I wasn't able to maintain the result in the way I'd like,
because I was first working on kdevelop-3.4's C++ support, and then
came the next Summer of Code, "Advanced Code Completion for
KDevelop-4". Again I have completed this project successfully, but due
to an incomplete underlying architecture, it became much more work
then originally planned. I have taken maintainership of KDevelop-4's
C++ support, and worked a lot on it since the  SOC ended.<br>






 </small></div>






<small><span style="font-weight: bold;"></span></small>
<div style="margin-left: 40px;"><br>









</div>









<span style="text-decoration: underline;">Information about the Project:</span><br>









<br>









<small><span style="font-weight: bold;">- Synopsis:<br style="font-weight: bold;">






</span>


</small>
<div style="margin-left: 40px;"><small>KDevelop-4 is slowly getting
into a usable state. The C++ support has been making big steps forwards
lately. However there is still a lot of problems, it's far away from
perfect.<br>


<br>


</small></div>


<small><span style="font-weight: bold;">- Project Details:<br>


</span></small>
<div style="margin-left: 40px;"><small style="font-weight: bold;">The most important issues that require significant effort to be solved:</small><br>


<small>
- The in-memory representation of parsed code takes far too much
memory. For example, whole KDevelop-4 still takes more than a gigabyte.</small><br>


<small>
- The parsing is slow.</small><br>


<small>
- The code-representation can not be stored to disk, so everything
needs to be re-parsed when kdevelop is started, and no memory can be
saved by unloading things.</small><br>


<small>- The kate completion-widget is too slow. Currently its
reaction-time still depends on the count of completion-items in a linear way,
and that's really many in the case of C++. I already have an Idea how to fix that though, and the foundation is laid.</small><br>


<small>- Mapping of installed files(for example in /usr/include) to
their source-locations is not handled yet, so refactoring/navigation
across target boundaries cannot work.</small><br>


<br>


<small>
Above that, there is surely still many small problems with the parser,
editor,
navigation, code-model updating, etc. that need to be fixed, and that
can only be found through thorough testing. My idea is that I'd use
KDevelop-4 itself to do the majority of the development work, so
there's a good chance that many of these problems get revealed.</small><br>


<br>


<small style="font-weight: bold;">Nice features:</small><br>


<small>These features can be implemented without too
much effort when the above problems are fixed, and I'd try to
implement them when time allows during SOC:</small><br>


<small>- Semi-automatic adding of
missing include-files when an object is used(For example: You write
"QString str("Test");", and there would be a little popup at the bottom
'QString is currently not reachable, include it through "#include
<QString>"?'</small><br>


<small>- SIGNAL/SLOT completion and use-building(So you could see all
places where a specific signal is used, and intelligently rename a
signal) </small><br>


<small>- Simple refactoring: Implement intelligent renaming and function-signature changing<br>

</small><small>- Implement a simple call-graph viewed through kgraphviewer</small><br>


<small>- Assistance
while implementing functions<br>
- Management of multiple dynamic completion-context. When you have a
function "template<class T> set(T* t)", and jump tou
"set<MyClass>(..)", you shoud get completion within the function
with the template-parameter set accordingly.<br>

</small>
<small>-
Management of custom include-paths for free editing. They could be
stored in a file called .include_paths in the source directory, and
edited through a wizard-like interface within KDevelop: When editing a
non-project file, and no include-paths are available, you could get a
notification at the bottom saying "The included file bla.h was not
found, add custom include path?", then you could easily choose the
location of the file, and KDevelop would add it to .include_paths and
reparse the file, this time finding the include.<br>


<br>


The main target of the project would be fixing the important
issues mentioned first. They require a significant amount of work and
refactoring. Depending on how well that goes, or whether there's
someone else working on relates issues, I'd also implement some or
maybe even all of the items from the "nice features" list. The biggest
job is implementing the disk-storing/loading in a nice way, while still
correctly updating everything, and keeping the representation
consistent. <br>


</small></div>


<br>


<small></small><span style="font-weight: bold;"><span style="font-weight: bold;"></span></span><small> </small>










<small><span style="font-weight: bold;"></span></small><small><span style="font-weight: bold;">



- Timeline:</span></small><br>


<div style="margin-left: 40px;"><small>26. May - Start<br>


20. June - Ready fixing the parsing-speed and memory-usage problems.
The memory-usage problem will need some internal refactoring within the
du-chain.<br>


20. July - Ready with duchain disk-storing/loading implementation. <br>


26. July - Implemented mapping between source- and install-location<br>


5. August - Kate completion-widget worked over again.<br>


18. August - Some/all "nice features" implemented.<br>
<br>


Since most of the development will be done using kdevelop-4 itself,
annoying bugs in C++ support will be fixed through the whole period.
Fixing bugs will be preferred over implementing new features, so if
there's still too many bugs on 5. August, I will try to fix those
instead of implementing goodies in the following time.</small>

<br>





</div>





<small><span style="font-weight: bold;"><small>



</small></span></small><br>


<small><span style="font-weight: bold;"></span></small><small><span style="font-weight: bold;">



- Why you should choose this project:<br>









</span></small>
<div style="margin-left: 40px;"><small>KDevelop-4 is slowly becoming
usable, but isn't there yet. When this project is finished, it might be
the best choice for C++ programming under Linux, with great advantages
over kdevelop-3.4, and more light-weight than eclipse.</small><br>





</div>





<small><span style="font-weight: bold;"><small>



<br>









</small>- Why you should choose me for this project:</span></small><br>


<div style="margin-left: 40px;"><small>- I'm experienced with
KDevelop-4 development, have been one of the most active developers on
KDevelop during the last 2 years, and am experienced with the code-base
this project is going to touch(having written or worked on most parts).<br>


- When this project is finished, KDevelop-4 might start being usable
for C++ development, and thus also start attracting new developers,
maybe getting it out of its hibernation.<br>





</small></div>





<small><span style="font-weight: bold;"><br>









</span></small>
</body>
</html>