HTML5 and EcmaScript 5, provide very powerful APIs that blur the line between the Web and the Desktop user experience. This has resulted in more organizations choosing to build their applications using Web technologies, rather than using the traditional Desktop approach. In order to explore the evolution of this trend, InfoQ had an interview with Dylan Schieman, CEO of SitePen and co-creator of the Dojo Toolkit, about the potential of the Web platform.
InfoQ: Hi Dylan, would you like to give us an overview of the technologies you consider being part of the Web platform? Where exactly does the Dojo toolkit fit in?
Dylan: Hi Dio, thanks for reaching out to us! The web platform has grown immensely in capabilities and features in the past couple of years, in an effort to basically compete with everything you need to build an application. From the foundation of HTML(5), CSS(3), JavaScript, vector graphics (Canvas and SVG), WebSockets/Comet, Local Storage/Offline, Data, WebGL, and so much more, it's a bit daunting at times, especially when factoring in performance and the diversity of platforms on the web today, from browsers to mobile devices to many other platforms.
Dojo still has many of the same goals today as when it started: to fill gaps in browser implementations, to make developers more productive, and to help you build efficient and well engineered web apps. That has evolved over the years, to cover all of the features above, and so much more. We've evolved to provide a collection of tools to efficiently manage CommonJS AMD packages, to a lean set of packages on top of this. We've just made so many improvements and changes with 1.6, and have a pretty incredible set of plans for 2011. It's by far the most ambitious year in our history.
InfoQ: How do you see these technologies currently being implemented and supported? What important APIs are already available and for what new technologies should we be waiting for?
Dylan: The promise of HTML5 has unfortunately left us with even greater gaps in features and capabilities than before, and mobile has left us with a fragmented landscape of features and capabilities. What's interesting is how the perception is changing from using only the things that have been standardized, to using whatever is available on the platforms you're targeting. For example, if you have WebGL or native hardware acceleration, you cannot use it fast enough, but you still need the ability to support platforms that do not. So we're seeing an incredible number of small toolkits that just help you handle a couple of key problems. For example, geolocation, it seems easy enough on the surface, but the APIs are inconsistent, and it's still nice to be able to fallback on something like Google's IP-based API as a backup plan. We're pretty excited about IndexedDB, and while it's not widely supported in browsers yet, we've leveraged the same concepts for the entire approach to the Dojo Store in Dojo 1.6 for loading data in a simple manner, and connecting data to widgets or templates, as well as implementing this approach on the JavaScript server-side with projects like Persevere. It's just amazing how far we've come, and how fast people are running.
For example, Game Closure is the latest JavaScript and HTML5 game engine, with this one focused on real-time Comet/WebSockets as the basis for how it works. To say "the latest" even a year ago would have been difficult to do while keeping a straight face, and now its expected that of course the browsers, both desktop and mobile, are up to the task for being viable gaming platforms!
InfoQ: What are the main benefits you believe that the web platform has over the traditional desktop technologies?
Dylan: One set of approachable development tools that can be adapted to work in many places. Quite simply, JavaScript, HTML, and CSS are approachable to a larger body of developers, and can work just about anywhere now. Furthermore, you have the promise not of write once, run anywhere, but that you can really get the zen of JavaScript and then be productive everywhere. It's a more realistic goal, and one that we're seeing take off with Node.js on the server-side, the mobile web, the interest in HTML5, and much more. So I see the main advantages being developer efficiency and productivity, and ubiquity. As well as the historical advantages of distribution and ease of browsing to a URL. And now, if you want to create an installable app, desktop or mobile, there are many tools that let you do that as well by wrapping your web app.
InfoQ: What types of application do you see more fitting for being implemented with web technologies and which technologies are those? How can the Dojo toolkit be used with those?
Dylan: I used to say "everything that's not a game with intense graphics, or something with lots of business logic." Now, I'm not sure there's anything that is not possible to do with the web. Dojo helps with anything where you're writing applications with JavaScript as the fundamental programming language. Common use cases of Dojo are communications suites (email, calendaring, etc.), real-time apps, vector graphics intensive programs (real-time whiteboarding, drawing, charting, etc.), enterprise apps, mobile apps. I've seen examples of games built with Dojo. Nothing really surprises me any more.
InfoQ: With JavaScript being a cornerstone for web technologies, how good do you think it compares to other desktop languages like C/C++, Java, etc? What is your opinion about the current frameworks and tooling that is currently available?
Dylan: As excited as I've been to this point, it's still very difficult to stay up with the rate of change, to test as easily as you can in traditional environments, etc. As Alex recently said, what's most frustrating is that the things we struggled with 5 years ago are in many ways the same things we struggle with today. As far as programming languages, JavaScript has been aggressively fixing the syntactical issues that have been the subject of criticism for more than a decade, and for probably the first time, serious involvement of not just browser vendors, but also people who build web apps. JavaScript as a language is extremely flexible and dynamic, and ubiquitous, which is why it's #winning. Whether it's actually a better language or not isn't really the point. Frameworks, toolkits, and tooling are evolving more rapidly than ever. If you have ignored JS for a couple of years, it's time to spend a few weeks and look again, you'll be shocked at how much has changed.
InfoQ: What do you think will be the main concerns for developers that would like to develop desktop solutions using web technologies? What about security?
Dylan: Most security problems today are still within the browser or server-side, as the assumption is that we don't trust web apps to be allowed to do too much. I've been reasonably amazed at how few major security issues have occurred over the years, and most of them were quickly squelched. I don't perceive the web platform as any less secure than the desktop platform, as I think it has less vectors for infection. That said, the breakthrough speed with recent advancements certainly opens the doors for a new class of potential problems.
InfoQ: Are there things that you think are currently missing from Web technologies, in order to be a viable alternative to current desktop solutions?
Dylan: I think if everything that's currently unfinished was suddenly done and highly performant, we'd still have work to do, but the discussion wouldn't be very interesting. I think the main focus has to be on how we can continue to rapidly evolve as we have been, and make it much easier to create applications with amazing performance. So I see it more a matter of polishing and finishing the many alpha and beta quality features and approaches that have emerged over the past 5 years as the main thing holding us back currently.
InfoQ: How do you see these APIs and technologies growing in the near future?
Dylan: I'm terrible at predicting the future, other than I recommend never betting against the open web in the medium and long term. I see them growing rapidly and being fiercely competitive to provide developers with exactly what they need to be amazingly productive on the web.
You can find more information about HTML5, JavaScript and Dojo, right here at InfoQ!