Introduction

CodeLite is a mature, open source free IDE (Integrated Development Environment) for the C, C++ and PHP programming languages.
It is used by an estimate of over 500,000 users (over than 600 unique downloads per day). CodeLite is actively developed by Eran Ifrah and David Hart (and other "pull request" contributers).
The main goal we wish to achieve during Google Summer of Code 2015 is to extend the CodeLite user base by expanding to new markets (Python and JavaScript users).

Contact information

CodeLite has an IRC channel, #codelite at irc.freenode.org.
For further contact details please see below.

Administrator


Below is a list of the Administrators for Google Summer of Code.
This list will be updated if needed.

Eran Ifran (eran.ifrah@gmail.com)

Eran will deal with all administration involved with Google Summer of Code.

David Hart (david@codelite.co.uk)

Mentors


Below is a list of the project mentors for this year. This list will be updated if needed.

Eran Ifran (eran.ifrah@gmail.com)

Being a Senior Team Leader, Eran will be the project's primary mentor.

David Hart (david@codelite.co.uk)

Ideas


Python support

  • Extending Python theme support (currently it only supports the 3 main themes while other languages, such as PHP and C++, support over 80)
  • Python Code-Completion
  • Execution of Python scripts from within the IDE

JavaScript support

  • Similar to Python, add support JavaScript code completion

Extending CodeLite's git plugin

The current git plugin supports the basic commands: clone, commit, push, etc. The student would be expected to extend these where necessary, and add support for other, more complex commands. Possibilities are:

  1. Extend the current git diff dialog. This needs extra features e.g. diffs between arbitrary commits; tickboxes for ignore-all-space, show/hide code-linenumbers. This should be relatively easy to implement as it builds on an existing code-base.
  2. Add a git blame dialog. This should, as a minimum, display the 'blame' for a particular file and range of line-numbers, with tickboxes for options such as show-number. It should also provide a way for the user to select one of the displayed commits and be shown its log, and/or its diff. Ideally it will also allow the user easily to travel backwards through the change-history of that range.
  3. Add support for git bisect. The user will enter a known-good and a known-bad commit; then the plugin should build the project at each stage, signalling to the user when each is ready for testing. This is more difficult than the other suggestions as it must interact not only with the user and git, but also with the active project's Build settings.
  4. Implement more git features, depending on time and the student's inclination.

Experience needed: C++ experience essential. Some knowledge of wxWidgets and git would be an advantage.

Difficulty: Low.

Mentor: David Hart

Integrating Google's V8 into CodeLite

The goal is be able to run user code written in JavaScript at crucial points. This is a very ambitious idea, but the general concept is to allow the user to add new features to CodeLite using JavaScript. The student would write one or more plugins in JavaScript that can then be loaded and run inside CodeLite. For this to work the V8 interpreter would need to be embedded into CodeLite, and a set of CodeLite APIs be exposed to V8 to allow JavaScript access to CodeLite internals.

An example would be the ability, before a build is triggered, to run some tests or validations using JavaScript. Something like:


/// Perform some sanity checks before we allow the build to continue
function buildStarting(event) {
    // check that the director /path/to/some/location before we proceed
    if(!checkForDir("/path/to/some/location")) {
        event.abort();
    }
}

CodeLite.registerEventCallback(buildStarting, wxEVT_BUILD_STARTING);

Experience needed: JavaScript and C++ experience an advantage.

Difficulty: Hard

Mentor: Eran Ifrah

Macro-Recorder plugin

The student would first use CodeLite's plugin wizard to create a new 'empty' plugin. He would then add implementation to record keystrokes, button-clicks etc, and store these in a macro. When the user chooses to replay a macro, the plugin should apply the same actions to the current code.

Experience needed: C++ experience essential. Some knowledge of the wxWidgets toolkit would be a considerable advantage.

Difficulty: Medium.

Mentor: David Hart

Edit - History - Print - Recent Changes - Search
Page last modified on February 23, 2015, at 11:15 AM