-
Notifications
You must be signed in to change notification settings - Fork 464
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
James Aimonetti
committed
Mar 23, 2012
1 parent
5efdb85
commit ca0a3c0
Showing
46 changed files
with
579 additions
and
162 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
ROADMAP | ||
======= | ||
|
||
This document explains in as much details as possible the | ||
list of planned changes and work to be done on the Cowboy | ||
server. It is non-exhaustive and subject to change. Items | ||
are not ordered. | ||
|
||
* Write more, better examples. | ||
|
||
The first step would be to port misultin's examples | ||
to Cowboy. Then these examples could be completed with | ||
examples for Cowboy specific features. | ||
|
||
The extend/cowboy_examples is to be used for this. As | ||
it is a separate repository, we can organize the file | ||
structure as appropriate. Ideally we would have one | ||
complete example per folder. | ||
|
||
Examples should be commented. They may or may not be | ||
used for writing the user guides. | ||
|
||
* Write user guides. | ||
|
||
We currently have good API documentation, but no step | ||
by step user guides. | ||
|
||
* Write more, better tests. | ||
|
||
Amongst the areas less tested there is protocol upgrades | ||
and the REST handler. | ||
|
||
Current tests should be completed with unit tests | ||
where applicable. We should probably also test the | ||
dependencies used, like erlang:decode_packet/3. | ||
|
||
While eunit and ct tests are fine, some parts of the | ||
code could benefit from PropEr tests. | ||
|
||
* Continuous performance testing. | ||
|
||
Initially dubbed the Horse project, Cowboy could benefit | ||
from a continuous performance testing tool that would | ||
allow us to easily compare the impact of the changes we | ||
are introducing, similar to what the Phoronix test suite | ||
allows. | ||
|
||
Depending on the test it may be interesting to compare | ||
Cowboy to other servers and eventually take ideas from | ||
the servers that outperform Cowboy for the task being tested. | ||
|
||
* Improve HTTP/1.0 support. | ||
|
||
Most of the work on Cowboy has been done with HTTP/1.1 | ||
in mind. But there is still a need for HTTP/1.0 code in | ||
Cowboy. The server code should be reviewed and tested | ||
to ensure compatibility with remaining HTTP/1.0 products. | ||
|
||
* HTTP 100 Continue support. | ||
|
||
Tools like curl expect a 100 Continue before sending a | ||
request body by default. | ||
|
||
* Content-Encoding support. | ||
|
||
Cowboy should be able to send encoded content automatically. | ||
The default should be to encode, but the developer must be | ||
able to override this default either for the whole listener | ||
or just for a single reply. | ||
|
||
* Improve body reading API. | ||
|
||
We want to have various different things for reading the | ||
body. First, there should be raw functions for the different | ||
ways to read the body: basic, transfer encoded, multipart. | ||
Each should allow us to limit the size of what is read. | ||
|
||
On top of these functions there should be two more | ||
advanced functions: one would return the result of parsing | ||
a x-www-form-urlencoded body; the other would parse a | ||
multipart request, save files from the multipart data to | ||
a temporary location and return a proplist of values if any | ||
along with the files details. This behavior is similar to | ||
what is done automatically by PHP with its $_FILES array. | ||
|
||
The advanced functions are of course here for convenience | ||
only and it should be trivial to reimplement them directly | ||
in a Cowboy application if needed. | ||
|
||
* Complete the work on Websockets. | ||
|
||
Now that the Autobahn test suite is available (make inttests), | ||
we have a definite way to know whether Cowboy's implementation | ||
of Websockets is right. The work can thus be completed. The | ||
remaining tasks are proper UTF8 handling and fragmentation. | ||
|
||
* SPDY support. | ||
|
||
While SPDY probably won't be added directly to Cowboy, work | ||
has been started on making Cowboy use SPDY. | ||
|
||
* Hooks. | ||
|
||
Customizable hooks would allow the developer to extend Cowboy | ||
easily. Two kinds of hooks are needed: before dispatching the | ||
request, and before sending a reply. | ||
|
||
The first would allow us to apply site-wide functions like | ||
authentication or request logging and modify the Req if needed. | ||
|
||
The second is more interesting for response logging or to | ||
filter the replies, for example to send custom error pages. | ||
|
||
* Transport upgrades. | ||
|
||
Some protocols allow an upgrade from TCP to SSL without | ||
closing the connection. This is currently not possible | ||
through the Cowboy API. | ||
|
||
* Resizing the acceptor pool. | ||
|
||
We should be able to add more acceptors to a pool but also | ||
to remove some of them as needed. | ||
|
||
* Simplified dispatch list. | ||
|
||
For convenience purposes, the dispatch list should allow | ||
lists instead of binaries. The lists can be converted to | ||
binary by Cowboy at listener initialization. | ||
|
||
There has also been discussion on allowing the dispatch | ||
list to be hierarchical. | ||
|
||
* Add Transport:secure/0. | ||
|
||
Currently Cowboy checks if a connection is secure by | ||
checking if its name is 'ssl'. This isn't a very modular | ||
solution, adding an API function that returns whether | ||
a connection is secure would fix that issue. |
Empty file.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
Cowboy examples | ||
=============== | ||
|
||
The Cowboy examples can be found in a separate repository: | ||
|
||
* https://github.com/extend/cowboy_examples |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.