Deft is a non-blocking, asynchronous, event driven high performance web framework running on the JVM.
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.
- Optimized for thousands of simultaneous connections
Using pure Java NIO (java.nio & java.nio.channels)
- Asynchronous (nonblocking I/O)
- Event driven
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.
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.
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
- Https support
- Improved Http 1.1 compliance
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.
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).
- 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
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.
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.
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.
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.
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/
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)
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)
JIRA DEFT (Deft)
- Jenkins for continuos integration.
- deftserver.org domain to be transferred to ASF upon incubation.
- 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)
Niklas Gustavsson firstname.lastname@example.org
- Emmanuel Lécharny (Apache Member)
- Mohammad Nour El-Din (Apache Member)
- Mark Struberg (Apache Memeber)
- Apache Incubator PMC