Below you will find a copy of our application to the Google Summer of Code 2010. It is paired with the Google Summer of Code project ideas.
Link ID: eiffel
Group Name: Eiffel Software
Home Page URL: http://www.eiffel.com
Public Email: ...
This project involves contributions to the EiffelStudio open-source development environment, based on the Eiffel language and Design by Contract.
EiffelStudio is a complete development environment available on numerous platforms. The mechanisms include a compiler for the Eiffel language using innovative incremental compilation technology (the "Melting Ice"), browsing, debugging, metrics, diagrams (UML or BON) with full roundtrip capabilities between text and graphics, automatic test generation, automatic test synthesis from failures etc. The EiffelStudio source consists of over 1.5 million source lines of code in Eiffel, complemented by about 100,000 lines of C for the runtime. While this is a large amount of code, with a long history, the simplicity of the Eiffel language and its modular structures make it possible for newcomers to start contributing after a surprisingly short amount of time.
Eiffel: method and language
The Eiffel language is distinguished by the following properties:
- Full object-oriented model (not a hybrid with pre-O-O approaches).
- Genericity (constrained and unconstrained), inheritance (single and multiple).
- Design by Contract mechanisms (preconditions, postconditions, class invariants) for: analysis and design of reliable system; specification; automatic documentation; testing and debugging; control of the exception and inheritance mechanisms.
- Agents (closures, i.e. high-level function objects, with the power of lambda calculus).
- Designed for garbage collection and for highly efficient executables (performance comparable to C or C++).
In addition, Eiffel is not just a language but a method of software development emphasizing software engineering principles such as: seamless development (covering the full lifecycle, not just implementation, in a consistent way); reversibility; uniform access; open-closed principle; command-query separation. These principles are developed in the book "Object-Oriented Software Construction" (Bertrand Meyer, 2nd edition, Prentice Hall), one of the all-time best-sellers in computer science, Jolt Award winner. The consequence for students is that using Eiffel for the Google Summer of Code means the ability not only to produce programs but to learn a software engineering discipline that will help them throughout their career.
Why is your group applying to participate? What do you hope to gain by participating?
For Eiffel Software, the major benefit of participating in the Google Summer of Code is to draw attention to the open-source EiffelStudio IDE and the possibility of triggering innovative developments to it.
While many people are intellectually drawn to the power and elegance of Eiffel, in particular to the concepts of Design by Contract, few of them are aware that this is an open-source project with a ready infrastructure to support those who want to contribute. Many of these people are students in universities.
In April 2007, Eiffel Software officially released the entire contents of EiffelStudio as open source. Almost two years after opening the source code to the community at large, there have been some major contributions to the tool such as the Eiffel Testing Framework. Some others are still work in progress (SCOOP, schema evolution, proofs, ...). We expect this project will raise more awareness of Eiffel and EiffelStudio, both in academia and in the open-source community at large. leading to new exciting contributions.
For students, there are several potential benefits from participating in this project:
- Learning modern high-quality software development in depth. Eiffel is widely recognized as one of the purest and most elegant implementations of object-oriented concepts and modern software engineering practices. Even people who program in other languages testify that practicing serious programming in Eiffel has made them better designers and programmers.
- The concepts of Design by Contract are increasingly recognized as essential to the production of reliable software. Eiffel is the "native language" of Design by Contract and an excellent opportunity to understand the concepts in depth.
- Working on EiffelStudio is a rare opportunity to contribute to a large open-source system, used for professional developments in a variety of industrial and academic applications, and make a difference. The architecture is such that even a student can bring a significant contribution over a summer of development.
Did your organization participate in past GSoCs? If so, please summarize your involvement and the successes and challenges of your participation.
We have applied in the past years but we were not selected for participation
If your organization participated in past GSoCs, please let us know the ratio of students passing to students allocated, e.g. 2006: 3/6 for 3 out of 6 students passed in 2006.
If your organization has not previously participated in GSoC, have you applied in the past? If so, for what year(s)?
We applied the past two years (2008 and 2009) but unfortunately we were not selected. In 2008, it was clearly due to a lack of preparation and the fact that our project ideas list was not clearly presented. We were able to discuss this with Google representatives and in 2009 we submitted a new application taken into account the criticism received. Nevertheless we were not selected.
Soon after, we were invited by Leslie Hawthorn to the FOSS Mentor projects (see http://www.teachingopensource.com/index.php/FOSS_Mentor_Projects) to which we helped putting together. This project was not quite successful as we would have hoped but it clearly helped us preparing ourselves to learn on how to attract students and professors to use our project as a teaching medium.
What is the URL to the ideas list of your organization?
What is the main development mailing list for your organization? This question will be shown to students who would like to get more information about applying to your organization for GSoC 2010. If your organization uses more than one list, please make sure to include a description of the list so students know which to use.
We use a forum and there are subcategories depending on the subject being discussed. The main URL for the forum is http://eiffelstudio.origo.ethz.ch/forum/13
Where is the main IRC channel for your group?
We will not provide a template as we want students to be imaginative in the way they present themselves to us.
What criteria did you use to select the individuals who will act as mentors for your organization?
The most important conditions are:
- The member should be an expert object-oriented developer, with proven design/architecture as well as implementation skills.
- He or she should be thoroughly familiar with the architecture of EiffelStudio, and have contributed to it before.
- They should have some project management experience, and be used to working with students and young engineers.
- Finally, they must understand the purpose of the Google Summer of Code and agree with its objectives.
We have identified a group of such people who will be available as mentors. Some of them are at Eiffel Software. We also will rely on other experienced contributors to EiffelStudio, external to the company, who have expressed interest. Some are Eiffel programmers who contribute to the technology on their spare time. The group of prospective members also includes two researchers from the Chair of Software Engineering at ETH Zurich (the Swiss Federal Institute of Technology), which has extensive experience with Eiffel and has already made major contributions to EiffelStudio, in particular in the area of automated contract-based testing.
What is your plan for dealing with disappearing students?
We will interview all candidates personally to ascertain:
- Their dedication to the project
- Their motivation for participating
- Their competence in software development (the interview will include a mini-exam on programming and software engineering to test this objectively)
We will only accept candidates who do well on all three points.
Every candidate will have to write a project plan describing the goals, the milestones, the criteria for success. The description of goals will have to be prioritized, so that in case of difficulties the corresponding project will produce a subset of the optimal result rather than no usable outcome.
The mentors will establish an explicit communication schedule with their mentees, with regular checkpoints. The project plan will be a working document (Google Docs) shared with the mentor, to allow for frequent feedback and updates, and a comparison of goals with achievements.
The Eiffel approach uses a "cluster model" (see Bertrand Meyer, "Object-Oriented Software Construction", 2nd edition, Prentice Hall, chapter 28), an incremental model in which code appears early in the process. This means that it is essentially impossible with such a model to "hand-wave" one's way through the project by producing (say) numerous UML diagrams and then not implementing them. This incremental nature of the process will enable mentors to check that the students are actually progressing, and to intervene if they are not.
Another highlight of the Eiffel approach is of course the reliance on clearly defined APIs, expressed through contracts. Contract provide a much more precise specification of functionality than ordinary approaches. The student developers will be required to provide contracts for both implemented parts and parts to be implemented. This means that even if a contributor drops out in spite of all the preceding precautions, he or she will leave behind, for the parts not yet implemented, a precise description of the expected functionality, making it easier for someone else to take over.
What is your plan for dealing with disappearing mentors?
Some members are employees of Eiffel Software and the mentoring will be part of their duties. Others will be selected among people who have proved their professionalism, competence and dedication through their actual contributions to released open-source products.
We will put in place a members mailing list and require that members inform each other of the progress of the students they mentor. This means that in the case of a mentor becoming unexpectedly unavailable (illness etc.) another can take over. To be even more proactive we are considering a system of "pair mentoring" where each student has a primary and a secondary mentor, who both know what he or she is doing.
What steps will you take to encourage students to interact with your project's community before, during and after the program?
All projects will be required to have a standard setup, providing them automatically with Wiki pages, a forum, a configuration management (Subversion) repository, signup management etc., plus a Google Docs shared document as noted above.
In addition, the user list at groups.eiffel.com is highly active and provides an excellent sounding board for Eiffel programmers requesting general help from other Eiffel programmers.
What will you do to ensure that your accepted students stick with the project after GSoC concludes?
We will publicize the results in the Eiffel community, which highly values individual contributions. Working with Eiffel is fun and productive, we trust it will keep students motivated to contribute even further after the completion of the Google summer of code 2010.
We also think that this could bring excellent opportunities for students for future work with Eiffel Software or its customers especially if they demonstrate commitment and creativity during the project.
What is the main public mailing list for your group?
Has your group participated previously?
What license does your organization use?
Most of EiffelStudio uses the Gnu Public License, GPL v2.
Some libraries use the Eiffel Forum License, EFLv2. This is a very simple, liberal open-source license whose text is available here