Roadmap to BRJS 1.0

In-built EventHub

A key part of building a scalable application is loosely coupled communication between application components. We had an event hub, but took it out as it was a bit too complicated for general use cases. We want to add this key concept back in.

Node.js style client-side code

We don't like the way we currently need to write our JavaScript. We like the Node.js coding style and moduling system. So, we're adding support for it within BRJS applications.

So, an ExampleClass.js will look like this:

var br = require( 'br' );

var Property = require( 'br/presenter/Property');
var PresentationModel = require( 'br/presenter/PresentationModel' );

function ExampleClass() {
  this.message = new Property( "Hello World!" );
};
br.extend(ExampleClass, PresentationModel);

ExampleClass.prototype.buttonClicked = function() {
  console.log( 'button clicked' );
};

Improved Debugging Experience

BRJS presently generates very large bundled JavaScript files which an make debugging difficult. We need to create a way of improving that essential debug workflow.

Simplified Directory Structure

BRJS originally borrowed a lot from Java; the directory structure was one of those things. We've realised that this adds unnecessary complexity to folder structure so we're going to fix this and go with a much simpler, flatter directory structure.

Make BladeSets Optional

BladeSets can be a very useful BRJS feature. But you may not actually need them, especially when you first start building your application.

Make Aspects Optional

As with BladeSets, Aspects are a really powerful feature. But you may not always need multiple aspects into your application. So we're going to make Aspects optional.

Flat File Deployment

The original requirement for BRJS was to be able to create deployable WAR files. This is very restrictive so we're going to add Flat File deployment.

Improved Scaffolding Support

The template shipped with BRJS is presently hard-coded to use Knockout. Since BRJS can be used with other technologies it makes sense to add support for other templates to be created and used when scaffolding applications.

Global Install

For legacy reasons, applications presently have to be located in a set directory within the BRJS install directory. We know this is a pain so we're going to provide a solution that enables a BRJS global install, allowing for your applications to be located anywhere on disk.