- Welcome, i&#x2019;m Rik Arends CTO of Ajax.org and thank you for coming to my presentation
C++ developer since 1996
video fx software and early multitouch applications
co founded ajax.org in 2005
JS charting engine, Live markup parser and architecting O3, our C++ component platform
I want to share my view of the future of web application development, and how this relates to the stuff we are doing at ajax.org
touch 3 topics
- Isnt my existing IDE just fine? - What is this cloud thing anyway
- lets Look at cloud for a second - its the Next step up from virtualization With virtualization we care what operating system, database, etc - The cloud moves integration up to the API which we use to develop applications. EXAMPLE Box of stuff &#x2018;go store&#x2019; dont care how, how big, or if the roof leaks Build your own shed and take care of storing it dry and safe. - What does this do for me, besides it being easier?
- Imagine building a facebook app and you start with a few users - Running normal VM at some hosting company - Now it gets popular all of a sudden
- Scale backend resources rapidly - Rent servers, loadbalancers, find a way to scale your database Nightmare - But also very expensive to do before your app becomes popular - Cloud infrastructure solves this problem with special cloud API&#x2019;s architected for scaling - Day one scale from 1 user to 1 million - Without cost of pre-empting it, or the loss of failing when it succesful. - Cloud saves time and money and we can focus on: How can i make my application do more of what my users want - Agree cloud is good for webapps
- Now what if we make devtooling a cloud app? - Seen possibilities of online editing with Ethrpad Glimpses of bespin as a development system - Except, Why? Cant normal IDE deploy to the cloud? - Why is IDE in cloud better?
- Imagine Scenario: You are a developer and joined a new company - Year ago company delivered a webapp, now customer calls because they have a bug, something about text getting mangled up - Problem can be anywhere from db to JS lib - Asked to solve the problem, and ahve to find your way into - get source, Build, packaging systems - Set up a test VM, right version Java Mysql, - get the database and piles of little details BEFORE you can start finding and fixing the bug
- Yes thats how i would feel
- Imagine if a developer environment in the cloud was used to create app. Entire state of tools, editors, processes available by entering a url in a browser.
- Developer can start immediately tracing and fixing bug, click the rollout button and make the customer happy. - Keeping entire developer environment for a project behind a url makes life a lot better.
- Another thing: Cloud platform have specific api&#x2019;s which need to be integrated in an IDE to be easily usable - A cloud IDE is uniquely positioned to solve this problem as it can be an integral part of a cloud platform itself
- Besides the cloud specific features, the IDE needs the normal parts like code editing and a nice visual editor for the UI aswell
- I want to shouw you a small screencast of the cloud IDE that we are developing - It allows you to edit a running application - Working Create full IDE in the cloud, raise capital to really push its development through this year.
- Having IDE in cloud opens up new ways of collaborating for development - Interactive code-reviews, helping or training programmers, peer programming - Collaboration can enhance developer experience with cloud IDE
2nd topic: The challenge of Collaboration.
- I think we can all agree Google Wave sparked global debate about collaboration and web 2.0
Finding ways for people to work together efficiently online is a brave new world, and its great to see a company like google step up to the plate and take a swing with a novel concept like &#x2018;wave&#x2019;
However most people responded to the wave UI something like this:
- Great to release such an experimental application to have people learn what works and what not in experimental application
- So what could we learn from this?
- Take a step back for a sec, - If you look at the world, you can see it is one big collaborative effort in itself. Buildings, government, businesses... Everything is a collaboration and - nature has shaped it in a particular way that is apparently efficient.
- Example of kids making sandcastle. - If we need to do something simple such as making a big pile of sand, everybody can free-for-all with common goal, and work in parallel optimally doing the same thing
- Compare to collecting ideas for brainstorm - Parallel throw items on pile, that will be sorted later - Very similar to how wave works now, parallel collaboration on the same pile.
- After kids finish mountain of sand, dynamic changes - Tasks will start to split up: one digs trench, other builds towers - Parallel collab turned into task separation - When one kid starts interfering with work of another, usually someone will be crying very soon and we get opinions like
- What people felt about wave too - I dont think he really hates sandcastles. Just that he cannot separate tasks properly with that other kid in the picture :) - I think Fundamentally, there is no single way to collab It even changes based what phase of the process you are in. - Very interesting to think how wave can start supporting the natural dynamics of human collaboration.
- look at specific example of collab UI, and subtle diffs that might be needed to effectively collab
-Big feature for wave and etherpad : timeslider - Pull slider around, doc change over time, skipping through video - Didnt we Already have another way of collaborating on a document to see changes?
- Yes, track changes in word has completely different view - If only want to see changes with last version, this is superior timeslider needs short term memory comparing versions - Realtime collab like etherpad timeslider performs another function All intermediate steps, makes it undo and contain entire creative path.
- Question: Which of these 2 superficially similar methods work for me?
- Lawyer wants track changes, Creative writer wants timeslider Developer might want visual diff like we know from source control software
- Here it gets interesting - Collaborative applications will be a cambrium explosion of methods Trying to fit optimal way for specific application
- However to enable finding the right system, we need easy ways to reuse and play with collab widgets
- Internal project mgmt application, put in &#x2018;etherpad&#x2019; like feature if has to be written from scratch
- Thats why collaboration is at the core of ajax.org tech - All our widgets can keep sync with data changed by other users, makes writing collab apps much easier - We are Now developing many collab-enabled widgets like flow-charts, vector based whiteboard, editor, chart interaction - Also collab needs backend for commnucation Platforms with an api like Salesforce, twitter, google wave can be very useful Providing data storage and communication pipes
- However, innovating UI and collab we need browser to innovate and enable features - Next step in browser innovation has a name for the past few years HTML5. Besides markup, biggest thing for HTML5 seems to be the JS api&#x2019;s
- new api: Geolocation. Webapp can use GPS or other location service to make webapp location aware. - Enabling a whole host of new possibilities
- When can we use it as devs? have to support IE6 for some customers, will be long time before avaiable for widespread use. - What about new features? It took Many years to define apis for HTML5, how experiment? before 2020?
- Google had interesting solution to make IE do HTML5 and run Wave Chrome Frame - Replaces browser engine by chrome as full page plugin Disruptive: changes way it works for user, clipboard mouse behavior, and so on - Its like a futurama brainslug.
- Dont know what Gears was: a browser plugin made by google to add HTML5 features like drag drop files, offline support to any browser, and used in google docs - Much cleaner approach Gradual improvement, although limited to JS apis for HTML5 - Gradual improvement means access to feature can be asked to user - Gears was vehicle that enabled much of HTML5 js api&#x2019;s to be defined and refined with use in real applications - Unfortunately Gears cancelled, and their internal developers moved to chrome. I think the Role of refining new API&#x2019;s and enabling cross browser HTML5 still needed
- Lets dream about api&#x2019;s for webapplications
- Control your SLR for timed snapshots - Heart rate measure like our friend nikolai is doing - Controlling lights in your house from a webapp . - Read data from weather sensors. - Integrate fun motion sensors like WiiMote
- Also more serious - Multitouch - Audio API, synthesisers, voice recognition - Barcodes, face tracking - Webcams and imaging - VOIP and videoconferencing - P2P networking and encryption Each of these api&#x2019;s can create a world of possibilities, just like Geolocation. We need platform not connected to particular webbroser, with components that can be developed ahead of standardisation
- For past 2 years working on O3 to perform this function - Want to fill gap Gears left to innovate the web and support HTML5 js API compat for IE - Most importantly; want to create new components in a sustainable way and assist the forming of new standards for API&#x2019;s in HTML5 or 6 or what it will be called - O3 components are individually versioned and downloaded on demand allowing the components to be used and supported &#x2018;forever&#x2018; in real-world commercial applications - I cant wait to start using some of these API&#x2019;s we&#x2019;ve just dreamed up And i hope the community will start building on this system aswell. - We need to figure out what we want it before we standardise it.
So to get back to the main points of my talk
Development will happen in the cloud because it will allow developers to support an application much better, And IDEs in the cloud are uniquely situated to integarte with a cloud platforms.
There needs to be an explosion of ways people can collaborate, and searching for the best ways requires reusable technology to enable this.
To keep innovating the browser we need a system to create and innovate components to figure out what we want before we standardise it, but it needs to be fully usable in the meantime.
Thank you for your attention,
All our stuff is opensource and we are looking to get in touch with people to work together and share ideas.