GSoC 2011. Ideas
Google Summer of Code 2011 has been announced and this year Ultimate++ project really wants to participate as a mentoring organization.
If you like C++ and you want to use a radical focus to more effective programming we would be happy if you come with us.
Here we will describe you our proposals. We hope you will like them! However you can ask for additional information and we would also like to hear your ideas.
You can introduce yourself in our Forum, discuss with the community these ideas and your proposals adding your personal touches. You can also contact the mentors whose skills can match with your project ideas. This way you can do your own proposals with more possibilities to be approved.
This list is a work-in-progress. You can follow discussions in Forum.
Web Browser Control
Proposed by
Jan Dolinár
Difficulty
High
Experience required
U++, webkit (or any other engine), gcc compiling infrastructure.
Description
This tasks main goal is to create a GUI widget allowing to integrate a web browser engine into U++ applications. Webkit engine is a good candidate for this task as it is fast and reliable, written in C++ and actively developed by large community, but other engines might be used as well.
Mentors
Jan Dolinár
Roadmap
Explore possibility to use libwebkit
Decide how to integrate Webkit in a U++ project (most straightforward possibilities are direct rendering in DHCtrl or rendering into buffer first)
Write a widget binding U++ events to the rendering engine
U++ as a library
Proposed by
Mirek Fidler and others.
Difficulty
High
Experience required
U++, MSC, gcc/mingw compiling infrastructure.
Description
U++ is actually more than a C++ library. However it cannot be integrated easily in projects not developed in the U++ ide TheIde.
The goal would be to develop U++ as a library using TheIde as a resource editor only.
This would imply to create tools and processes that can be integrated with infrastructure server so that U++ can be provided as pure library (or set of libraries).
Create a special mode of TheIDE so that it can be used as resource editor only.
Mentors
TBD
We propose you this roadmap
Study U++ TheIde compiling strategy
Defining and developing the changes in U++ to make projects using make or Visual Studio
Changing TheIde to work with external projects as a resource editor
Selecting theme engine at runtime
Proposed by
Andrei Natanael Cosma (Student)
Difficulty
Low to medium
Experience required
C++
May help knowing to work with TheIDE
Description
You'll have to take U++ code which provide theme for Gnome (gtk+), make it buildable as a *.so file so it may be linked at runtime but also keep the current functionality of being linked statically at compile time (embed in application). Create a portable interface so further theme engines (i.e. for KDE) may be added later.
Mentors
TBD
Roadmap
Get to know U++ basic theming internals
Learn about U++ runtime dynamic linking
Refactor the code
Create new API (glue)
Simple GUI frontend for Git
Proposed by
Jan Dolinár
Difficulty
Low
Experience required
U++, Git.
Description
Create a package wrapping standard git command line into U++ GUI. The package should allow standalone usage as well as integration into other applications.
Mentors
Jan Dolinár, Ion Lupascu (backup)
Roadmap
Get to know usvn, as it provides the very same functionality for SVN version control system
Create a GUI widget providing the basic git functionality (create repository, pull, push, display changes, ...)
Integrate the widget into TheIDE (to allow using it directly with U++ git mirror)
If there is any time left, the functionality can be extended to support more advanced features of distributed versioning systems
U++ port to KDE
Proposed by
Andrei Natanael Cosma (Student)
Difficulty
High.
Experience required
U++, Qt.
Description
The goal is to provide a library which wraps Qt theming API and draw U++ widgets using it.
Right now U++ is using gtk+ theming API which make applications look ugly under KDE and gtk+ libs have to be available in order for application to run.
This library will make U++ non-dependent on a theming API but rather selecting proper theming engine at runtime so application look will be changed based on running context - KDE(Qt based) or Gnome(gtk+ based). If Qt or gtk+ do not exist and user have only X11 server U++ will use its own theming API for drawing widgets.
Roadmap
Learning to work in GNU/Linux U++
Analyzing Gtk+ theming in U++
Applying the right patches to use Qt properly in KDE environments
Mentors
TBD
Distributed build server
Proposed by
Razvan Oprea
Difficulty
High.
Experience required
U++,Servers programming, TheIDE build methodology.
Description
A standalone server that can build source files and return the result to the client. The system would allow N clients to be connected to N servers. The client should be integrated in TheIDE and Visual Studio 2008/2010, with a nice interface displaying some overall statistics regarding the status of the servers.
The hard part is to keep the workload balanced and have the system work with a minimum human interference.
In this project the server can take advantage of the current TheIDE infrastructure creating the possibility for Visual Studio to build with GCC.
The main purpose of the app is to use the computing power of idle workstations in order to speed up the compiling speed for a project. Usually most of the time, the CPU of a machine is not used 100% therefore when other people need to compile a big project the extra power can speed up this process significantly.
Also another advantage of having such a system is the ability to compile and run on other remote platforms making the development for multiple operating systems much easier. The programmer can use the development environment of his choice and compile for any OS that has a build server running. This will increases productivity many times over just because the developer will use TheIDE he is used with (constantly switching between Window and Mac is really a pain).
Having a server with the ability to compile code remotely allows users to create a really powerful build machine keeping the costs of other computers down just because the user has to only run a simple editor. Also, if we take for example the package system of TheIDE, the server can dynamically choose already built sources increasing the build speed even further.
The main purpose of the Distributed Build System is to allow programmers to build projects on multiple machines, but this can be extended even further. For example the server can keep track of the source repository, automated nightly builds, or last stable binary files.
Roadmap
TBD
Mentors
TBD
Google V8 JavaScript in U++
Proposed by
Ion Lupascu
Difficulty
Medium
Experience required
UPP, V8 JavaScript, JavaScript
Description
V8 implements ECMAScript as specified in ECMA-262, 3rd edition, and runs on Windows XP and Vista, Mac OS X 10.5 (Leopard), and Linux systems that use IA-32 or ARM processors. In U++ V8 will be a good choise to create possibility for extensions.
Roadmap
TBD
Mentors
Ion Lupascu
T++ preview inside TheIDE
Proposed by
Peter Helcmanovsky
Difficulty
Easy to Medium
Experience required
C++
Description
Add into TheIDE a way to view edited T++ file without whitespace marks/etc, ie. "preview" mode (Eventually add different preview modes like Qtf/Pdf/Web).
Roadmap
Find and learn about how T++ files are edited and processed for view (there are some examples including Qtf Designer in TheIDE, UWord and uppweb generator).
Check if Qtf Designer can be connected to T++ file editing and what benefits would bring such solution.
Add preview mode to TheIDE.
Eventually add different modes of preview.
Mentors
TBD
Advanced T++ help system
Proposed by
Graeme Prentice
Difficulty
Medium to High.
Experience required
C++
Description
To create a standalone help package possibly based on mdelfede's help viewer. Features:
Structured table of contents in parallel with existing "package reference" help. Anyone can add things or add their own pages locally.
Existing topic++ pages can be linked to and links within those pages work whether they're viewed from the "new" help or existing.
Provide history, favorites, bookmarks and retrace.
Press F1 in source code and the help window shows help for word under cursor i.e. add a mechanism that supports this.
Click on a blue square and you see the topic page in non-edit mode i.e. go straight to Mr Ped "preview mode".
Improve the help search so it takes you to the exact line.
Add "tag word" mechanism so that tag words can be assigned to a topic++ page and searched for.
For extra credit:
Generate pdf with a clickable table of contents and index.
Convert from topic++ format to Google Docs format and vice versa. Google Docs allows simultaneous online changes by multiple users so possibly people could write and maintain an individual help page as a Google doc and import as a topic page when convenient. With a proper help infrastructure, people might become more interested in updating the help and the easier it is, the more likely people are to contribute.
Improve/automate the mechanism for users to submit changes/improvements to the help. Related to the last point, automating the process so that people are more likely to contribute.
Roadmap
Find and learn about how T++ files are edited and processed for view (there are some examples including Qtf Designer in TheIDE, UWord and uppweb generator).
Study mdelfede's help viewer.
TBD
Mentors
TBD
Inter-Process Communication (IPC)
Proposed by
Ion Lupascu
Difficulty
Medium
Experience required
U++, socket, named pipes (POSIX, WINDOWS).
Description
Using IPC can create a stable plugin manager with crash prevent (ex: Google Chrome), running parallel scripts of V8 JavaScript, etc.
A good experience result is chromium project (Google Chrome).
Roadmap
TBD
Mentors
Ion Lupascu
Your project HERE
Remember you as student can propose your own projects. We advice you to read our Forum and contact the mentors that can match with your project.
All U++ community projects have to comply with certain basic requirements. These are included in Bazaar pages.
Package submission and maintenance is described here.
If you need to use community packages you would have to do this.
And if you find any bug or you would like to get any additional feature or improvement, please go here.
As the main U++ platforms are Windows and GNU/Linux it would be important that all projects would support both operating systems leaving open the possibility to, in a future, be implemented in OSX.
Ultimate++ project is proud of its BSD license so we would really prefer that all external libraries to be linked with U++ code would be BSD licensed or similar.
Return to GSoC 2011 Home page
|