In this post, we want to discuss how we’re building Buzzword.
In 2004, we started with the simple notion that we wanted to build a word-processor for the web. The discussion on how to build it came down to the four obvious approaches: .NET, Java, AJAX or Flash (using the Adobe Flex development environment). Though our team had extensive expertise in .NET, it wasn’t a practical choice for us since we started with the assumption that this must be a true cross-platform application. From the start, one of our primary audiences has been students, and we knew that the Mac platform was very popular in that crowd.
Why not AJAX?
Clearly, we’re not the first guys to think about putting a word processor on the web. Writely (now Google Docs) and a host of others got there first with AJAX implementations. What they essentially did was to take the HTML edit control that already exists in the IE and Firefox browsers and wrap some word processing features around them. The result is a very nice HTML editor – and a very useful collaboration tool – but it’s not a WYSIWYG word processor.
The new AJAX editors call themselves WYSIWYG word processors because they display fonts – but they don’t show you what you’ll get on the printed page. This is because HTML has no concept of a printer or a printed page. HTML expects to be on a web site where pages are windows and printers don’t necessarily exist.
We wanted more fidelity. We wanted better typography. We wanted more control of the page. We wanted to display the page you’ll get from the printer. We also wanted to be able to seamlessly integrate graphics within text – including dragging and dropping, resizing or running text around graphics – something HTML doesn’t easily support.
And, we wanted browser independence and didn’t want to have to recode or even worry about the user’s choice of browser.
In short, we wanted the reach of the Internet without the limitations of the browser.
Flash Player 9 – the first real virtual machine
Our solution, and one we’re quite happy with, is to treat Adobe’s Flash Player as a virtual machine. With Flash Player 9 we have a rich internet environment that enjoys the highest market penetration of any piece of software. It runs on any machine – Windows, Mac, Linux, XO (the $100 Laptop), handhelds and even cell phones. We can write once and run it eveyplace. Our users have confidence that even if they are using a locked-down public library machine, Flash Player will be there and therefore so will Buzzword.
We were fortunate enough to get in on the early Alpha builds of Flex 2.0 and found it robust enough to support our designs. None of our engineers had previous Flex or ActionScript experience, but they were well-versed in the major object-oriented languages. Given that, the learning curve was fairly easy and we were able to demonstrate proof-of-concept within a couple of months.
And if the Flash Player isn’t cool enough already, by coding in Flex and deploying to Flash we’ll be able to take advantage of Adobe’s latest platform, AIR. With AIR we’ll be able to offer users a hybrid online/offline experience. They’ll be able to launch Buzzword from a desktop icon and run outside the browser. This will provide a more elegant solution in that the browser’s menus (including the dreaded back button) will go away, we’ll have better clipboard support, and we’ll be able to take advantage of notification.
Although we’re designing Buzzword for the mobile user, i.e. the person who works on more than one machine, we believe most people will have a primary computer on which they do the bulk of their work. It’s quite possible that on that primary computer, they’ll find working on the Apollo version of Buzzword will provide the optimal online/offline experience.