Main Page | Recent changes | Edit this page | Page history

Printable version | Disclaimers | Privacy policy

Not logged in
Log in | Help
 

Google SOC 2006 Project Proposals

From KDevelop

Contents

[edit] Summer of Code 2006 Project Proposals

Please add any Google Summer of Code project proposals to this page. If you are willing to be a mentor for a particular proposal, please add your name to the proposal too. Matt Rogers and Alexander Dymo are willing to mentor any project on this page if the project or the student does not already have a mentor. Mentors for the individual idea should be contacted first.

Also, if you have your own project idea related to KDevelop, please subscribe to the developer mailing list, send it there and you might get some valuable feedback and perhaps even find a mentor!

[edit] Sequence charts

[edit] Summary

To understand a complex program, one has to look not only at static aspects (class inheritance and containment relationship), but also on dynamic aspects (in which order object invoke each other' methods). The plan to to make KDevelop visualize dynamic aspects of program design, in form of sequence or collaboration diagrams alike to UML.

[edit] Use case

User starts a program and indicates to KDevelop a number of objects he's interested in. He can either say he's interested in calls to all methods on those objects, or additionally indicate "interesting" methods. Qt slots are not different from ordinary methods here.

The user then runs the program. KDevelop inserts breakpoints for all interesting methods, and records when the methods are called, with that arguments and what they return. Using that information, it produces sequence and collaboration diagrams and shows them to the user.

[edit] Technical details

The implementation should draw upon "tracepoints" mechanism present in KDevelop debugger part. It's possible to either implement new kind of tracepoints specially for this purpose, or allow to specify JavaScript actions for breakpoint hit, and implement digram drawing using JavaScript. It is desirable to show the diagrams using Umbrello, and make it possible to export diagrams to XMI format that Umbrello can understand. To avoid technical issues, this work should be done on KDevelop 3.4 codebase.

Possible mentor for this project is Vladimir Prus.


[edit] Next-gen version control

[edit] Summary

Existing GUI tools for version control are not extremely helpful for real tasks. It's needed to carefully consider what users really want from version control and make is as simple as possible.

[edit] Use cases

[edit] Technical details

This project should be done with KDevelop 4 and KDE 4. As such, the student should become very familiar with the Qt 4 model/view framework. The work for the actual version control system (not the patch handling) will need to be implemented as a set of interfaces that pluggable backends can implement to provide services. At least one backend should be implemented. The KDevelop project would prefer that subversion is the backend implemented but the student is free to implement a backend of his or her choosing.

Possible mentors for this project include:

[edit] Issue manager

[edit] Summary

An important part of open-source is handling bug reports and patches. Usable issue trackers exist, but fully integrating an issue tracker into IDE will bring even more benefits.

[edit] Use cases

Possible mentors for this project are:

[edit] Unified code/header editing

[edit] Summary

In C++, headers and implementation are separate (unlike Java and C#). Some users try to use a "unified" style in C++ too, by writing all methods inline in headers. However, since C++ lacks a module system, this approach is not practical for large projects. The idea is to create the illusion of a "unified" style while retaining header/code separate at the filesystem level.

[edit] Use case

User selects "new class" command. KDevelop creates .h and .cpp files (properly generating header guard and namespaces), and shows to the user a single window. User writes the class with methods defined inside the class. KDevelop internally modifies the .h and .cpp files, writing only method prototypes to .h files, and only implementation to .cpp files.

The important points to consider are:

Possible mentor for this project is Vladimir Prus.

[edit] C# parser / integration

[edit] Summary

As .NET and Mono are becoming more important for Linux and cross-platform development, KDevelop would benefit from proper C# support part. One important step to reach this goal would be a C# parser that recognizes source code and integrates with KDevelop's code model, so that features like code completion and class/method navigation become available.

[edit] Technical details

KDevelop4 parsers should be written with the help of the kdevelop-pg parser generator because KDevelop4 refactoring will be based on it. The lexer could be done with Flex or re2c. It might be a good idea to simply transform another public domain C# parser (like one for ANTLR) into a kdevelop-pg grammar.

The parser will essentially be independent from KDevelop. When it's done it needs to be hooked up with KDevelop, providing an initial C# language support part.

[edit] Accepted

This project has been accepted and was implemented by Jakob Petsovits, with Alexander Dymo as a mentor and Adam Treat providing additional guidance.

[edit] KDevelop IDE User Interface Design and Development

[edit] Summary

Good UI design is the key for success of KDevelop IDE. The interface should be usable and represent all features, good-looking and at the same time pragmatic, easy to use and at the same time powerful. The emphasis on keyboard-only navigation should be made to make project development as fast as possible.

[edit] Technical details

The design should be documented and sent to the kdevelop-devel@kdevelop.org mailing list for discussion and approval. The KOffice UI competition examples and rules are applicable here. Special care should be taken to the workflow. See for example this thread.

Once the design is approved, the UI library should be written. UI library should be as independent of KDevelop as it is possible. Ideally, it should depend only on Qt and KDE libs. Interests of all KDE projects using KMDI library should be taken into account. Finally the UI library should be incorporated into the KDevelop shell.

The development should be taken in KDevelop trunk (i.e. KDevelop4 version) with Qt4 and kdelibs4.

Possible mentor for this project is Alexander Dymo.

[edit] Teamwork Mode

[edit] Summary

Allow developers to exchange and automatically apply patches, share documents and work on the same document in real time.

[edit] Technical details

Allowing collaborative editing of the same document in real time will require the support of the editor. The student will have to work closely with the kate project in addition to the kdevelop project in order to add that collaborative editing functionality.

[edit] Accepted

This project has been accepted and was implemented by David Nolden. Matt Rogers is the mentor for this project.

[edit] Add support for distributed compiling

Provide a way for KDevelop to detect and use distributed compiling functionality as provided by distcc or icecream. It should require as little configuration on the part of the user as possible. The user should also have the ability to turn it on and off as necessary.

[edit] Static code analysis

Quality check code with extendable lint-like rules. Some ideas of the checks to implement:

[edit] Auto testing integration

Add support for testing frameworks to KDevelop. Functionality would include but is not limited to:

Retrieved from "http://www.kdevelop.org/mediawiki/index.php/Google_SOC_2006_Project_Proposals"

This page has been accessed 13,398 times. This page was last modified 23:59, 17 December 2006. Content is available under GNU Free Documentation License 1.2.


[Main Page]
Main Page
Community portal
Current events
Recent changes
Help
Donations

Edit this page
Discuss this page
Page history
What links here
Related changes

Special pages
Bug reports