blob: cc6a3575094111716624875129fe9eb19925fa64 [file] [log] [blame]
<!--
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>Vert.x</title>
</head>
<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 Vert.x project is a proposed open source project under the <a
href="http://www.eclipse.org/projects/project_summary.php?projectid=rt">RT 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.
-->
<p>The inspiration for the project came from two main areas:</p>
<ol>
<li>The growing interest in non blocking, asynchronous approaches to application design motivated by scalability.</li>
<li>The recent trend towards stripped down simplicity in APIs and a rejection of complexity that had dominated application platforms
in the previous 10 or more years.</li>
</ol>
<p>In particular the project was influenced by Node.js. There was nothing similar
for the JVM and the idea was formed to create a project superficially similar to Node.js but running on the JVM, and which
could leverage the superior virtual machine. Since the JVM also supported multiple languages (unlike V8) the idea was that the user could choose
from multiple languages in which to code their application.</p>
<p>Initially the project was named 'Node.x' - the 'x' representing the fact that the platform was polyglot, but was renamed
a few months later in order to avoid any potential future trademark issues with Joyent who own the Node.js trademark.
The new name chosen was Vert.x (pronounced 'Vertex') - again the .x representing the polyglot nature of the project, and a vertex is
of course a synonym for a node.</p>
<p>The latest release of Vert.x is 1.3.1, and there is a healthy and growing community. Vert.x has attracted a lot of attention so far
and is currently <a href="https://github.com/languages/Java/most_watched">one of the most followed Java projects on GitHub</a>
<p>Work has already started on Vert.x 2.0 which aims to improve the platform in multiple areas and take the project to
the next level.</p>
<h2>Scope</h2>
<p>
Vert.x is a framework for the next generation of asynchronous, effortlessly scalable, concurrent applications.
</p>
<ul>
<li>Vert.x provides primarily asynchronous APIs for writing truly scalable non-blocking applications</li>
<li>Vert.x is polyglot. Developers write their components using JVM languages. Multiple programming languages can be used in a single application</li>
<li>Vert.x has a very simple concurrency model. Vert.x allows you to write all your code as single threaded, this greatly simplifies development. (No more 'synchronized', 'volatile' or explicit locking)</li>
</ul>
<h2>Description</h2>
<p>Vert.x is an asynchronous application platform for the modern web and enterprise.</p>
<ul>
<li>Vert.x has a very simple concurrency model. Vert.x allows you to write all your code as single threaded, this greatly simplifies development.
(No more 'synchronized', 'volatile' or explicit locking).</li>
<li>Vert.x includes a distributed event bus that spans the client and server side so your applications components can communicate incredibly easily.
The event bus even penetrates into in-browser JavaScript allowing you to create effortless so-called 'real-time' web applications.</li>
<li>Vert.x is modular. It provides a simple yet powerful module system, and a public module repository to encourage an ecosystem of modules published by the community.</li>
<li>Vert.x takes advantage of the JVM and scales seamlessly over available cores without having to manually fork multiple servers and handle inter process communication between them.</li>
</ul>
<h2>Why Eclipse?</h2>
<p>The Eclipse foundation has a proven track record at building healthy environments for open source projects. It also has unique
ecosystem of individuals and organizations who wish to collaborate on commercially-friendly open source software.</p>
<p>For Vert.x to continue to flourish with a vibrant community, it's important that the project is hosted in a neutral
organisation where the aims of any one entity cannot steer the project. We believe the project is owned by the
community and it's up to the community, led by the project lead, to determine the course of the project.</p>
<p>We also believe that good IP management as provided by Eclipse will be a good thing for Vert.x as we aim to get more
use in large enterprises.</p>
<h2>Initial Contribution</h2>
<p>The code is written mainly in Java with smaller amounts of Ruby, Groovy, JavaScript and Python.</p>
<p>There have been around 68 contributors during the course of the project. Most of the contributions were in the form
of small pull requests.</p>
<h2>Legal Issues</h2>
<p>The code is mainly licensed under the ALv2. At Eclipse, Vert.x, will be dual-licensed under the ALv2 and EPL.</p>
<p>
The 'Vert.x' trademark is currently owned by VMWare. As part of joining the Eclipse Foundation, VMWare agrees to transfer rights to the mark to the Eclipse Foundation.
</p>
<p>The largest contributor to the project is Tim Fox - whose copyright is owned by VMware</p>
<p>For most larger contributions the SpringSource CLA should have be signed by the contributor. For small (few line) contributions,
contributors weren't asked to sign a CLA.</p>
<p>The code in the project is almost all licensed by VMware under the ASL 2.0. There a small number of exceptions including
a public domain source file (org.vertx.java.core.http.impl.ws.Base64) and another licensed under the MIT license
(org.vertx.java.core.http.impl.cgbystrom.FlashPolicyHandler)</p>
<p>There are a few files in the project which were taken from previous Red Hat projects (mainly in the websockets implementation),
also licensed under ASL 2.0</p>
<p>Vert.x currently distributes the following third party libraries</p>
<ul>
<li>Netty 3.5.9 final. License is ASL 2.0</li>
<li>Hazelcast 2.4.1. License is ASL 2.0</li>
<li>Jackson 1.9.4. License is ASL 2.0</li>
<li>Groovy 2.0.5. License is ASL 2.0</li>
<li>Mozilla Rhino 1.7R4. License is MPL 2.0</li>
</ul>
<h2>Committers</h2>
<p>The following individuals are proposed as initial committers to the project:</p>
<ul>
<li>Tim Fox, Red Hat (lead)</li>
<li>Stuart Williams, VMware</li>
<li>Norman Maurer, Red Hat</li>
</ul>
<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>Chris Aniszczyk</li>
<li>John Arthorne</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>Chris Aniszczyk, Twitter</li>
<li>Mark Little, Red Hat</li>
<li>Asher Tarnopolski, Exent Technologies</li>
<li>Janne Hietamaki, SparkBE</li>
<li>Daryl Teo</li>
<li>Mark Spritzler</li>
<li>Diego López León, IT Crowd Argentina</li>
<li>Nate McCall, Apigee</li>
<li>Paulo Lopes</li>
<li>Bruno Santos</li>
<li>Toshihiro Shimizu</li>
<li>Norman Maurer, Red Hat</li>
<li>Juergen Donnerstag</li>
<li>Adam Gent, SnapHop</li>
<li>Simone Scarduzio, mpme.com</li>
<li>Craig McClanahan, Jive Software</li>
<li>Michael Li</li>
<li>Martijn Verburg, jClarity</li>
<li>Henry Saputra, Platfora (http://www.platfora.com)</li>
<li>Nathan Pahucki, Autodesk Inc.</li>
<li>Hannes, 3KOLOR GmbH</li>
<li>Chen Wang, Volcube</li>
<li>Prasad Y, www.pointsoline.com</li>
<li>Istvan Pato, lofoo.org</li>
<li>Janth Hulha, www.systaro.de</li>
<li>Min-Gyu Chung</li>
<li>Nathan Pahucki, Autodesk, inc</li>
<li>groupon.com</li>
<li>Ian Roughley</li>
<li>Vicky Kak</li>
<li>Raphael Cheun</li>
<li>Ken Yee</li>
<li>Bartek Zdanowski, TouK sp. z o.o. s.k.a. Poland</li>
<li>Igor Akulov, Onwebinar.ru</li>
<li>Carter Youngblood</li>
<li>Arnold Schrijver, Adnovate</li>
<li>Stephan Mulhall, Osgo Solutions www.osgosolutions.com</li>
<li>Stephane Maldini, VMware</li>
<li>Jon Schneider, conundrum software (http://www.conundrumsoftware.com)</li>
<li>Mikael.Karon and Adrian Gonzalez, English First (www.ef.com), Englishtown (www.englishtown.com)</li>
<li>Rost Kanyuchenko</li>
<li>Pedro Fidalgo Machado</li>
<li>Alexander Battisti, Jambit GmbH</li>
<li>Joern Bernhardt, Company is Campudus (www.campudus.com)</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.
-->
<p>
The project is starting an initial contribution in March 2013. We expect to have the existing code, site and documentation
migrated by end of April 2013 (this assumes that the IP process goes smoothly and quickly).
</p>
<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>26-02-2013</td>
<td>Interested parties added.</td>
</tr>
<tr>
<td>25-02-2013</td>
<td>Interested parties added.</td>
</tr>
<tr>
<td>22-01-2013</td>
<td>Document created</td>
</tr>
</table>
</body>
</html>