1. Implement Ruby langage support in KDevelop4
About
Student: Michaël Larouche
Mentor: Alexander Dymo
Organisation: KDE
Program: KDevelop
Synopsis
This project aim to make Ruby language a first-class citizen into KDevelop 4.x series. Ruby is becoming more and more popular for web development (Ruby on Rails) and for RAD development. Currently, Ruby hasn’t been ported into the new language model of KDevelop 4.x and the foundations need to be done.
Goals
This projet aim to provide:
- Functional Ruby parser convering most of the languages features with unit tests
- Implement the Definition-Use chain model for Ruby used for class/method definition and their usage
- Advanced Ruby code highlighter and problem reporter using the DUChain
- Design of Ruby code completion and implementation if enough time.
Schedule
I am comitting to work about 25-30 hours. This is the most I can do while having a full time summer job at the same time. My majority of the work will be during the weekends.
Task Details
- Fix compilation of Ruby plugin and learn the KDevelop API
Current state of Ruby plugin isn’t updated to latest KDevelop development. Make the Ruby plugin compile with current KDevelop code and learn the KDevelop API at the same time. - Learning the parser/lexer theory by studing current sate of Ruby parser and other parsers in KDevelop
As I don’t know much thing about parsing theory, I need to learn it. Also I need to know the KDevelop way to generate parser and language implementation. - Complete the Ruby parser
RComplete the Ruby parser with newfound knowledges. Write a unit test suite for the parser covering most of the language features before completing the Ruby parser. Writing he unit test will give me a more robust parser at the end. - Implement the DUChain for Ruby
DUChain is a nice way to provide information for a programming language for a IDE. The goal is to implement a DUChain for Ruby using the Ruby parser. For this part, maybe the Ruby interpreter would be needed to be embeded into the chain to resolve dynamic variables. The parser alone isn’t a complete data source for the DUChain. While the parser is important, this is the core of this project. - Make use of DUChain
Use DUChain to implement code model, advanded hightlighting and other features that KDevelop needs. - Code completion
Preparation the code completion of Ruby and implement if enough time.
Why Me
I’ve been involved in KDE 4.x development since late 2005. I’m already familiar with CMake and other constrains of developing in a KDE4 environment. I have a fair amount of knowledge of KDE and Qt API, C++ and I’m aware of design patterns like the Singleton, Composite, Factory, Proxy, Command. Strategy, etc. My KDE implication include Kopete, Solid, Gamefu and kdelibs. Of course I know the Ruby language.
I’m also very interessed in compiler theory and operating system theory and this project give me the opportunity to learn about these domains.
Bio
I’ve been programming since I turned 15 years old and I haven’t stopped since. I have done several projects in C, C++, Delphi, C# before joining the KDE project in May 2005.
My current education is College at “Cégep de Sept-Iles”, where I’ll do my last year this fall in “Technique de l’informatique” (an IT course). After college, I’ll go to university doing a degree in Computer Science. But I’m self taught for the most part.
I have been a Kopete developer since I joined KDE project. I helped with the MSN plugin adding the new features from MSN Messenger 7.0. I added the global identity, including the configuration module and the toolbar widget. I have made the new theme engine for 0.12 release that use Adium message view styles. Recently I worked in KDE4 Kopete port and I’m doing the Telepathy and Messenger protocol plug-in.
I’m also involved in kdelibs and Gamefu and I have done some work in Solid.