GSoC - Google's Summer of Code

From Liberty Eiffel Wiki
Jump to navigation Jump to search

In 2016 the Liberty Eiffel group participated in Google's Summer of Code Program with two projects, see further below.

What is the Google Summer of Code (GSoC)?

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

When will all this happen?

The 2022 timeline has not been finalised yet. As soon as more current information is available, this page will be updated.

Why choosing Liberty Eiffel for the GSoC ?

Liberty Eiffel is the GNU compiler for the Eiffel programming language. It is based on the former academic SmartEiffel project, but evolved with the scope of being usable for real world programs. Eiffel in general is an excellent object-oriented programming language, which includes the specification of the program's functionality within the code. This is nice for debugging and documentation, but also it is a big 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 Liberty Eiffel you can choose from the following ideas.

2016 Projects

GSoC - Windows Support

GSoC - Eclipse Integration

Eclipse integration

suggested by: ramack
summary: Integrate Liberty Eiffel into Eclipse with Syntax highlighting, compilation (and parsing the output) and the sedb debugger
difficulty: Easy
skills: Java knowledge, basic Eiffel knowledge or interest, experience with Eclipse (plugin development) would be good
potential mentors: ramack
notes: Target is to have a Liberty integration similar to the CDT for C. A few years ago the project Eclipse Eiffel Development Tools (EDT) was started, which could be used as starting point, but this project targeted the commercial ISE compiler.


Ideas for future projects

Down below we collect new ideas for future projects:

Emit Standard C11 conforming C code

suggested by: ramack
summary: Make the Liberty Eiffel compiler emit C11 compatible C code without warnings even on the higher warning levels of gcc
difficulty: Advanced
skills: Deep experience in C programming, basic Eiffel knowledge
potential mentors: ramack, HZwakenberg
notes: The goal is not to make the code requiring a C11 compatible compiler (e.g. by using new features), but to remove warnings in strict std modes. Can be extended to apply additional static checkers like cppcheck, pclint, MISRA rules, etc.

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 Liberty Eiffel)
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 (integrated into the test suite and passed) for the new features

EiffelTest-NG

suggested by: ramack
summary: Implement a new version of the tool eiffeltest, to execute the test suite
difficulty: Advanced
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 Liberty Eiffel 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:

Evaluating, selecting and integrating an Open Source ARM C-compiler into Liberty Eiffel's back-end

suggested by: HZwakenberg
summary: In lieu of the project above (Embedded System Readyness) implement an ARM (cross-)compiler backend. As Liberty Eiffel generates Std-C code, this project redefines into evaluating and selecting a suitable open source ARM compiler and integrate it in the Liberty Eiffel system back-end.
difficulty: Easy/Medium
skills: Understanding of C Compiler and a deep understanding of scripting languages to implement integration of the compiler.
potential mentors: ramack, HZwakenberg
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,Cadrian
notes: The option with difficulty "Unmanageable" would be to merge this with Eclipse integration and write the eclipse code plugin in Eiffel ;-)

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 model differs 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, knowledge in floating point arithmetics
potential mentors: Tybor, ramack
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: Tybor, ramack
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 compiler would widen the usage fields available to Eiffel. A naive compiler would be easy; something that doesn'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. Then 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 Liberty Eiffel-GSoC-Ratio (benefit for Liberty Eiffel * 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 Liberty Eiffel community or check the FAQ provided by Google for this program.