Difference between revisions of "GSoC - Google's Summer of Code"

From Liberty Eiffel Wiki
Jump to: navigation, search
(first version of the GSoC "portal")
 
m (How can I participate?)
 
(31 intermediate revisions by 4 users not shown)
Line 1: Line 1:
This year we as LibertyEiffel want to participate in [https://developers.google.com/open-source/gsoc/ Google's Summer of Code Program]. On this site we collect idea for projects. But let's give it all in correct order:
+
In 2016 the Liberty Eiffel group participated in [https://developers.google.com/open-source/gsoc/ Google's Summer of Code Program] with '''two projects''', see further below.
   
= What is the Google Summer of Code? =
+
= 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. Every participating student gets a mentor assigned (early birds might even have a chance to select ;-) who supports with his experience from the community.
+
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? =
 
= When will all this happen? =
 
The [https://developers.google.com/open-source/gsoc/timeline 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.
 
The [https://developers.google.com/open-source/gsoc/timeline 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? =
+
= Why choosing Liberty Eiffel for the GSoC ? =
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.
+
Liberty Eiffel 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 an excellent 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? =
 
= 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.
+
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]]
= Ideas =
 
== Windows Support ==
 
'''suggested by: '''ramack
 
<br />'''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.
 
<br />'''difficulty: '''Easy
 
<br />'''skills: '''Experience with C programming on Windows, basic Eiffel knowledge
 
<br />'''potential mentors: '''ramack, Hans Zwakenberg
 
<br />'''notes: '''
 
   
 
== Eclipse integration ==
 
== Eclipse integration ==
 
'''suggested by: '''ramack
 
'''suggested by: '''ramack
<br />'''summary: '''Integrate LibertyEiffel into Eclipse with Syntax highlighting, compilation (and parsing the output) and the sedb debugger
+
<br />'''summary: '''Integrate Liberty Eiffel into Eclipse with Syntax highlighting, compilation (and parsing the output) and the sedb debugger
 
<br />'''difficulty: '''Easy
 
<br />'''difficulty: '''Easy
<br />'''skills: '''Java knowledge, Eiffel knowledge, experience with Eclipse (plugin development) would be good
+
<br />'''skills: '''Java knowledge, basic Eiffel knowledge or interest, experience with Eclipse (plugin development) would be good
 
<br />'''potential mentors: '''ramack
 
<br />'''potential mentors: '''ramack
  +
<br />'''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.
<br />'''notes: '''
 
  +
  +
  +
= Ideas for future projects =
  +
Down below we collect new ideas for future projects:
   
== Standard C11 conform C code ==
+
== Emit Standard C11 conforming C code ==
 
'''suggested by: '''ramack
 
'''suggested by: '''ramack
<br />'''summary: '''Make the LibertyEiffel compiler emit C11 compatible C code.
+
<br />'''summary: '''Make the Liberty Eiffel compiler emit C11 compatible C code without warnings even on the higher warning levels of gcc
 
<br />'''difficulty: '''Advanced
 
<br />'''difficulty: '''Advanced
 
<br />'''skills: '''Deep experience in C programming, basic Eiffel knowledge
 
<br />'''skills: '''Deep experience in C programming, basic Eiffel knowledge
<br />'''potential mentors: '''ramack, Hans Zwakenberg
+
<br />'''potential mentors: '''ramack, HZwakenberg
<br />'''notes: '''can be extended to apply additional static checkers like pclint, MISRA rules, high C compiler warning levels
+
<br />'''notes: '''The target 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 pclint, MISRA rules, etc.
   
 
== ECMA conformance ==
 
== ECMA conformance ==
 
'''suggested by: '''ramack
 
'''suggested by: '''ramack
<br />'''summary: '''many ECMA features are already supported, implement the missing ones
+
<br />'''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)
 
<br />'''difficulty: '''Advanced
 
<br />'''difficulty: '''Advanced
 
<br />'''skills: '''Deep Eiffel knowledge, willingness to dig into the ECMA standard document
 
<br />'''skills: '''Deep Eiffel knowledge, willingness to dig into the ECMA standard document
<br />'''potential mentors: '''ramack,Cadrian
+
<br />'''potential mentors: '''ramack, Cadrian
<br />'''notes: '''obviously test cases shall also be derived for the new features
+
<br />'''notes: '''obviously test cases shall also be derived (integrated into the test suite and passed) for the new features
   
 
== EiffelTest-NG ==
 
== EiffelTest-NG ==
 
'''suggested by: '''ramack
 
'''suggested by: '''ramack
 
<br />'''summary: '''Implement a new version of the tool eiffeltest, to execute the test suite
 
<br />'''summary: '''Implement a new version of the tool eiffeltest, to execute the test suite
<br />'''difficulty: '''None/Easy/Advanced/Hard/Unmanageable
+
<br />'''difficulty: '''Advanced
 
<br />'''skills: '''Good Eiffel knowledge, interest in Software testing
 
<br />'''skills: '''Good Eiffel knowledge, interest in Software testing
<br />'''potential mentors: '''ramack,Cadrian
+
<br />'''potential mentors: '''ramack, Cadrian
 
<br />'''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)
 
<br />'''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 ==
 
== Embedded Systems Readiness / Static Memory Allocation ==
 
'''suggested by: '''ramack
 
'''suggested by: '''ramack
<br />'''summary: '''Improve the applicability of LibertyEiffel programs to small embedded systems, by introduction of a mechanism to prevent dynamic memory allocation.
+
<br />'''summary: '''Improve the applicability of Liberty Eiffel programs to small embedded systems, by introduction of a mechanism to prevent dynamic memory allocation.
 
<br />'''difficulty: '''Hard
 
<br />'''difficulty: '''Hard
 
<br />'''skills: '''Deep understanding of Memory Managment, Eiffel experience
 
<br />'''skills: '''Deep understanding of Memory Managment, Eiffel experience
 
<br />'''potential mentors: '''ramack
 
<br />'''potential mentors: '''ramack
 
<br />'''notes: '''
  +
  +
== Evaluating, selecting and integrating an Open Source ARM C-compiler into Liberty Eiffel's back-end ==
 
'''suggested by: '''HZwakenberg
  +
<br />'''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.
 
<br />'''difficulty: '''Easy/Medium
  +
<br />'''skills: '''Understanding of C Compiler and a deep understanding of scripting languages to implement integration of the compiler.
 
<br />'''potential mentors: '''ramack, HZwakenberg
 
<br />'''notes: '''
 
<br />'''notes: '''
   
Line 67: Line 74:
 
<br />'''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.
 
<br />'''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.
 
<br />'''difficulty: '''Hard
 
<br />'''difficulty: '''Hard
<br />'''skills: '''Good Eiffel experience, Knowledge of Java Bytecode and Compiler technology.
+
<br />'''skills: '''Good Eiffel experience, knowledge of Java bytecode and compiler technology.
<br />'''potential mentors: '''ramack
+
<br />'''potential mentors: '''ramack,Cadrian
  +
<br />'''notes: '''The option with difficulty "Unmanageable" would be to merge this with Eclipse integration and write the eclipse code plugin in Eiffel ;-)
<br />'''notes: '''
 
   
 
