Vert.x

The project has been created.

Vert.x

The Vert.x project is a proposed open source project under the RT Project.

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 Eclipse Proposals Forum.

Background

The inspiration for the project came from two main areas:

  1. The growing interest in non blocking, asynchronous approaches to application design motivated by scalability.
  2. 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.

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.

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.

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 one of the most followed Java projects on GitHub

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.

Scope

Vert.x is a framework for the next generation of asynchronous, effortlessly scalable, concurrent applications.

  • Vert.x provides primarily asynchronous APIs for writing truly scalable non-blocking applications
  • Vert.x is polyglot. Developers write their components using JVM languages. Multiple programming languages can be used in a single application
  • 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)

Description

Vert.x is an asynchronous application platform for the modern web and enterprise.

  • 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).
  • 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.
  • 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.
  • 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.

Why Eclipse?

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.

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.

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.

Initial Contribution

The code is written mainly in Java with smaller amounts of Ruby, Groovy, JavaScript and Python.

There have been around 68 contributors during the course of the project. Most of the contributions were in the form of small pull requests.

Legal Issues

The code is mainly licensed under the ALv2. At Eclipse, Vert.x, will be dual-licensed under the ALv2 and EPL.

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.

The largest contributor to the project is Tim Fox - whose copyright is owned by VMware

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.

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)

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

Vert.x currently distributes the following third party libraries

  • Netty 3.5.9 final. License is ASL 2.0
  • Hazelcast 2.4.1. License is ASL 2.0
  • Jackson 1.9.4. License is ASL 2.0
  • Groovy 2.0.5. License is ASL 2.0
  • Mozilla Rhino 1.7R4. License is MPL 2.0

Committers

The following individuals are proposed as initial committers to the project:

  • Tim Fox, Red Hat (lead)
  • Stuart Williams, VMware
  • Norman Maurer, Red Hat

We welcome additional committers and contributions.

Mentors

The following Architecture Council members will mentor this project:

  • Chris Aniszczyk
  • John Arthorne

Interested Parties

The following individuals, organisations, companies and projects have expressed interest in this project:

  • Chris Aniszczyk, Twitter
  • Mark Little, Red Hat
  • Asher Tarnopolski, Exent Technologies
  • Janne Hietamaki, SparkBE
  • Daryl Teo
  • Mark Spritzler
  • Diego López León, IT Crowd Argentina
  • Nate McCall, Apigee
  • Paulo Lopes
  • Bruno Santos
  • Toshihiro Shimizu
  • Norman Maurer, Red Hat
  • Juergen Donnerstag
  • Adam Gent, SnapHop
  • Simone Scarduzio, mpme.com
  • Craig McClanahan, Jive Software
  • Michael Li
  • Martijn Verburg, jClarity
  • Henry Saputra, Platfora (http://www.platfora.com)
  • Nathan Pahucki, Autodesk Inc.
  • Hannes, 3KOLOR GmbH
  • Chen Wang, Volcube
  • Prasad Y, www.pointsoline.com
  • Istvan Pato, lofoo.org
  • Janth Hulha, www.systaro.de
  • Min-Gyu Chung
  • Nathan Pahucki, Autodesk, inc
  • groupon.com
  • Ian Roughley
  • Vicky Kak
  • Raphael Cheun
  • Ken Yee
  • Bartek Zdanowski, TouK sp. z o.o. s.k.a. Poland
  • Igor Akulov, Onwebinar.ru
  • Carter Youngblood
  • Arnold Schrijver, Adnovate
  • Stephan Mulhall, Osgo Solutions www.osgosolutions.com
  • Stephane Maldini, VMware
  • Jon Schneider, conundrum software (http://www.conundrumsoftware.com)
  • Mikael.Karon and Adrian Gonzalez, English First (www.ef.com), Englishtown (www.englishtown.com)
  • Rost Kanyuchenko
  • Pedro Fidalgo Machado
  • Alexander Battisti, Jambit GmbH
  • Joern Bernhardt, Company is Campudus (www.campudus.com)

Project Scheduling

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).

Changes to this Document

Date Change
26-02-2013 Interested parties added.
25-02-2013 Interested parties added.
22-01-2013 Document created