Updated Projects (markdown)
This commit is contained in:
168
Projects.md
168
Projects.md
@@ -6,62 +6,75 @@ If you are a student, don't hesitate to pick one, or even suggest a new project,
|
|||||||
|
|
||||||
## Evaluate EWF according to the following constraints ...
|
## Evaluate EWF according to the following constraints ...
|
||||||
* _Suggested by **Javier**_
|
* _Suggested by **Javier**_
|
||||||
* See http://www.amundsen.com/blog/archives/1130
|
* _Description:_ According to http://www.amundsen.com/blog/archives/1130 , evaluate the current design of EWF to see if this match the different points. An other option would be to take the following REST implementation toolkit as a guide to evaluate EWF http://code.google.com/p/implementing-rest/wiki/RESTImplementationToolkit.
|
||||||
* Other option is take the following REST implementation toolkit as a guide to evaluate EWF http://code.google.com/p/implementing-rest/wiki/RESTImplementationToolkit.
|
|
||||||
|
|
||||||
## Road to Hypermedia API
|
## Road to Hypermedia API
|
||||||
* _Suggested by **Javier**_
|
* _Suggested by **Javier**_
|
||||||
* describe differents types of Web API, and how you can build them using EWF.
|
* _Supervisor: _
|
||||||
* Describing Pros and Cons.
|
* _Suitability: TODO _
|
||||||
* based on http://martinfowler.com/articles/richardsonMaturityModel.html
|
* _Description: _ describe differents types of Web API, and how you can build them using EWF. Describing Pros and Cons. This should be on http://martinfowler.com/articles/richardsonMaturityModel.html
|
||||||
|
|
||||||
|
|
||||||
## Build a video to demonstrate how an Hypermedia API works, and how to build it using EWF
|
## Build a video to demonstrate how an Hypermedia API works, and how to build it using EWF
|
||||||
* _Suggested by **Javier**_
|
* _Suggested by **Javier**_
|
||||||
* (maybe based on our graphviz example) or and extension to RestBucksCRUD
|
* _Supervisor: _
|
||||||
|
* _Suitability: TODO _
|
||||||
|
* _Description:_ produce a audio+video+slide that demonstrates how to build an hypermedia API using EWF. This could be based on upcoming "graphviz server" example, or an extension of existing RestBucksCRUD example, or any new example.
|
||||||
|
|
||||||
----
|
----
|
||||||
# Works related to EWF / framework / tools
|
# Works related to EWF / framework / tools
|
||||||
|
|
||||||
## Improve EWF
|
## Improve EWF
|
||||||
* _Suggested by **Jocelyn**_
|
* _Suggested by **Jocelyn**_
|
||||||
* Improve encoding support
|
* _Supervisor: _
|
||||||
∗ Better MIME handler
|
* _Suitability: TODO _
|
||||||
* Support for configuration
|
* _Description:_ Improve existing EWF source, this is a permanent task for EWF, and this can be code, documentation, tests, ... Among others , here is a list of needed effort:
|
||||||
* Ready to use logging facilities
|
** Improve encoding support
|
||||||
* Smart handler for HEAD or similar
|
*∗ Better MIME handler
|
||||||
* Adding component to ease the caching functionalities
|
** _Support for configuration _
|
||||||
* Adding Session support
|
** Ready to use logging facilities
|
||||||
* URL rewriting ?
|
** Smart handler for HEAD or similar
|
||||||
* Mass testing
|
** Adding component to ease the caching functionalities
|
||||||
* ...
|
** Adding Session support
|
||||||
|
** URL rewriting ?
|
||||||
|
** Mass testing
|
||||||
|
** ...
|
||||||
|
|
||||||
## Eiffel Web Nino
|
## Eiffel Web Nino
|
||||||
* _Suggested by **Javier & Jocelyn**_
|
* _Suggested by **Javier & Jocelyn**_
|
||||||
* Implement persistent connection
|
* _Supervisor: _
|
||||||
* Complete implementation of Eiffel Web Nino using pool of threads
|
* _Suitability: TODO _
|
||||||
* Complete migration of Eiffel Web Nino to SCOOP
|
* _Description: _ Currently Eiffel Web Nino, is a standalone httpd server written in Eiffel. It is great for development, or embedding httpd component in application. However there are room for improvement so that one can also use it as replacement for apache, iis, ... To reach this state, here are a list of task that should be achieved:
|
||||||
* Improve Nino to become a real solution to host any web services/sites
|
** Implement persistent connection
|
||||||
* ...
|
** Complete implementation of Eiffel Web Nino using pool of threads
|
||||||
|
** Complete migration of Eiffel Web Nino to SCOOP
|
||||||
|
** Improve Nino to become a real solution to host any web services/sites
|
||||||
|
** ...
|
||||||
|
|
||||||
## New EWF connectors
|
## New EWF connectors
|
||||||
* _Suggested by **Jocelyn & Javier**_
|
* _Suggested by **Jocelyn & Javier**_
|
||||||
* LightHTTP connector for EWF
|
* _Supervisor: _
|
||||||
* nginx connector for EWF
|
* _Suitability: TODO _
|
||||||
* ...
|
* _Description:_ EWF is relying on the notion of "connector" to achieve portability on various platform and underlying httpd server, currently EWF support any CGI or libFCGI system (i.e apache, IIS, ...), and provide a standalone version thanks to Eiffel Web Nino. The goal now, would be to support specific connector for:
|
||||||
|
** LightHTTP (http://www.lighttpd.net/)
|
||||||
|
** nginx (http://nginx.org/en/)
|
||||||
|
|
||||||
## Concurrenty and EWF
|
## Concurrenty and EWF
|
||||||
* _Suggested by **Jocelyn**_
|
* _Suggested by **Jocelyn**_
|
||||||
* Make sure EWF is compliant with concurrency, provide example
|
* _Supervisor: _
|
||||||
|
* _Suitability: TODO _
|
||||||
|
* _Description:_ Check that EWF is compliant with concurrency (Eiffel Thread, and SCOOP), and provide an example using concurrency.
|
||||||
|
|
||||||
## Design and build something like Ruby on Rails or Grails
|
## Design and build something like Ruby on Rails or Grails
|
||||||
* _Suggested by **Javier**_
|
* _Suggested by **Javier**_
|
||||||
* i.e a conventional MVC to create Web Sites
|
* _Supervisor: _
|
||||||
* Could be useful even if this is not the taste of everyone
|
* _Suitability: TODO _
|
||||||
|
* _Description: _ Using EWF, design and build the set of tools to provide a conventional MVC to create Web sites. This could be useful even if this is not the taste of everyone.
|
||||||
|
|
||||||
## Provide a Websocket implementation
|
## Provide a Websocket implementation
|
||||||
* _Suggested by **Jocelyn**_
|
* _Suggested by **Jocelyn**_
|
||||||
|
* _Supervisor: _
|
||||||
|
* _Suitability: TODO _
|
||||||
|
* _Description:_ Provide an implementation of websocket with EWF and eventually Eiffel Web Nino, then demonstrate it on a simple example. WebSocket is a web technology providing for bi-directional, full-duplex communications channels over a single TCP connection.
|
||||||
* See http://en.wikipedia.org/wiki/Websocket
|
* See http://en.wikipedia.org/wiki/Websocket
|
||||||
|
|
||||||
----
|
----
|
||||||
@@ -69,73 +82,93 @@ If you are a student, don't hesitate to pick one, or even suggest a new project,
|
|||||||
|
|
||||||
## HAL browser
|
## HAL browser
|
||||||
* _Suggested by **Javier**_
|
* _Suggested by **Javier**_
|
||||||
* written in Eiffel inspired by http://haltalk.herokuapp.com/explorer/hal_browser.html#/
|
* _Supervisor: _
|
||||||
* see http://stateless.co/hal_specification.html
|
* _Suitability: TODO _
|
||||||
|
* _Description:_ Build a HAL browser to discover an API using HAL mediatype. The browser will be able to follow the links, and display the transmitted data. This could be a vision2 application inspired by http://haltalk.herokuapp.com/explorer/hal_browser.html#/. HAL stands for Hypertext Application Language see http://stateless.co/hal_specification.html.
|
||||||
|
|
||||||
## Collection-JSON browser
|
## Collection-JSON browser
|
||||||
* _Suggested by **Javier**_
|
* _Suggested by **Javier**_
|
||||||
* similar to HAL browser but focused on Collection JSON
|
* _Supervisor: _
|
||||||
* see http://www.amundsen.com/media-types/collection/
|
* _Suitability: TODO _
|
||||||
|
* _Description: _ Build a Collection/JSON browser to discover an API using Collection/JSON mediatype. The browser will be able to follow the links, and display the transmitted data. This could be a vision2 application inspired by http://haltalk.herokuapp.com/explorer/hal_browser.html#/. Collection+JSON is a JSON-based read/write hypermedia-type, see http://www.amundsen.com/media-types/collection/
|
||||||
|
|
||||||
## Build a simple CMS with EWF
|
## Build a simple CMS with EWF
|
||||||
* _Suggested by **Jocelyn**_
|
* _Suggested by **Jocelyn**_
|
||||||
* Build a simple CMS website with EWF
|
* _Supervisor: _
|
||||||
* features:
|
* _Suitability: TODO _
|
||||||
|
* _Description: _ Using EWF, Build a simple CMS (Content Management System) framework and then an example. It should provide common features such as:
|
||||||
- user management (register, login, lost password -> send email)
|
- user management (register, login, lost password -> send email)
|
||||||
- page editing
|
- page editing
|
||||||
- blog
|
- blog
|
||||||
- template / theme
|
- template / theme
|
||||||
- persistency / storage / ...
|
- persistency / storage / ...
|
||||||
- extension at compilation time
|
- extension at compilation time
|
||||||
* The result should be used by any user to build his own CMS, and extend it easily.
|
* The result should be usable by any user to build his own CMS website, and extend it easily.
|
||||||
|
|
||||||
## Build P2P connector
|
## Build P2P connector
|
||||||
* _Suggested by **Jocelyn**_
|
* _Suggested by **Jocelyn**_
|
||||||
* Imagine you want to publish a website running on your machine (behing firewall). One would need to initiate the connection via a public website, this is common for P2P software such as remote assistance (i.e: join.me, teamviewer, showmypc, ...)
|
* _Supervisor: _
|
||||||
|
* _Suitability: TODO _
|
||||||
|
* _Description:_ Imagine you want to publish a website (or web service, API) running on your machine (behind firewall). One would need to initiate the connection via a public website, this is common for P2P software such as remote assistance (i.e: join.me, teamviewer, showmypc, ...)
|
||||||
|
|
||||||
----
|
----
|
||||||
# Libraries
|
# Libraries
|
||||||
|
|
||||||
## Hypermedia API library to work with XHTML
|
## Hypermedia API library to work with XHTML
|
||||||
* _Suggested by **Javier**_
|
* _Suggested by **Javier**_
|
||||||
* http://codeartisan.blogspot.com.ar/2012/07/using-html-as-media-type-for-your-api.html
|
* _Supervisor: _
|
||||||
|
* _Suitability: TODO _
|
||||||
|
* _Description:_ Use XHTML as a media type to for hypermedia API. See http://codeartisan.blogspot.com.ar/2012/07/using-html-as-media-type-for-your-api.html
|
||||||
|
|
||||||
## Add support for Mediatype such as RSS, ATOM, ...
|
## Add support for Mediatype such as RSS, ATOM, ...
|
||||||
* _Suggested by **Jocelyn**_
|
* _Suggested by **Jocelyn**_
|
||||||
* Being able to generate, and also consume RSS, ATOM, ...
|
* _Supervisor: _
|
||||||
|
* _Suitability: TODO _
|
||||||
|
* _Description: _ In addition to JSON, HAL, Collection+JSON, XHTML, application might want to support (read and write) standard media type such as RSS, ATOM, ...
|
||||||
|
|
||||||
## Security: provide popular authentication mecanisms
|
## Security: provide popular authentication mechanisms
|
||||||
* _Suggested by **Jocelyn**_
|
* _Suggested by **Jocelyn**_
|
||||||
* OAuth: consumer and provider
|
* _Supervisor: _
|
||||||
* OpenID
|
* _Suitability: TODO _
|
||||||
* Google Connect
|
* _Description:_ Any web service, web site, API need a reliable authentication mechanism, the could be on the server side or the client side to build mashup service (integrate with other web API such as google, flicker, ...). So far, EWF provides only basic HTTP Authorization, and application would need more solutions such as :
|
||||||
* Facebook Connect
|
- OAuth: consumer and provider
|
||||||
* ...
|
- OpenID
|
||||||
|
- Google Connect
|
||||||
|
- Facebook Connect
|
||||||
|
* The goal is to provide component to consume other popular API/service, but also component for your own service so that other can consume it.
|
||||||
|
|
||||||
## Design a state machine to serve response
|
## Design a state machine to serve response
|
||||||
* _Suggested by **Jocelyn**_
|
* _Suggested by **Jocelyn**_
|
||||||
* example: multipage web form
|
* _Supervisor: _
|
||||||
|
* _Suitability: TODO _
|
||||||
|
* _Description: _ In the world of Hypermedia API, the notion of state machine is pertinent, but this could also be used to provide a multi-page web form.
|
||||||
|
|
||||||
## library: Template engine
|
## library: Template engine
|
||||||
* _Suggested by **Jocelyn**_
|
* _Suggested by **Jocelyn**_
|
||||||
* Get inspired by any existing template engine, and build one for Eiffel
|
* _Supervisor: _
|
||||||
|
* _Suitability: TODO _
|
||||||
|
* _Description:_ Get inspired by any existing template engine, and build one for Eiffel, this should be easily usable within a web application. This could be inspired, or implementation of standard template engine, this way people can reuse existing content, or migrate easily their application to EWF. For inspiration, one can look at:
|
||||||
- http://www.smarty.net/
|
- http://www.smarty.net/
|
||||||
- http://mustache.github.com/
|
- http://mustache.github.com/
|
||||||
- ...
|
- http://en.wikipedia.org/wiki/Template_engine_(web) ... they are plenty of them, a comparison of the different engine would help.
|
||||||
* This is not specific to EWF, but it will be very useful in website context
|
* This is not specific to EWF, but it will be very useful in website context.
|
||||||
|
|
||||||
## library: Wikitext, markdown parser and renderer
|
## library: Wikitext, markdown parser and render engine
|
||||||
* _Suggested by **Jocelyn**_
|
* _Suggested by **Jocelyn**_
|
||||||
* Support reading of wikitext, and markdown, and provide HTML rendering
|
* _Supervisor: _
|
||||||
* extension: render wikitext and markdown into Vision2 widget (not related to EWF, but could be useful to build editor)
|
* _Suitability: TODO _
|
||||||
|
* _Description:_ Build component to support (read and write, and why not convert), lightweight markup language (see http://en.wikipedia.org/wiki/Lightweight_markup_language) such as wikitext, markdown, and other. The component should be able to read/scan, but also produce an HTML output. Focus first on wikitext, and markdown since they seems to be the most popular.
|
||||||
|
* Then , a nice addition would be to render those lightweight markup lang into Vision2 widget (not related to EWF, but could be useful to build (editor) desktop application)
|
||||||
|
|
||||||
## library: Web component to build HTML5 widget
|
## library: Web component to build HTML5 widget
|
||||||
* _Suggested by **Jocelyn**_
|
* _Suggested by **Jocelyn**_
|
||||||
* Build set of Eiffel component to ease development of websites
|
* _Supervisor: _
|
||||||
|
* _Suitability: TODO _
|
||||||
|
* _Description: _ Build set of Eiffel components to ease development of websites. First this should be based on HTML5. Idea for components:
|
||||||
- table widget (with sorting ...)
|
- table widget (with sorting ...)
|
||||||
- suggestive typing widget
|
- suggestive typing widget
|
||||||
- tab ...
|
- tab ...
|
||||||
- WYSIWYG textarea widget (could reuse existing JS solution ...)
|
- WYSIWYG textarea widget (could reuse existing Javascript solution TinyMCE, CKEditor, OpenWysiwyg, ...)
|
||||||
- ...
|
- ...
|
||||||
|
|
||||||
----
|
----
|
||||||
@@ -143,29 +176,40 @@ If you are a student, don't hesitate to pick one, or even suggest a new project,
|
|||||||
|
|
||||||
## Libraries: Reusable Client Design based on J.Moore Presentation
|
## Libraries: Reusable Client Design based on J.Moore Presentation
|
||||||
* _Suggested by **Javier**_
|
* _Suggested by **Javier**_
|
||||||
|
* _Supervisor: _
|
||||||
|
* _Suitability: TODO _
|
||||||
|
* _Description: TODO _
|
||||||
* Generic client that can be customized (see design in slide 12)
|
* Generic client that can be customized (see design in slide 12)
|
||||||
* http://s3.amazonaws.com/cimlabs/Oredev-Hypermedia-APIs.pdf
|
* http://s3.amazonaws.com/cimlabs/Oredev-Hypermedia-APIs.pdf
|
||||||
* video http://vimeo.com/20781278
|
* video http://vimeo.com/20781278
|
||||||
|
|
||||||
## Create a Client Cache based on Apache commons Client Cache.
|
## Create a Client Cache based on Apache commons Client Cache.
|
||||||
* _Suggested by **Javier**_
|
* _Suggested by **Javier**_
|
||||||
|
* _Supervisor: _
|
||||||
|
* _Suitability: TODO _
|
||||||
|
* _Description: TODO _
|
||||||
* http://hc.apache.org/httpcomponents-client-ga/httpclient-cache/index.html
|
* http://hc.apache.org/httpcomponents-client-ga/httpclient-cache/index.html
|
||||||
* http://labs.xfinity.com/benchmarking-the-httpclient-caching-module
|
* http://labs.xfinity.com/benchmarking-the-httpclient-caching-module
|
||||||
|
|
||||||
## Add SSL support to Eiffel Net
|
## Add SSL support to Eiffel Net
|
||||||
* _Suggested by **Jocelyn**_
|
* _Suggested by **Jocelyn**_
|
||||||
* Currently Eiffel Net does not provide any support to SSL (thus no HTTPS). For now Eiffel application often use the Eiffel cURL wrapper, but it would be more convenient to use directly Eiffel Net.
|
* _Supervisor: _
|
||||||
|
* _Suitability: TODO _
|
||||||
|
* _Description:_ Currently Eiffel Net does not provide any support to SSL (thus no HTTPS). For now Eiffel application often use the Eiffel cURL wrapper which provide SSL, but it would be more convenient to use directly Eiffel Net. Then find solution to add SSL support to EiffelNet, or to extend EiffelNet with an EiffelNet+OpenSSL solution, or other.
|
||||||
|
|
||||||
## Build clients to consume popular RESTful APIs
|
## Build clients to consume popular RESTful APIs
|
||||||
* _Suggested by **Jocelyn & Javier**_
|
* _Suggested by **Jocelyn & Javier**_
|
||||||
* **Requirement**: OAuth client eiffel component
|
* _Supervisor: _
|
||||||
* Google Discovery APIs
|
* _Suitability: TODO _
|
||||||
* Twitter
|
* _Description: _ Build Eiffel libraries to consume popular web APIs, such as:
|
||||||
* Facebook
|
- Google Discovery APIs
|
||||||
* Github
|
- Twitter
|
||||||
* Flickr
|
- Facebook
|
||||||
* ... etc
|
- Github
|
||||||
|
- Flickr
|
||||||
|
- ... etc
|
||||||
* This should reuse and improve the "http_client" provided by EWF. Eventually also write the EiffelNet implementation to be independant from cURL
|
* This should reuse and improve the "http_client" provided by EWF. Eventually also write the EiffelNet implementation to be independant from cURL
|
||||||
|
* **Requirement**: OAuth client eiffel component
|
||||||
|
|
||||||
----
|
----
|
||||||
# Feel free to add new idea below this line
|
# Feel free to add new idea below this line
|
||||||
|
|||||||
Reference in New Issue
Block a user