What is SproutCore?
SproutCore is a framework for building applications in JavaScript with remarkably little amounts of code. It can help you build full “thick” client applications in the web browser that can create and modify data, often completely independent of your web server, communicating with your server via Ajax only when they need to save or load data.
JavaScript applications are faster, easier to use, and a lot easier to write that complicate Ajax-driven applications. When you use a framework that SproutCore to help you, they can also be a lot of fun to write.
What makes SproutCore so different?
SproutCore is a totally new way of building applications on the web. Instead of following the typical web-driven model where most interesting things happen in the server, SproutCore applications split the load. A SproutCore application is a JavaScript application that runs entirely in the web browser. It can often run on its own, without even needing support for a web server except when it makes sense for the application. This frees the server developer to focus on the things the server can do very well such as saving, restoring and aggregating data and performing expensive operations. Meanwhile the “thick” client running in the web browser can handle the task of presenting the user with a friendly interface that is fast and intuitive.
SproutCore includes visual widgets such as list views, button views, and forms - just like other JavaScript frameworks. But it also provides other functions such as an in-memory database (that can integrate with client-side offline storage), bindings, property observing, and controllers. The code you write with SproutCore will resemble a desktop app written in Cocoa more than it will a web application written in Rails.
Why should I use SproutCore instead of another framework?
SproutCore is for applications that want to adopt this new “thick” client model for building apps on the web. If you are creating static pages with a widget here and there, then SproutCore is probably too much for you and another framework such as YUI, Dojo, or Mootools will do the trick.
If you have built desktop applications in the past and you would like to bring that same experience to the web, however, then you will feel right at home with SproutCore.
If you are building web applications today and you are finding the constant pressure to deliver more “app-like” features is not only difficult but less fun to write, then SproutCore can help you find your joy again.
Why should I use SproutCore instead of a plugin like Flash or Silverlight?
Nobody likes using software running in a sandbox and no one likes to download plugins before they can use your software. If you want to create an application on the web that is fast, fluid, and native, and usable by everyone, use the only technologies that come built right into every browser: HTML and JavaScript. SproutCore makes it easy to do just that.
Why would I want to write in JavaScript? Doesn’t JavaScript suck?
No! In fact, JavaScript is one of the most powerful languages ever to have achieved widespread adoption. The kinds of features that make people rave about Lisp or Smalltalk such as closures, lambda functions, duck typing, and late bound inheritance, are all found right in JavaScript.
What are the incompatibilities between the different browser’s DOM implementations; and their relative lack of tools. Both of these can be solved with a good framework like SproutCore that hides most of the DOM-specific functions behind views and provides tools such as the SproutCore build system that makes managing a large complex JavaScript project a breeze.
If you have ever used and loved a language like Ruby, Python, Lisp, Smalltalk, or Scheme but wished you could use it on an actual production project, then you owe it to yourself to learn about JavaScript as well.
What is required to use SproutCore? Will it work with my backend?
The SproutCore framework is completely JavaScript based. We have also created some build tools that will take care of efficiently packaging your HTML, JS, and CSS for delivery over the web that are based on ruby. However, Ruby is not required for you to use SproutCore except during development.
After lots of testing, we have found that the most efficient way to server a SproutCore application is as a …. static web page! Once you are ready to deploy a SproutCore application, you can run a build tool and it will generate set of static HTML, CSS, and JS resources along with any other images or flash components that can be dropped into a directory and served directly from Apache.
Once a SproutCore application is loaded into your web browser, it communicates with your backend server using Ajax. You can literally use SproutCore with any backend technology that you want. As long as it can be accessed via HTTP, your SproutCore app will be able to talk to it.
What license does SproutCore use?
SproutCore is under the uber-liberal MIT license. We just want you to use it.
What browsers does SproutCore support?
SproutCore is designed to run on all modern major modern web browsers including:
- Internet Explorer 7 (and 8 when released)
- Firefox 2 and 3
- Safari 3.1 and later
Currently SproutCore has known bugs unique to each of these platforms, but will all be supported by the time SproutCore is declared 1.0.
How do I get started?
Start by downloading the build tools. Then follow the tutorial to build your first app. Be sure to also subscribe to this blog and a join the mailing list to stay up to date on the latest developments.
Can I get some examples?
Checkout the demos page.
Why did you create SproutCore?
I co-own a company called Sproutit that provides a hosted help desk service for consumer-oriented businesses called Mailroom. We think that the software you use at work should be as easy, fast, and fluid as the software you use at home. So, last year we rewrote Mailroom to run almost entirely in the web browser. There is only one page load and no plugins are required, so the experience is fast, friendly, and native. This is where the first version of SproutCore was born.
Who are you?
My name is Charles Jolley. Here is my personal blog and here is my company site. If you have a question or want to help out, drop me a line. I’d love to chat!
I have more questions!
Please see out wiki. We have a very good Newbie FAQ.