Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
UppHub
Status & Roadmap
FAQ
Authors & License
Forums
Funding U++
Search on this site











SourceForge.net Logo

SourceForge.net Logo

GitHub Logo

Discord Logo

GSoC 2011. Ideas

 

Introduction

 

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.

 

 

Project Ideas

 

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.

 

 

Project requirements

 

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

 

Do you want to contribute?