Deft Proposal

Abstract

Deft is a non-blocking, asynchronous, event driven high performance web framework running on the JVM.

Proposal

Deft is a web framework that makes using it feel a bit like ordinary Java servlets, but with additional tools and optimizations to take advantage of the underlying non-blocking infrastructure. The framework is distinct from most mainstream Java web server frameworks because it is non-blocking and reasonably fast. It's ideal for real-time web services because it can support thousands of simultaneous idle connections.

Key features:

  • Optimized for thousands of simultaneous connections
  • Using pure Java NIO (java.nio & java.nio.channels)
  • Asynchronous (nonblocking I/O)
  • Event driven

Background

Deft was initially inspired by Facebook's (actually FriendFeed's ) Tornado open source project. Tornado is written in python and was open sourced by Facebook September 2009. Deft was started in October 2010 by Roger Schildmeijer and Jim Petersson, since then, a number of other developers (from different parts of the world) have submitted patches to the project. External contributors have also been involved in the pre-commit review process that Deft has adopted from Apache Cassandra. Currently the project is hosted on github and has 134 watchers and 19 forks.

Rationale

The goals of the project are very much aligned with the goals of the Apache Software Foundation. i.e there is interest in (continuing to) foster a collaborative, consensus based development process, using an open and pragmatic software license, and a desire to create high quality software that leads the way in its field.

Initial Goals

Even though the basic functionality is in place we would like to see the following features included in future releases:

  • More third party libraries that works within Deft's IOLoop
  • Https support for the async http client
  • Optimized buffer usage in the async socket abstraction
  • Template engine
  • Chunked transfer-encoding
  • Websockets
  • Https support
  • Improved Http 1.1 compliance

Current Status

Meritocracy

Deft has been an open source project since day one. The project has transformed from being primarily a two person led (and funded) project to one with a number of diverse participants. Any potentially controversial architecture change is discussed on the public mailing list. Development has been coordinated primarily through a mailing list, pull requests and with some IRC.

Community

Building an active open source community will be one of Deft's top priority. The amount of interest in the project from social networks (like twitter and github) and individual developers and users suggests a strong community will develop once the framework to support one is in place. Currently the Deft community exists out of the core developers, and the users integration Deft in an end-user products (the actual number is unknown).

Core Developers

  • Roger Schildmeijer
  • Jim Petersson
  • Johnathan Meehan
  • Nicholas Whitehead
  • Séven Le Mesle

Other contributors to the project include: William Edwards, Jacob Kristhammar, Rickard Böttcher, ilmich, 1730wang (Nemo), Khaled Essghaier, Mikael Piotrowski

Alignment

Deft is a web framework with a strong focus on speed and asynchronous principles. Some parts of Deft are a complex (especiallt the asynchronous parts) and it makes sense to have a supporting/developing community. Apache provides a solid base with established processes and rules to create such community.

Known Risks

Inexperience with Open Source

The current code that has been developed for Deft is open sourced under the Apache 2.0 license. The majority of the initial developers of Deft are familiar with the Apache model for open-source development.

Orphaned Products

All participants are active users and contributors to open source. One of them (Roger Schildmeijer) has experience as a contributor on the Apache Cassandra open source project.

Homogeneous Developers

Deft's initial set of committers include people that have a strong JVM background, and are spread over a number of countries and different employers.

Reliance on Salaried Developers

None of the developers working on Deft are salaried specifically to work on the project. The initial set of committers will continue to use their spare time to develop Deft.

Relationships with Other Apache Products

Deft has dependencies upon other Apache Projects: HttpClient and Maven. Also, Deft comes with a "built-in" asynchronous http client. It could be worth time to investigate if parts of Apache Mina's async http client could be reused.

An Excessive Fascination with the Apache Brand

The initial set of developers respect the Apache brand and feel that Apache is the right place to establish a healthy open source community. Deft itself will hopefully have benefits from Apache, in terms of attracting a community and establishing a solid group of developers. However, even if this proposal is not accepted, the development will continue. As such, there is no need to, or reason to, "abuse" the brand.

Documentation

Infoq article about Deft: http://www.infoq.com/articles/deft-loft

Deft documentation: http://deftserver.org/

Deft issue tracker and source: https://github.com/rschildmeijer/deft/

Deft Continuous Integration: http://savagesprout.com:8180/jenkins/

External Dependencies

The external dependencies that Deft uses are all Apache license or compatible licenses.

Required Resources

Mailing lists

  • deft-private
  • deft-dev
  • deft-commits
  • deft-user

Subversion Directory

https://svn.apache.org/repos/asf/incubator/deft

Issue Tracking

JIRA DEFT (Deft)

Other Resources

  • Jenkins for continuos integration.
  • deftserver.org domain to be transferred to ASF upon incubation.

Initial Committers

  • Roger Schildmeijer (schildmeijer [at] gmail com)

  • Jim Petersson (jim.petersson [at] gmail com)

  • Jonathan Meehan (jmeehan [at] phasevariance com)

  • Nicholas Whitehead (nwhitehead [at] heliosdev org)

  • Séven Le Mesle (slemesle [at] xebia fr)

Sponsors

Champion

  • Niklas Gustavsson ngn@apache.org

Nominated Mentors

  • Emmanuel Lécharny (Apache Member)
  • Mohammad Nour El-Din (Apache Member)
  • Mark Struberg (Apache Memeber)

Sponsoring Entity

  • Apache Incubator PMC
  • No labels