<!-- 
	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>
