Skip to content

Roadmap

Loïc Hoguin edited this page Aug 14, 2013 · 3 revisions

This document lists the various milestones for the Farwest project, gives a brief overview of what each components are and how one can help get things moving further. There are no dates associated with the milestones.

Farwest 0.2.0

The Farwest prototype as of June 2013. Most of its code will be reworked and cleaned up over time to get a solid foundation for the project. The prototype uses Riak, however the target database for Farwest will be PostgreSQL (with a long term goal of allowing different DB drivers).

Farwest 0.3.0

The Farwest prototype will be cut into different repositories.

Repositories:

  • extend/farwest: A blank Farwest project, ready to be configured and used. It will be compiled and fetch dependencies using erlang.mk and a release is created from it using relx.
  • extend/farwest_core: The only Farwest component required to run a Farwest application. Implements a framework where the different other components plug themselves automatically. Also defines an API for accessing the Farwest components, configuration and data, like routes, templates, user data and files.
  • extend/farwest_ui: Administration interface for Farwest. Allows configuring routes, templates, user data, files all from the comfort of your browser.
  • extend/farwest_auth_ssl: Plugin implementing SSL client certificate authentication. This repository will be created after the plugin system is available.

The code of the extend/farwest repository will be cleaned up and documented. The other repositories will not receive any special care.

The following dependencies are also defined at this point: lager, cowboy, erlydtl, jsx, riakc, dh_date, mimetypes. Some of them will change in future milestones.

The following milestones, 0.4.0 and 0.5.0, will be developed concurrently.

Farwest 0.4.0

The Farwest plugin system will be implemented. Plugins register themselves to Farwest when their application is started. This means that all Farwest plugins are OTP applications, although some of them will not have any other process running than the top-level supervisor. They will however have access to application environment configuration.

  • extend/farwest_core: Implement and document the plugin system.
  • extend/farwest_ui: Use the plugin system to register routes for the Farwest UI.
  • extend/farwest_auth_ssl: Use the plugin system to register the SSL client certificate authentication as a possible authentication mechanism.

Note that this milestone does not have any plans for easy configuration of the authentication mechanism used by extend/farwest_ui.

Farwest 0.5.0

The results of the initial work on the Farwest UI will be merged in. Part of the funds obtained from the fundraiser will be used for this purpose. The focus of this initial work is to get an UI for a dashboard, routes configuration, templates editing, data editing and file upload. The minimal features for each of them is add, edit, delete, and search. The file UI will also feature a viewer to easily view pictures.

Farwest 0.6.0

Replace the riakc dependency by bank_pgsql and switch from Riak to PostgreSQL. Farwest will require one database for its own usage, where the templates, user data and any other bits will be stored.

Farwest 0.7.0

The file storage will be modified to be pluggable.

  • extend/farwest_files_disk: Store the uploaded files directly on disk in the folder configured through an environment configuration value.

Farwest 0.8.0

The repositories for extend/farwest_core, extend/farwest_ui and extend/farwest_auth_ssl will be cleaned and documented. In addition, environment keys will be defined for configuration the authentication mechanism used by extend/farwest_ui.

Farwest 0.9.0

A users table will be created for storing users and their associated details. Resources will be created for allowing users to register, log in, access their account information, modify it, but also resources to view profiles of other users. The resources will not be enabled by default. No interaction between users will be defined. Only a basic session mechanism will be implemented, associated with a presence server.

  • extend/farwest_core: Internal users handling, sessions and presence server will be added.
  • extend/farwest_resources_users: Resources for registering, logging in and so on.

Farwest 0.10.0

Work will be done on the Farwest UI to allow listing users, managing them, banning IP addresses, and everything useful when it comes to managing online crowds.

The Farwest UI for routes will also be enhanced to allow configuring sets of routes (for example for all extend/farwest_resources_users resources) in one go.

Farwest 0.11.0

At that point the fun stuff can begin. A developer API will be defined to access any data from Javascript, send messages to any user and receive messages through Websocket. A Javascript framework will be used and possibly enhanced for Farwest's specific uses.

An interface will be defined on the Erlang's side to allow users to be notified of events, through a message queue implemented directly in the session.

Farwest wishlist

  • extend/farwest_files_leofs: Use LeoFS to store files instead of writing them directly to disk.
  • extend/farwest_auth_basic: HTTP Basic authentication.
  • extend/farwest_auth_cookie: Cookie-based authentication.
  • extend/farwest_auth_digest: HTTP Digest authentication.
  • extend/farwest_auth_oauth2: OAuth2 authentication.
Clone this wiki locally