Bitburger-Introduction


Bitburger is the code name for SproutCore 1.0. The purpose of this project is to finish the remaining changes that are necessary to reach a Beta candidate. That means SproutCore must be “feature complete” according to the targets outlined here, and it must generally function on all platforms.

 

If you are interested in testing or hacking Bitburger, this wiki page will introduce the objectives of the project, the current work plan, and finally describes both how to try Bitburger yourself and how to hack/make contributions.

 

Status

The project is currently in beta state.  All major APIs are complete.  Only bug fixes remain.  Bitburger has a full suite of unit tests but they are not verified to run on all platforms yet.  

 

Bugs that need to be fixed will be documented in our Lighthouse bug tracker, tagged as "bitburger" and "beta"

 

Useful Links

 

Purpose

The purpose of SproutCore is to make it easy for anyone to create a desktop-quality application experience in the web browser without the use of plugins. Currently SproutCore delivers a lot of functionality in a fairly small API, including some unit build tools However, there are some areas in both performance and API ease-of-use that we could still improve.

 

We’d like to hit a baseline with 1.0 that will make it obvious to any casual developer that SproutCore is the best way to build their next rich thick-client web application.

 

Objectives

Specifically, we plan to address the following areas in Bitburger:

 

  1. Performance and Memory Consumption with Large Data Sets – In particular the performance of bindings, observers, the data store and views should work well when working with large data sets.
  2. Make Timing More Consistent – When a property changes, the way that change propogates through all of the objects in the system via bindings and observers should be consistent and easily predictable. This will eliminate most of the glue and gating code developers write today.
  3. Framework Size – Developers should be able to trim the framework down to whatever size they need depending on their project objectives.
  4. Normalize and shrink the API – As the current API has developed over 2 years, it has picked up some “legacy” API that is no longer best practice/recommended. The API will be smaller and easier to predict if this legacy API is removed and/or normalized to use current best practices.
  5. Become DOM-library Agnostic – Currently we require Prototype. This is bad both from a framework size and from a strategic perspective. SproutCore lives above this layer anyway; we should give developers a choice of library that best suits their needs.
  6. Make Views Easier to Build – The current method for working with views (using Ruby view helpers) requires a level of indirection (write this view helper that generates your code…) that is hard for most people to grok let alone debug. Make this easier for developers to work with.

 

Work Plan

Here are the specific changes we are currently planning for bitburger to achieve our above objectives. (click on the link for more in-depth notes). The items with a “Done” or “In-progress” next to them currently have developers actively work on them. The others are still planned. If you would like to get involved, think about picking up in one of these areas.

 

Must Haves

These tasks must be completed before SproutCore 1.0 Beta 1 can be released. These tasks are simple enough that anyone just getting started with SproutCore could do them.

 

 

Must Haves But Harder

These tasks are considered “must haves” for SproutCore 1.0 Final, but they are complex and/or require a great deal of detailed knowledge of SproutCore internals. Some of these may be not be finished before the Beta is released to avoid blocking the project.

 

 

Nice To Haves

These tasks would be nice to have in SproutCore 1.0 though we would not block the release of the initial beta if they were not present.

 

 

How to Try Bitburger

To try bitburger, you just need to get a set of the most recent tools on your computer. Assuming you already have the release version of sproutcore installed (“sudo gem install sproutcore” if not), then you can setup using the following commands:


cd [YOUR PREFERRED WORKING DIRECTORY]  
git clone git://github.com/sproutit/sproutcore-buildtools.git buildtools  
git clone git://github.com/sproutit/sproutcore-samples.git samples  
cd buildtools  
git checkout -b bitburger origin/bitburger  
git submodule update --init  
cd ../samples  
git checkout -b bitburger origin/bitburger  
cd frameworks 
rmdir -p sproutcore  
git clone git://github.com/sproutit/sproutcore.git sproutcore  
cd sproutcore  
git checkout -b bitburger origin/bitburger 

 

You now have all of the SproutCore code downloaded and ready for use. To start your sc-server, you need to use the Abbot version of the build tools. Just do the following: 


cd [YOUR PREFERRED WORKING DIRECTORY] 
cd samples ../buildtools/bin/sc-server

 

Now you can load any of the sample apps to try things out.

 

If you would prefer to try bitburger with your own project, then do the same thing as above, but instead of cloning the “sproutcore-samples” project, you can clone your own project. Checkout sproutcore into the frameworks/sproutcore directory of your project and checkout the buildtools as described above.

 

How to Hack Bitburger

Have you found a bug with bitburger? Would you like to help us reach 1.0? Or maybe you have an idea for some extra feature you’d like to add? Sounds like you want to hack some bitburger.

 

The best way to hack bitburger is to work on your own fork at github. Then send us a pull request when you have something interesting to contribute. Just follow these instructions:

 

Now you are setup to hack SproutCore. If you want to work on a particular feature above, we recommend that you create a topic branch to work on it. For example, if you wanted to help with the requests, here is what you would do: 


cd [YOUR PROJECT LOCATION]/samples/sproutcore  
git checkout -b requests bitburger    
[HACK AWAY]  
git commit -a -m"Describe your changes here"  

 

When you are ready to submit your changes for us to include in SproutCore, you can just push your changes to your local account on github like so: 


git push origin [YOUR-BRANCH-NAME]

 

Then log into github, navigate to your requests branch (click on your SproutCore project then choose your branch from the “all branches”) and click “pull request”. Send the request to the account “sproutit”.

 

Be sure to describe the change you are making in the pull request message so that we can review it.  We’ll do our best to review and apply changes to bitburger as quickly as possible as long as they relate to the objectives and tasks described above.

 

Thanks for contributing!