Difference between revisions of "GSoC - Google's Summer of Code"
(first version of the GSoC "portal") |
Hzwakenberg (talk | contribs) m |
||
(37 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | + | 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 |
+ | 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] |
+ | The 2022 [https://developers.google.com/open-source/gsoc/timeline timeline] has not been finalised yet. As soon as more current information is available, this page will be updated. |
− | = Why choosing |
+ | = Why choosing Liberty Eiffel for the GSoC ? = |
− | + | Liberty Eiffel is the GNU compiler for the Eiffel programming language. It is based on a former academic predecessor 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? = |
= 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 |
+ | 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 |
+ | <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 |
+ | == Emit Standard C11 conforming C code == |
'''suggested by: '''ramack |
'''suggested by: '''ramack |
||
− | <br />'''summary: '''Make the |
+ | <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, |
+ | <br />'''potential mentors: '''ramack, HZwakenberg |
− | <br />'''notes: ''' |
+ | <br />'''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 == |
== 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: ''' |
+ | <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 |
+ | <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, |
+ | <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 |
+ | 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 |
+ | 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 |
+ | 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 12:03, 5 July 2024
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 a former academic predecessor 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
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:
- 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/
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.