Using Ruby Fibers for Async I/O: NeverBlock and Revactor
Ruby 1.9's Fibers and non-blocking I/O are getting more attention - we talked to Mohammad A. Ali of the NeverBlock project and Tony Arcieri of the Revactor project.
Tracking change and innovation in the enterprise software development community
Posted by Craig Wickesser on May 22, 2008 09:52 PM
The most recent buzz on the web has been about Ajax and improved user experiences. Looking to the future, some suggest that the "old" client-server model will be the way to meet users expectations and demands. Could Client-Server computing be the follow-on to Web 2.0 technologies?
Last year InfoQ's Shane Witbeck wrote about SproutCore and described it as,
...a new full MVC application framework for JavaScript.Charles Jolley, President and CEO of Sproutit, wrote an article providing his reason about Why Client-Server is the Future of the Web which briefly mentions SproutCore as being one framework to help in that area. Since InfoQ's original post last year Sproutit has been busy working on the 1.0 release which includes new features, bug fixes and overall polishing of the API.
Recently, InfoQ had the opportunity to interview Charles about the current and future state of SproutCore.
InfoQ: What is the expected release date for 1.0?
Charles Jolley: June, 2008. We'll be showing some close to the final version at WWDC in early June.
InfoQ: You had previously mentioned you really wanted to complete a few tutorials and example applications. I see there is a hello world tutorial and a getting started guide as well as two demo applications. Do you expect to add more tutorials (covering more advanced features and usage) by the 1.0 release?
Charles Jolley: Right now I'm working on finishing the code for SproutCore 1.0 in time for the June release, but I do hope to slip in one more tutorial by then as well that covers building a full application. In the mean time, you can also checkout the source for the photos demo app, which contains a lot of fairly advanced features. There is a link to the source code and the app on the demos page (http://www.sproutcore.com/demos/).
Later this summer after 1.0 goes out I plan to spend a lot of my time documenting the framework and adding more tutorials as well.
InfoQ: Is SproutCore totally disabled if a user has javascript turned off in their browser?
Charles Jolley: Basically, yes. The kinds of apps SproutCore makes possible are so dynamic they would not be very useful without JavaScript anyway. By embracing this constraint we were able to make SproutCore do a lot more with less code so it really pays off.
For those times when you want to target both clients with and without JS, I generally recommend you setup your app to send non-JS-capable browsers to a simplified, page-driven version of your app. This is what a lot of SC users currently do.
InfoQ: Is SproutCore completely browser independent? (i.e. works consistently from IE 5/6/7, Firefox 2/3, Safari, Opera, etc)?
Charles Jolley: SproutCore will support IE7, Firefox 2, 3 and Safari 2,3 for 1.0. IE6 support is coming soon. (It actually used to work, but we won't have time to get the new features IE6 ready in the 1.0 timeframe.) Opera is not currently on the schedule but it should be easy to add if anyone needs it.
InfoQ: What do you see down the road for SproutCore post 1.0?
Charles Jolley: SproutCore 1.0 is about delivering the core functionality needed to build a full client-side application in the web browser. Post 1.0 we'll be focused on polishing the rough edges through better tools and improved documentation. We've already started some preliminary work on a visual interface builder, for example, and some large tutorials are in the works.
Long term I'm most excited to see the kinds of apps developers create with this new framework. I think we'll find a lot of very useful common components we can build as a community.
InfoQ: Have you ever given any thought to enabling the design of SproutCore to be implemented in something other than Javascript? (i.e Flex, Silverlight, JavaFX)? I gather "no" based on the "about" page on your site. Just curious about what additional thoughts you might have here.
Charles Jolley: Long term, I really think the future of web client applications lies with JavaScript and DOM scripting. As browsers integrate rich media features such as CSS transforms, SVG, and HTML5 movie and audio tags, the benefits of using a proprietary plugin are really diminished.
That said, I think those writing apps with those plugins today could really benefit from having a client-side framework like SproutCore available to them and I would be happy to support anyone that wanted to work on it.
SproutCore aims to address the client side of the client-server model which provides one step in developing applications for the "future of the web". Perhaps Apple is on to something since they brought Charles onto their team to help develop the .Mac Web Gallery using SproutCore. What do you think the future web will look like?
The Agile Business Analyst: Skills and Techniques needed for Agile
Spring App Platform, Java Concurrency/Multicore, Eclipse Mylyn and more @ QCon SF Nov 19-21
Scale your applications without punishing your database
Guide to Calculating ROI with Terracotta Open Source JVM Clustering
Gamma's Jazz platform's first implementation: Rational Team Concert (Trial Download)
As JavaScript gets faster and faster and the tools get better, eventually there will be little need for the most common desktop applications.
A toolset as flaky as JavaScript/DHTML is just not up to anything more complex than little bits of UI-enhancement à la Ajax. Go to the SproutCore site and try pressing F5 in one of their demos. We need to move more capabilities into the browser itself instead of throwing more and more script at it.
I think a mix is required improved browser capabilities and improved and easier methods to develop within them. Time shall tell.
Ruby 1.9's Fibers and non-blocking I/O are getting more attention - we talked to Mohammad A. Ali of the NeverBlock project and Tony Arcieri of the Revactor project.
Tim Mackinnon talks about the aspirations behind the Agile principles and practices, the desire to become efficient, to write quality code which does not end up being thrown away.
Brian Goetz discusses the difficulties of creating multithreaded programs correctly, incorrect synchronization, race conditions, deadlock, STM, concurrency, alternatives to threads, Erlang, Scala.
Often the hardest part of changing technologies is language syntax differences. This new article provides Java developers with a transition guide to Actionscript which forms the foundation of Flex.
Neal Ford talks about having multiple languages running on one of the two major platforms: Java and .NET. He also presents the advantages offered by Ruby compared to static languages like Java or C#.
David Anderson talks about the history of Agile, the current status of it and his vision for the future. The role of Agile consists in finding ways to implement its principles.
Nick Sieger talks about the future of JRuby, Java Integration, and his work on JEE deployment tools for Ruby on Rails like Warbler.
Rustan Leino and Mike Barnett of Microsoft Research discuss the technology in Spec# and its futures.
3 comments
Reply