Skip to content

App Organization #23

Description

@formula1

So this started off being about the removal of bower, but I think its a good time to understand what Silk does/doesn't, what an app does/doesn't and how we plan to process it

app.json -> package.json

Since npm is the package manager of everything, it makes it easier for us to just add parts onto the package.json. This is common in things like jscs, js-lint and other linters. For our purposes, we ought to allow both implementations but a few things should be made clear

  • the dependencies are resolved and installed by npm and bower
  • Gui aspects like icons, titles, index.html and etc are handled by us

Usage of WebComponents: bower, browserify and the future

Currently we are using tablesaw and materialize in an important way inorder to provide applications to the client. However, as applications become more isomorphic the destinction between client and server starts to fade. In my opinion, this puts us in an awkward situation.

  1. Web components are used in the wild and allows users to easily make beautiful websites
  2. React may be a fad but the shadow dom will eventually become a staple in the future
  3. Bower is a common place for these aspects and its difficult to find another place where css, html and javascript are all available in the same place

We probably shouldn't remove bower but we should take a heavy look in how how we want to install "building blocks" for applications and how we want to ensure these aspects are available

Files/Streams, "auto-open", choose an application

I put files and streams in the same boat because at some point I think we will want to implement a similar situation for audio, video and streaming text (ansii characters from the terminal as an example)

As it stands we are using regex which is likely not the best implementation. By basing it off something like accepts we have a further integrated ourselves in a web standard (http headers). And as those get updated, we get updated.

As for streams, this is also particularly important to me simply because streaming video/audio is something I use daily (twitch.tv) and I strongly believe its something that we can benefit from.

Routing: A node application, a seperate environment, a terminal interface or more?

Looking into the future, eventually rendering of an html will likely be done through a node application. Something to the effect of

var request_router = Silk.getRequestRouter();
var live_router = Silk.getLiveRouter();
var monitor = NodeOs.getMonitor();
var speakers = NodeOs.getStereo();
var www = NodeOs.getNetworkAdapter();
var window = new WebRender(monitor, speakers, www, web_router, live_router);
window.goto("./index.html");

Looking towards this future what eventually happens is instead of of client application sending text through websockets we will be sending them directly through node. Since this case we should also be thinking of our apps in this way as well. Apps ability to change through own router is imperitive in addition to our own ability to add and remove them as well.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions