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.
- Google Guava (http://code.google.com/p/guava-libraries/, Apache License 2.0)
- Logback (http://logback.qos.ch, Dual license, LGPL 2.1 and EPL v1.0)
- Apache HttpClient (for unit/system tests) (http://hc.apache.org/httpcomponents-client-ga/, Apache License 2.0)
- Ning's Async Http Client (for unit/system tests) (https://github.com/sonatype/async-http-client, Apache License 2.0)
- JUnit (http://www.junit.org/, Common Public License - v 1.0)
- javax.activation (http://mvnrepository.com/artifact/javax.activation/activation/1.1.1, Common Development and Distribution License (CDDL) Version 1.0)
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