== Verification backend ==
 
== Verification backend ==
Line 78: Line 85:
 
<br />'''potential mentors: '''ramack
 
<br />'''potential mentors: '''ramack
 
<br />'''notes: '''
 
<br />'''notes: '''
  +
  +
== C++ support wrappers-generator ==
  +
'''suggested by: '''Tybor
  +
<br />'''summary: '''Add C++ support to wrappers-generator
 
<br />'''difficulty: '''Advanced
  +
<br />'''skills: '''Good C++ knowledge, good Eiffel experience.
  +
<br />'''potential mentors: '''Tybor
  +
<br />'''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
  +
<br />'''summary: '''Add wrappers for scientific purposes: complexes, intervals, arbitrary precision integers and floats. Interesting libraries could be:
  +
* The GNU Multiple Precision Arithmetic Library https://gmplib.org/
  +
* MPFR: multiple-precision floating-point computations with correct rounding. http://www.mpfr.org/
  +
* Mpc: complex numbers with arbitrarily high precision and correct rounding of the result. http://www.multiprecision.org/
  +
* Multi precision intervals http://mpfi.gforge.inria.fr/ https://gforge.inria.fr/projects/mpfi/
 
<br />'''difficulty: '''Advanced
  +
<br />'''skills: '''Good Eiffel experience, knowledge in floating point arithmetics
  +
<br />'''potential mentors: '''Tybor, ramack
  +
<br />'''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
  +
<br />'''summary: '''Implement an Eiffel to Javascript transcompiler
  +
<br />'''difficulty: '''Easy/Advanced
  +
<br />'''skills: '''Medium Eiffel knowledge, good knowledge of Javascript
  +
<br />'''potential mentors: '''Tybor, ramack
  +
<br />'''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 ==
 
== Idea Template Title ==
Line 88: Line 123:
   
   
= How can I participate =
+
= How can I participate? =
First you should register to the [Get_in_touch mailing list]. Last you should post a message there with
+
First you should register to the [[Get_in_touch|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 name and contact data
 
* your background (other projects you are/have been involved
 
* your background (other projects you are/have been involved
Line 95: Line 130:
 
* your background and interests (hobbies?)
 
* your background and interests (hobbies?)
 
* your motivation
 
* 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)
+
* 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)
 
* 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.
+
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...
+
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? =
 
= What about additional questions? =
See our [Get_in_touch] page for contact data to the LibertyEiffel community or check the [https://developers.google.com/open-source/gsoc/faq FAQ] provided by Google for this program.
+
See our [[Get_in_touch]] page for contact data to the Liberty Eiffel community or check the [https://developers.google.com/open-source/gsoc/faq FAQ] provided by Google for this program.

Latest revision as of 18:23, 9 October 2018

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 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 Liberty Eiffel for the GSoC ?

Liberty Eiffel 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 an excellent 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 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 target 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 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.