Using SproutCore with ASP.net

What kind of backend server technologies does SproutCore work with?  Anything.  And to prove it, cpomer just posted an excellent tutorial on building a SproutCore app and paired backend service in ASP.net.

Way to go!

(BTW, take a look at that wiki while you are there.  It’s hard to believe its only been up a week.  The community around this project is amazing!)

 

Demo App Contest

Calling all developers - It’s time for a contest!

That’s right, a contest.  In order to really show off what SproutCore can do, and to help foster the growth of great SproutCore developers, we are looking for you to create the best demo app possible.  Rules?  Simple.  To enter:

  1. Must be built using SproutCore (of course)
  2. Must feel like a desktop app (you’ll find that easy to do when you follow rule #1)
  3. Just create a cool demo doing anything you like and host it somewhere online.
  4. Must be submitted to the wiki - (http://github.com/sproutit/sproutcore/wikis/sproutcore-demo-awards-1)
  5. Send an email to sproutcore@sproutitmail.com with your email address and the name of your entry
  6. OH, and must be completed by midnight on July 21.

Only 3 weeks!? That’s right.  3 weeks.  But, I think you will be surprised how fast you can put something together using SproutCore.  But, to win, your app must have that “wow” factor.  We will choose the top 4 apps and winners will be announced at the first SproutCore Founder’s Meetup on July 23.

So, what’s in it for me?  Glad you asked.

  • link from the SproutCore demos page to your app
  • a special badge to place on your website (hey, even chuck norris wore a badge)
  • free t-shirt …. you know you want it
  • chance to present your award winning app at the Founder’s Meetup
  • never ending glory and bragging rights!

Time to get to it.  We look forward to some great apps!

What’s the difference between SproutCore and GWT?

Everyone always asks: “What is the difference between SproutCore and GWT?”.  If you don’t know, GWT is the Ajax library developed by Google.  You write Java code, which is translated into JavaScript for you to run in the browser.  

I could go into lots of details about the specific strengths or weaknesses of this or that feature, but the big difference between GWT and SproutCore can be summed up with this quote from their from page:

Google Web Toolkit (GWT) makes it easier to write high-performance AJAX applications. You write your front end in the Java programming language and GWT compiles your source into highly optimized JavaScript. Writing web apps today is a tedious and error-prone process. You spend 90% of your time working around browser quirks, and JavaScript’s lack of modularity makes sharing, testing, and reusing AJAX components difficult and fragile. It doesn’t have to be that way.

In other words: we don’t like JavaScript.  It’s not Java and it’s hard.  Use GWT instead and avoid learning that language altogether!

SproutCore’s approach, as you probably know by now, is quite the opposite.  Embrace JavaScript.  It’s a good language once you get to know it.  The tedious and error-prone part of it is not the fault of JavaScript, its the natural state of the web browsers and their relatively primitive APIs.  But that’s what a framework is for.

Here’s the problem with using something like GWT or any other framework or tool that lets you write in <insert favorite language here> and then converts it to JavaScript:  they can’t always get it right.  

Every framework, even SproutCore, makes some assumptions about the kinds of problems you will need to solve or how your code will need to perform.  When you run up against these limits (and you always will) in a platform that tries to isolate you from JavaScript what do you do?  Well you have to write the JavaScript yourself.  Only now the problem is twice as hard because you have to figure out how to interface with that super-optimized, totally unreadable code generated by your tool as well.

With SproutCore, if you want to do something not anticipated by the framework, well, write a little more JavaScript.  It will be easy to interface with the rest of your app because that is what SproutCore does. Better yet, use one of the many libraries already out there to help you.  It feels totally natural and normal to do this because you get to stay in the same platform where you belong.

The point is, any framework that tries to help you avoid learning JavaScript, be it GWT, ruby helpers, or anything else, is fine when you have some relatively simple things to do.  But if you want to build apps that really shine in the browser, you need to go native.  Use the technologies that the browser is made of and you’ll be far happier in the long run.

And that’s the difference between SproutCore and GWT.

Update: I have great respect for the GWT team and what they have built.  It’s an amazing feat of technology and very useful for any Java engineer who needs to add a little Ajax love without learning JavaScript.  But for the kinds of apps SproutCore is designed for, we differ on the approach.  The purpose of this post is to explain that difference.