GSoC - Google's Summer of Code

From Liberty Eiffel Wiki
Revision as of 00:32, 15 February 2016 by Tybor (talk | contribs)
Jump to navigation Jump to search

This year we as LibertyEiffel want to participate in Google's Summer of Code Program. On this site we collect idea for projects. But let's give it all in correct order:

What is the Google Summer of Code?

Summer of Code is Google's program to give students stipends for a 3 months programming task in an open source. Every participating student gets a mentor assigned (early birds might even have a chance to select ;-) who supports with his experience from the community.

When will all this happen?

The timeline is quite terse but the most important dates are application before 25th of March and free time between May 23 and August 23 to work on coding.

Why choosing LibertyEiffel for the Google Summer of Code?

LibertyEiffel is the GNU compiler for the programming language Eiffel. It is based on the academic project SmartEiffel but evolved with the scope of being usable to real world programs. Eiffel in general is a very nice object oriented programming language which includes the specification of the program's functionality within the code. This is nice for debugging but also a step to be able to prove the program correct.

What could I do?

We are open to your ideas, as we are convinced that you will perform best in case you what your heart burns for. Feel free to suggest a project on the mailing list an we will find a mentor or subtasks to add or remove to make it appropriate. In case you just want to do something great for LibertyEiffel you can choose from the following ideas.


Ideas

Windows Support

suggested by: ramack
summary: LibertyEiffel in theory is running several platforms, but recent development was limited to a GNU/Linux environment and for Microsoft Windows no compiler is known to work. Target is to integrate a free C compiler (e. g. PellesC), including necessary fixes to generate accepted C code, add missing implementations for plugins (exec, net), create an installer, run test suite on MS Windows.
difficulty: Easy
skills: Experience with C programming on Windows, basic Eiffel knowledge
potential mentors: ramack, Hans Zwakenberg
notes:

Eclipse integration

suggested by: ramack
summary: Integrate LibertyEiffel into Eclipse with Syntax highlighting, compilation (and parsing the output) and the sedb debugger
difficulty: Easy
skills: Java knowledge, Eiffel knowledge, experience with Eclipse (plugin development) would be good
potential mentors: ramack
notes:

Standard C11 conform C code

suggested by: ramack
summary: Make the LibertyEiffel compiler emit C11 compatible C code.
difficulty: Advanced
skills: Deep experience in C programming, basic Eiffel knowledge
potential mentors: ramack, Hans Zwakenberg
notes: can be extended to apply additional static checkers like pclint, MISRA rules, high C compiler warning levels

ECMA conformance

suggested by: ramack
summary: many ECMA features are already supported, implement the missing ones (beside No-variant agent conformance, which is not planned to be included in LibertyEiffel)
difficulty: Advanced
skills: Deep Eiffel knowledge, willingness to dig into the ECMA standard document
potential mentors: ramack,Cadrian
notes: obviously test cases shall also be derived for the new features

EiffelTest-NG

suggested by: ramack
summary: Implement a new version of the tool eiffeltest, to execute the test suite
difficulty: None/Easy/Advanced/Hard/Unmanageable
skills: Good Eiffel knowledge, interest in Software testing
potential mentors: ramack,Cadrian
notes: the features should include: parallel test execution, time/progress monitoring and estimation, improved test status (ET integration), Coverage measurement (different criteria like Branch, MC/DC)

Embedded Systems Readiness / Static Memory Allocation

suggested by: ramack
summary: Improve the applicability of LibertyEiffel programs to small embedded systems, by introduction of a mechanism to prevent dynamic memory allocation.
difficulty: Hard
skills: Deep understanding of Memory Managment, Eiffel experience
potential mentors: ramack
notes:

Resurrect the compile_to_jvm compiler

suggested by: ramack
summary: Back in the SmartEiffel times there was a JVM backend, which compiled Eiffel to Java bytecode. This should be made working again with an example to build an Android App in Eiffel.
difficulty: Hard
skills: Good Eiffel experience, Knowledge of Java Bytecode and Compiler technology.
potential mentors: ramack
notes:

Verification backend

suggested by: ramack
summary: generate proof obligations from contracts for formal verification, e. g. by generationg of ACSL specifications from the Eiffel contracts to use Frama-C as "verification backend"
difficulty: Hard
skills: background in formal verification, Eiffel experience
potential mentors: ramack
notes:

C++ support wrappers-generator

suggested by: Tybor
summary: Add c++ support to wrappers-generator
difficulty: Advanced
skills: Good c++ knowledge, Good Eiffel experience.
potential mentors: Tybor
notes: C++ support could be a boon yet it would pose quite a few tricky problems as C++ object modeldiffers from Eiffel's in some ways.

Scientific wrappers

suggested by: Tybor
summary: Add wrappers for scientific purposes: complexes, intervals, arbitrary precision integers and floats. Interesting libraries could be:



difficulty: Advanced
skills: Good Eiffel experience.
potential mentors: Tybor
notes: Several GNU libraries would be a nice addition to Liberty yet their wrappers should be expanded types to be really useful.

JavaScript backend

suggested by: Tybor
summary: Implement an Eiffel to Javascript transcompiler
difficulty: Easy/Advanced
skills: Medium Eiffel knowledge, good knowledge of Javascript
potential mentors: ybor,
notes: Javascript is the new "write once run everywhere as it is quickly becoming the new lingua franca of the web. Having an Eiffel to Javascript compielr would widen the usage fields available to Eiffel. A naive compiler would be easy; something that don't require writing tons of glue Eiffel libraries would be quite a harder task. Think about what's to provide "usable" wrappers for libraries such as RaphaelJS or Angular. Their design is all but strongly-typed.


Idea Template Title

suggested by: ramack
summary: Summary of Project Idea (a few sentences)
difficulty: None/Easy/Advanced/Hard/Unmanageable
skills: what skills shall a student bring to do this?
potential mentors: ramack,Tybor,Cadrian
notes: anything further needs to be mentioned?


How can I participate

First you should register to the mailing list. Last you should add a page here in this wiki to present your project proposal and communicate the following:

  • your name and contact data
  • your background (other projects you are/have been involved
  • list of known programming languages (rate with a scale of 3-10, omit the ones you know less)
  • your background and interests (hobbies?)
  • your motivation
  • your timeline (idea is to have 12 week full time, but some planned absence for vacation or exams is acceptable, include milestones and project subtasks, duration of subtask should be in granularity of 1-2 weeks each)
  • your project (what you want to do, why, how, etc. - This is THE main thing we are talking about)

In between (first and last) feel free to discuss ideas and details on list or privately with potential mentors.

Afterwards we will decide which project to accept, based on the subjective estimation of the LibertyEiffel-GSoC-Ratio (benefit for LibertyEiffel * success rate / amount of mentor effort). Note: amount of mentor effort is not linear! Of course the mentors will support you as much as possible, but an Eiffel-newbie working on a compiler-core redesign is just no feasible...

Of course it would be great if you could continue to maintain the project you worked on during GSoC even after the program.

What about additional questions?

See our Get_in_touch page for contact data to the LibertyEiffel community or check the FAQ provided by Google for this program.