Difference between revisions of "GSOC Application"
(→Description) |
(→Description) |
||
Line 16: | Line 16: | ||
*Full object-oriented model (not a hybrid with pre-O-O approaches). | *Full object-oriented model (not a hybrid with pre-O-O approaches). | ||
*Genericity (constrained and unconstrained), inheritance (single and multiple). | *Genericity (constrained and unconstrained), inheritance (single and multiple). | ||
− | *Design by Contract mechanisms (preconditions, postconditions, class invariants) | + | *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). | *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++). | *Designed for garbage collection and for highly efficient executables (performance comparable to C or C++). |
Revision as of 12:17, 11 March 2009
Link ID: eiffel
Group Name: Eiffel Software
Home Page URL: http://www.eiffel.com
Public Email: ...
Description
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 2.2 million source lines of code [***** CHECK ***] 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.
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.
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 has been some major contributions to the tool such as the testing framework. Some others are still work in progress (SCOOP, schema evolution, proofs, ...).
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 and the possibility of contributing. While many people are intellectually drawn to the power and elegance of Eiffel, in particular 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.
We expect this project will raise awareness of Eiffel and EiffelStudio, both in academia and in the open-source community at large.
For students, there are several potential benefits from participating in this project:
- Learning Eiffel in more 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.
What is the main public mailing list for your group?
Where is the main IRC channel for your group?
irc://irc.freenode.net/#eiffelstudio
What criteria do you use to select the members of your group?
Please be as specific as possible.
The most important conditions are:
- The person should be an expert object-oriented developer, with 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. We will also have one or two people 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 testing.
Has your group participated previously?
If so, please summarize your involvement and any past successes and failures.
If your group has not previously participated, have you applied in the past?
If so, for what sort of participation?
We applied last year. However we had not had the time to review the details of the Summer of Code program in depth and our application was judged not precise enough. After it was rejected we were able to discuss in detail with Google representatives what was missing in the application; we prepared the present one on the basis of that discussion, making sure we addressed the criticism received.
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
What is the URL to the ideas list of your organization?
http://dev.eiffel.com/soc_2009
What is the main development mailing list for your group?
What is the application template you would like contributors to your organization to use.?
What is your plan for dealing with disappearing contributors?
We will interview all candidates personally (whenever possible with a voice interview) to ascertain:
- Their dedication to the project
- Their motivation for participating
- Their competence in software development (we will run a mini-exam 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 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 members?
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 contributors to interact with your community before, during, and after the program?
All projects will be required to have a standard setup, through Origo or a similar framework, providing them automatically with Wiki pages, a forum, a configuration management (Subversion) repository, signup management etc. 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 contributors stick with the project after the program concludes?
We will publicize the results in the Eiffel community, which highly values individual contributions, and encourage contributors to submit the best entries to the Eiffel Forum competition.