| <!-- | |
| This document is provided as a template along with some guidance for creating | |
| your project proposal. This is just a template. Feel free to change it as | |
| you see fit (add sections, remove section). We feel, however, that the | |
| suggestions represented in this document represent the reasonable minimum | |
| amount of information to move forward. | |
| Please keep the formatting in this document simple. Please do not edit | |
| this document in Microsoft Word as it adds huge piles of markup that make | |
| it difficult to restyle. | |
| More information is available here: | |
| http://wiki.eclipse.org/Development_Resources/HOWTO/Pre-Proposal_Phase | |
| Direct any questions about this template to emo@eclipse.org | |
| --> | |
| <html> | |
| <head> | |
| <!-- | |
| Include the title here. We will parse it out of here and include it on the | |
| rendered webpage. Do not duplicate the title within the text of your page. | |
| --> | |
| <title>EMF Parsley</title> | |
| </head> | |
| <!-- | |
| We make use of the 'classic' HTML Definition List (dl) tag to specify | |
| committers. I know... you haven't seen this tag in a long while... | |
| --> | |
| <style> | |
| dt { | |
| display: list-item; | |
| list-style-position:outside; | |
| list-style-image:url(/eclipse.org-common/themes/Phoenix/images/arrow.gif); | |
| margin-left:16px; | |
| } | |
| dd { | |
| margin-left:25px; | |
| margin-bottom:5px; | |
| } | |
| </style> | |
| <body> | |
| <p>The EMF Parsley project is a proposed open source project under the <a | |
| href="http://www.eclipse.org/projects/project.php?id=modeling">Eclipse Modeling Project</a>.</p> | |
| <!-- | |
| The communication channel must be specified. Typically, this is the | |
| "Proposals" forum. In general, you don't need to change this. | |
| --> | |
| <p>This proposal is in the Project Proposal Phase (as defined in the | |
| Eclipse Development Process) and is written to declare its intent and | |
| scope. We solicit additional participation and input from the Eclipse | |
| community. Please send all feedback to the | |
| <a href="http://www.eclipse.org/forums/eclipse.proposals">Eclipse Proposals</a> | |
| Forum.</p> | |
| <h2>Background</h2> | |
| <!-- | |
| Optionally provide the background that has lead you to creating this project. | |
| --> | |
| The Eclipse Modeling Framework (EMF) provides code generation facilities for building tools and applications | |
| based on structured data models. | |
| Using EMF together with other frameworks like, for instance, JFace and Databinding for the user interface | |
| and Teneo or CDO for persistence, we can build powerful model-based UI parts. | |
| However, setting up and assembling all these technologies still requires both deep knowledge | |
| of most internal details and a considerable amount of time. | |
| Moreover, typically, reusing existing UI parts in different applications is | |
| not straightforward. | |
| Our framework aims at providing a set of reusable out-of-the-box UI components based on EMF, | |
| yet highly customizable in a quick way. | |
| <h2>Scope</h2> | |
| <!-- | |
| All projects must have a well-defined scope. Describe, concisely, what | |
| is in-scope and (optionally) what is out-of-scope. An Eclipse project | |
| cannot have an open-ended scope. | |
| --> | |
| The scope of this project is | |
| <ul> | |
| <li>to provide a framework to easily develop | |
| UI components based on EMF models, which hides most of | |
| the complexity of internal details. </li> | |
| <li> | |
| to make the developed components highly reusable and customizable via | |
| Dependency Injection (in particular, Google Guice).</li> | |
| <li> | |
| to provide a set of such components | |
| (e.g., trees, tables, forms, views and editors) | |
| that can be used out-of-the-box | |
| and customized (these can also be seen as reference implementations). </li> | |
| </ul> | |
| We also provide a DSL in order to make all of the above tasks even easier and in | |
| a very compact form. The DSL is implemented in Xtext, thus, it comes with rich | |
| and powerful tooling. | |
| <h2>Description</h2> | |
| <p> | |
| EMF Parsley provides a framework to easily develop | |
| UI components based on EMF models; the framework hides most of | |
| the complexity of internal details, in a way that, to create a JFace viewer | |
| and connect it to an EMF resource, usually requires a few lines of code. | |
| The main design principle underlying this framework is to split responsibilities | |
| into small classes (adhering to the Single Responsibility Principle); thus, customizing | |
| a single aspect of the components requires | |
| to specialize only the class that deals with that specific aspect, not the whole component. | |
| This should maximize code reuse and promote a programming style where the | |
| classes by the programmer are usually very small and deal with not too many | |
| aspects. | |
| </p> | |
| <p> | |
| The framework also comes with some UI components that can be used out-of-the-box | |
| (including trees, tables and forms, and view and editor parts). | |
| Programmers can rely on these components and customize them, or use them | |
| as a reference implementation to build their own components based on | |
| our framework. | |
| </p> | |
| <p> | |
| To customize existing components we rely on Dependency Injection, in particular | |
| using Google Guice. The configuration and setup of Guice modules uses the same | |
| mechanism of Xtext (i.e., binding an implementation class only requires to | |
| write a specific "bind" method in the main Guice module class). | |
| The initial setup of a project which uses EMF Parsley is done via a | |
| project wizard, so that the programmer does not have to deal with these details. | |
| </p> | |
| <p> | |
| Specification of custom behaviors (e.g., label providers, content providers, context menus, etc.) for elements of the EMF model in a component | |
| can be made based on their types, but without requiring long cascades of Java | |
| "instanceof" and casts: we provide a polymorphic method dispatch mechanism | |
| (again, borrowed from Xtext) that allows to write cleaner and declarative code. | |
| </p> | |
| <p> | |
| We also provide a DSL (implemented in Xtext) for making the use of our | |
| framework easier: customizations can be specified in a compact form in | |
| a single file; from that all of the other Java classes are automatically generated | |
| and bound in the Guice module. The DSL provides a fully feature Eclipse editor | |
| and, by relying on Xbase, it provides a Java-like language completely integrated | |
| with Java and Eclipse JDT. | |
| </p> | |
| <p> | |
| Setting up views (like in the following screenshot) only requires a few lines of | |
| Java code. | |
| </p> | |
| <p><img style="height:auto; width:auto; max-width:750px; max-height:750px;" src="mail-app.png"/></p> | |
| <p> | |
| Using the DSL (like in the following screenshot) allows to quickly customize | |
| the components (the corresponding Java code will be automatically generated | |
| by the DSL compiler). | |
| </p> | |
| <p><img style="height:auto; width:auto; max-width:750px; max-height:750px;" src="emf-components-dsl.png"/></p> | |
| <br> | |
| <p> | |
| Regarding the persistence aspect, the framework can handle a generic EMF persistence implementation, like XMI or Teneo, | |
| just providing the EMF Resource's URIs. | |
| It also includes a bundle for handling CDO resources, which takes care of CDO Sessions and Transactions transparently. | |
| </p> | |
| <p> | |
| All sources are covered by test, both with JUnit and SWTBot. Tests are already integrated in the Continuous Integration system implemented with Jenkins. | |
| </p> | |
| <p> | |
| Also the building and update site architecture is already setup and implemented with Buckminster. The latest is heavily used throughout the whole development cycle, | |
| starting from the workspace and platform materialization up to headless building and continuous | |
| integration. | |
| </p> | |
| <p> | |
| In addition to be used to render RCP UI, the framework is out-of-the-box ready to be used for RAP development. | |
| </p> | |
| <p> | |
| The framework that is closer to our proposal is EMF Client Platform. However, while the latter | |
| aims at providing a quick way of obtaining a full application based on EMF, EMF Parsley | |
| aims at providing single smaller and reusable components. Moreover, our components are | |
| not customized via extension points, but using injection with plain Java and with a DSL. | |
| </p> | |
| <!-- | |
| Describe the project here. Be concise, but provide enough information that | |
| somebody who doesn't already know very much about your project idea or domain | |
| has at least a fighting chance of understanding its purpose. | |
| --> | |
| <h2>Why Eclipse?</h2> | |
| <!-- | |
| Answer these two questions: What value does this project bring to the Eclipse | |
| community? What value do you expect to obtain from hosting your project at Eclipse? | |
| What value do you get by having your project at Eclipse over and above the value | |
| of hosting at Eclipse Labs? | |
| --> | |
| <p>This project leverages and integrates very well with many widely-used Eclipse projects | |
| (e.g., EMF, JFace, Xtext, CDO). | |
| Our purpose is to give it the broader visibility among individuals, developers as well as companies. | |
| Eclipse offers the right higher reliability in terms of long-term support, | |
| so that it is expected to attract more interest and participation from other parties. | |
| This will lead to greater market penetration, while improving quality and reducing development costs.</p> | |
| <h2>Initial Contribution</h2> | |
| <!-- | |
| Projects are expected to arrive at Eclipse with existing code. | |
| Describe the existing code that will be contributed to the project. Please provide | |
| a couple of paragraphs describing the code with modest detail, including important | |
| information like code ownership (who holds the copyright?), and some consideration | |
| of community that exists around the code. Include a listing of third-party libraries | |
| and associated licenses. | |
| --> | |
| <p>The initial contribution consists of the following sources, material and architecture already setup for | |
| the current EMF Parsley repository at | |
| <a href="http://eclipselabs.org/p/emf-components">EclipseLabs</a>, which include: | |
| <ul> | |
| <li>Basic Components (widgets and parts)</li> | |
| <li>EMF persistence (i.e. for XMI or Teneo)</li> | |
| <li>CDO persistence</li> | |
| <li>DSL Editor and code generator</li> | |
| <li>RAP integration bundle</li> | |
| <li>Eclipse 4 enabled</li> | |
| <li>Examples</li> | |
| <li>Help Documentation and Tutorials</li> | |
| <li>Tests, Continuous Integration, Build and Update Site infrastructure</li> | |
| </ul> | |
| <p> | |
| <p> | |
| Note that at the moment, the packages of our framework do not include org.eclipse.*; | |
| we plan to change it from it.rcpvision.emf.components.* to org.eclipse.emf.parsley.* | |
| if the proposal is accepted. | |
| </p> | |
| <h2>Legal Issues</h2> | |
| <!-- | |
| Please describe any potential legal issues in this section. Does somebody else | |
| own the trademark to the project name? Is there some issue that prevents you | |
| from licensing the project under the Eclipse Public License? Are parts of the | |
| code available under some other license? Are there any LGPL/GPL bits that you | |
| absolutely require? | |
| --> | |
| All contributions will be distributed under the Eclipse Public License. | |
| <h2>Committers</h2> | |
| <!-- | |
| List any initial committers that should be provisioned along with the | |
| new project. Include affiliation, but do not include email addresses at | |
| this point. | |
| --> | |
| <p>The following individuals are proposed as initial committers to the project:</p> | |
| <dl> | |
| <dt>Lorenzo Bettini, University of Turin</dt> | |
| <dt>Francesco Guidieri, RCP Vision</dt> | |
| <dt>Vincenzo Caselli, RCP Vision</dt> | |
| </dl> | |
| <p>We welcome additional committers and contributions.</p> | |
| <!-- | |
| Describe any initial contributions of code that will be brought to the | |
| project. If there is no existing code, just remove this section. | |
| --> | |
| <h2>Mentors</h2> | |
| <!-- | |
| New Eclipse projects require a minimum of two mentors from the Architecture | |
| Council. You need to identify two mentors before the project is created. The | |
| proposal can be posted before this section is filled in (it's a little easier | |
| to find a mentor when the proposal itself is public). | |
| --> | |
| <p>The following Architecture Council members will mentor this | |
| project:</p> | |
| <ul> | |
| <li>Ed Merks</li> | |
| <li>Eike Stepper</li> | |
| </ul> | |
| <h2>Interested Parties</h2> | |
| <!-- | |
| Provide a list of individuals, organisations, companies, and other Eclipse | |
| projects that are interested in this project. This list will provide some | |
| insight into who your project's community will ultimately include. Where | |
| possible, include affiliations. Do not include email addresses. | |
| --> | |
| <p>The following individuals, organisations, companies and projects have | |
| expressed interest in this project:</p> | |
| <ul> | |
| <li><a href="http://www.rcp-vision.com/">RCP Vision</a></li> | |
| <li><a href="http://www.egicon.it/">EGICON</a></li> | |
| <li>Daniel Golesny</li> | |
| </ul> | |
| <h2>Project Scheduling</h2> | |
| <!-- | |
| Describe, in rough terms, what the basic scheduling of the project will | |
| be. You might, for example, include an indication of when an initial contribution | |
| should be expected, when your first build will be ready, etc. Exact | |
| dates are not required. | |
| --> | |
| Initial contribution is ready to be published. | |
| <h2>Changes to this Document</h2> | |
| <!-- | |
| List any changes that have occurred in the document here. | |
| You only need to document changes that have occurred after the document | |
| has been posted live for the community to view and comment. | |
| --> | |
| <table> | |
| <tr> | |
| <th>Date</th> | |
| <th>Change</th> | |
| </tr> | |
| <tr> | |
| <td>23-April-2013</td> | |
| <td>Eclipse 4 enabling updates, documentation added</td> | |
| </tr> | |
| <tr> | |
| <td>23-April-2013</td> | |
| <td>Interested parties added, resize images</td> | |
| </tr> | |
| <tr> | |
| <td>17-January-2013</td> | |
| <td>Document created</td> | |
| </tr> | |
| </table> | |
| </body> | |
| </html> |