• If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

Bitburger-BlueRibbon

Page history last edited by Charles Jolley 15 years, 4 months ago

About Blue Ribbon

Blue Ribbon is the code name for the build tools that ship with SproutCore.  For Bitburger, we want to make several improvements to Blue Ribbon that will make SproutCore apps both smaller and better performing:

 

Status

No work done yet.

 

Change 1: Change "clients" to "apps"

Currently bundles are divided into two types: "clients" and "frameworks".  Clients are apps you can actually load in your web browser where frameworks are shared libraries.  Clients generate HTML files; frameworks do not.  We want to rename "clients" to "apps" to make this function easier to understand.

 

  • Rename "clients" to "apps" in the generated bundles.  
  • Rename the "sc-gen client" command to "sc-gen app".  The client variant should remain as an option for backwards compatibility.
  • When searching bundles for apps, look for a clients directory and use that if it exists.  Otherwise, look for an apps directory.

 

Change 2: Framework Packing

We want to allow a framework or app to include the javascript and stylesheet of their dependent frameworks in their files.  This way we can reduce the number of script or style tags needed at load time.  It will also allow us to factor code into many small frameworks without paying a runtime performance penalty.

 

  • You should be able to specify in an sc-config that you want a particular bundle to "pack" its dependent frameworks.  When this option is set, the build tools should generate two additional files in the framework during a build:
    • javascript-packed.js - This file contains the JavaScript for the bundle preceded by the JavaScript for any frameworks the bundle depends on.
    • stylesheet-packed.css - This file contains the CSS styles for the bundle, preceded by the CSS styles for any frameworks the bundle depends on.
  • When you generate a client, any frameworks the clients depends upon that are packed should have their script or style tags generated using the packed version of the file, and script or style tags for dependent frameworks will be omitted.  Note that if you reference several packed frameworks, only the first framework may be able to load packed. 
  • Packed frameworks/clients include the JavaScript or Stylesheets of their dependent frameworks but NOT any other assets.  Hence the bundles for these other frameworks will still need to be produced and installed for the framework to work.

 

Change 2: Nested Frameworks/Clients

A bundle should be able to include other apps or frameworks to an arbitrary depth.  This will allow for much neater organization of content.  It will also allow us to separate SproutCore into a number of smaller frameworks, all available under the same umbrella.  Using the packing feature, the generic sproutcore framework will include what you need to build a desktop app but can be further focused if needed.

 

  • A bundle may contain an "apps" and "frameworks" directory, which may contain other apps or frameworks.  The contents of these directories are not included when the build itself its built.
  • A bundle may contain an sc-config file.  The contents of this file will apply ONLY to the apps or frameworks loaded from that bundle, including the bundle itself.
  • A 'library' or 'project' is essentially a top-level bundle now.  In fact, you could now create a simple app without apps/frameworks directories in them.  We may want to change the default sc-init method to generate this kind of project.

 

Other Tweaks

 

  • Platform support should be pulled out.  Instead, you can break your framework into smaller pieces using the nested frameworks + packing features defined above.

 

Comments (0)

You don't have permission to comment on this page.