Accessibility
 
Home / Developer Center /  

JD's Forum

John Dowdell

John Dowdell

John Dowdell joined Macromedia in 1993 and listens to people in the online communities. He likes to make complex things simpler, and keeps a daily weblog of related news.

View Previous Columns

 
Macromedia Central


Hi, I've been very excited by the Macromedia Central project -- it has been difficult for me to keep from talking about it over the last few months! But with any new project, it's hard to predict how it will eventually be received by developers and the public. Here are some of the things I think are important about Macromedia Central, as well as some of the aspects I'm not yet sure about. If you've got early observations or opinions on these subjects then I would appreciate hearing what you have to say, thanks.

Disclaimer: I'm writing this from my personal understanding of the project, in advance of any public discussion. At this early stage I could well have some of the details wrong, and if there's a discrepancy between me and the docs, then the docs win. I may also ramble a bit here, because it takes practice for me to say things clearly and concisely. I hope you can put up with any vagueness or other problems in these early notes... I'm just really excited by it all, and hope that you are, too.


Why is it useful?

Lives on your computer, not on server: This is the key architectural difference for me. For applications, you really have to trust the author before downloading and executing a new app. For browsers, once you trust the browser-maker then you want to be able to visit any linked site safely, so no site can know much about you or interact with your system. Rephrased, with apps you have to trust a few people very deeply; with browsers you have to trust many sites not too deeply. We need a middle path.

Macromedia Central is a shell, a host, which lives on your local computer. It's a sandbox in which various applications can safely play. It differs from Java applets or other in-browser work because the code is local -- it doesn't require ongoing connection with a server, doesn't require a fresh download with each use. You can remember preferences across sessions without storing your private data on someone else's machine. Applications you choose can also share their stored and live data if you permit.

Are these lines crisp and clear? No -- browser cookies can store data locally, and you can open multiple browser windows to have two in-browser apps working simultaneously. But the basic architecture of document browsing is to protect you from violation when visiting any possible site. In Macromedia Central you can choose to trust your own selected applications to share personal profile data, but without risking system manipulation as you would with native-code applications.

With Macromedia Central you pull data from afar, rather than instructions from afar. This is a simple distinction, but it has a whole set of implications....

Easier adoption of stronger functionality: Because this is a middle path between browsers and native-code applications, we can get a middle ground between the ease of visiting a new web page and the persistence and power of a desktop application. This isn't a binary either/or, but more like a spectrum, where applications made in Macromedia Central can live in a new sweet spot between the easy access to web pages and the greater abilities in a net-enabled application.

Look at the differences between visiting a web page and installing an application. For the web, just click on a link, and it loads and renders for you. To download an application from the web you have to first decide how much you trust the author, then do a download of a relatively large file, decompress, click an installer, and activate.

Macromedia Central is in the middle. You can use the Application Finder to locate a new tool and check its recommendations, then Macromedia Central downloads the necessary code and handles its use. Installation is much friendlier than with applications -- the "one click install" is closer to just clicking a link in a browser. Because the hosting shell and standard UI components already live on the client machine, the process is also much faster than for a standalone native-code executable file.

When adding new functionality, Macromedia Central is more like a browser than a standalone application. But instead of just being a document browser, you could almost think of it as an application browser.

Faster performance: In a browser-based application, when you visit a site then you download a presentation layer, instructions for interactivity, and your initial data. With a Rich Internet Application (in-browser Flash) you can then do multiple data requests without reloading presentation and interactivity, but the application still ends when you leave the page, lose your connection, power-down the system, or otherwise break the session.

Keeping the presentation and interactivity layers local on your machine means that the only download costs are the ongoing data transfers. Macromedia Central starts up like a local application, and persists across restarts like a local application.

What are the data-transfer costs? It depends on which data-transfer method you choose. Macromedia Central is oriented around web services, with support for SOAP 1.1, WSDL 1.1 and XML-RPC. This is typically much faster than downloading HTML's blend of data and rendering instructions, much less any referenced image files and building a new display. But if you're working with your own server you have the additional option of using Flash Remoting and the compact binary AMF format. This is less of a server load than XML and frees you from serializing and deserializing in-memory objects from one system to another.

Will all Macromedia Central applications be faster than any HTML-based implementation? Probably not, because there are lots of ways to make things slower (see below). But when you compare apples-to-apples, then the local storage of presentation and interactivity, and the reduced transfer costs of XML and AMF over HTML, mean that performance can be more like a desktop application than like a browser.

Better return to developers: It can be hard to make money on web pages. The most reliable path is to have a patron: a client who hires you to make something which reflects well on them. Standalone applications can be sold to the public, but then you're subject to being ripped off by file-copying.

Assuming we can get past the chicken-and-egg distribution hurdle with the Macromedia Central shell (a reasonable assumption; see below), then applications built upon this base will be as easy to distribute as web pages, but can provide a financial return to developers without the problems of distributing standalone applications. The developer's business model is an extremely attractive aspect of Macromedia Central.

With a browser-based application there's always the question of whether the time you invest in development can be compensated. With standalone applications the big question is whether word-of-mouth will overcome the problems of executable installation. With the approach Macromedia Central uses, it looks like you can get easily and directly paid for the work you do, escaping that "patron" model and dealing directly with your audience.

Freeware? That's fine. Donation-ware? That's cool too. One-time purchase price? That's available. Free trials or partly-functional demos? Yes. A subscription service through your server? This model is also possible.

Even better, the success of any other Macromedia Central application increases the chances of success for your own application, because more of the potential audience will have the shell and UI components already installed. Your downloads can be remarkably light.

Right now I can't predict which economic model most developers would choose most often. But the ease of implementing any of various economic models makes me anticipate that we'll see great success here.

It's easy to make: If you've already created web applications with Macromedia Flash MX, then you've got the skills. There are some additional abilities available in Macromedia Central, but if you can develop in Flash, then you can develop in Central.


What do we have to watch out for?

I'm confident of the overall shape of this new path. But I'm not clear yet on how each individual will weigh each particular detail. Here are some of my big question marks:

Security: This will always be an issue, because some will always seek ways to exploit others. Macromedia engineers have been dealing with security and privacy issues since the dawn of the popular web, but anticipation only goes so far, and there needs to be constant reality-checking against new exploitative ideas. For this to succeed we'll really need to rely on the distributed brainpower in the developer community to challenge us on any questionable areas. I think we're in good shape here, but it will have to be an ongoing effort.

Initial distribution: Any new technology has a chicken-and-egg problem. Breaking out of background noise is a significant task. If hardly anyone ever knows about even a single Central application, then this decreases the odds of success for all Central apps. Conversely, once someone uses a single Central application, then it becomes much easier for them to use additional Central apps. That initial attraction is key to overall adoption.

Publicly, there's not much I can say here in March about the later campaign for consumer distribution -- we're just open to developer-level access right now, and I can't yet speak about specifics of distribution paths, partners and so on. For your own calculations, please be aware that you should factor adoption rates into your overall plans, and also be assured that folks here inside the shop understood from the start that this is a vital issue! You might also consider the consumer awareness of Macromedia Flash technology, and manufacturer awareness of the desirability of bundling such ability, and the remarkable ease of installing Macromedia Central, and also that distribution details must necessarily be sketchy right now. This is an important issue, and not all cards can be put on the table yet.

Balance between server and client: All of us have worked on this problem with in-browser applications, but now we have to really bear down on figuring which parts of each application should be done on a central server, and which parts should be done in each client machine. Work done on desktop computers will have a different balance than work done on weaker pocket devices. Costs of incremental on-demand downloads need to balance against the costs of caching local data for offline use. Server-side aggregation has advantages and disadvantages compared to asking each client to independently pull from multiple sources. Should preferences be kept on the local machine for privacy, or stored on the server for use from multiple machines? With MX technology we have a unique ease-of-use in developing on both local and remote machines, but communally we haven't nailed down best-practices here yet.

Playing nice with other apps: One of the most exciting things about Macromedia Central is that actions can happen in the background -- your machine can do data pulls while you're working in some other application, and can present notifications to you if something meets your predefined criteria. But a greedy SWF can request too many system resources, tying up the processor or pipe or storage. The original developer may not get adequate feedback about how their work performs on a variety of systems, in a variety of situations. "Skip Intro" taught us how, if bad things could be done, then bad things would be done. The "politeness" of the first year's tools may have a big effect on how popular the overall technology becomes.

Breaking out into other parts of society: If Macromedia Central remains a geek tool, then I would have to think it a failure. Techy people are a key part of information convenience, but our work has no meaning unless real people actually use it. We've got to provide useful and unique abilities to businesses, kids, people-on-the-go, the technophobic, the nerdy, education, worldwide audiences, people with different sensory or motor abilities -- if we stay locked in our little geek town then we will not have gotten very far at all. Macromedia Central needs to solve real problems for real people.

Ethics of using data: I believe that many, if not most, of the popular Macromedia Central applications will make innovative use of live data requests. There is currently no easily-distributable mechanism for personalized applications which communicate with the rest of the world. But where does that data come from?

Web services are the cleanest shot here, because they're almost always associated with a clear terms-of-service. They're also the easiest to use. But distribution of web services is still emerging -- great momentum, but it has yet to achieve ubiquity.

People familiar with server-side languages may be tempted to use "screen scraping": parsing an HTML display into data objects. Most server-side languages already include higher-level RegExp functions to parse remote pages for their embedded data. The term is actually over 20 years old, when people did pixel-analysis of screens to turn presentation into data for other environments. Serverside screen-scraping can be helpful if data is only available from a site which does not yet offer web services, but you've still got to get the consent of the person who owns that data.

The current consensus on best-practices here involves a couple of simple steps: (a) check a site's terms-of-use to see if they already grant or deny permission for reuse of the data they present; (b) if in doubt, ask; (c) if you use another site's embedded data, credit them; (d) don't just skin... innovate, provide something uniquely useful; (e) avoid overuse of another server's resources... periodically cache data on your server instead of making a fresh request for each client, for instance.

Web services, XML feeds, HTML screen-scraping... all are valid, yet all can risk misuse. We're in the early days of exploring the ethics here, so it's important to err on the side of caution, and to be responsive to feedback as it arrives.


Other stuff

These topics don't concern me as much, but I know they'll come up in the developer communities, so I might as well type my canonical replies
here.... ;-)

"It should be in Director!" It's true that Director can do more than Flash, but the cost of this is that it's only possible on Macintosh and Windows computers. Flash is more portable and is already running on many more platforms. The big win is probably in pocket devices, which just don't have enough oomph yet to run Director. If you're skilled in Director, then you're actually skilled in interaction design, and I'd urge you to expand your abilities rather than rely on any single application to achieve all possible goals.

"You tried this with ShockMachine!" Two points to you for remembering history. ;-) ShockMachine was also a client-side host, which could store and play Shockwave or Flash files. Six years ago the ShockMachine shell focused on games rather than tools -- there was no economic model for individual developers -- there was no such thing as web services, and even XML was a strange concept, so the only live data feeds could conceivably have come from HTML scrapes. Many members of the Macromedia Central team had also worked on the ShockMachine project, and are well aware of things to do different this time around. The business model for content developers alone is a radical difference. The ShockMachine experience definitely helps, but this is a distinctly different case.

"Flash is just for eyecandy!" Aww, go back to Slashdot, gedoutta here.... ;-)

"I want to interact with other desktop applications, so security shouldn't be so strict." Sorry, no can do. It's easier to loosen up a sandbox than it is to tighten after people are already using abilities. To get distribution of the host we have to be reliable. If you need to manipulate arbitrary local files then Macromedia Central will likely not suit your needs. (Let us know what you're trying to do, though... we need to learn where the popular destinations are, thanks.)

"I know ColdFusion, and want to do this, but I don't want to learn Flash." uh, I'm constrained in what I can say right now, but I think there's a well-known need to enable other creation metaphors. Hang in there, that's all I can say right now.

"Macromedia should add a particular UI component to the default download." You're right, the more we can pack inside the shell, then the lighter each additional application can be. But the bigger the shell, the bigger the first download has to be. We're making our best analysis of bang-per-byte, but this is definitely one subject which will be refined over time. Frustration acknowledged; feedback definitely appreciated, thanks.

"Wow, this concept is just... so weird!" Yes, it's different from existing web development in a number of ways. The possibilities between choosing a foreground app, a desktop dashboard, a notification system or some combo of these in itself is a major new capability to consider. The communal aspects of multiple people using a communication application may be the most mysterious and hard-to-predict angle. From what I've seen of the architecture I'm convinced we've got great possibilities here, but the manner in which those possibilities will eventually express themselves will definitely require experimentation, communication, and consensus.


I've already typed 'way too much for you to read, and I realize I've left out a lot of the stuff that's been bubbling around inside me about this Macromedia Central initiative. I'll do a follow up column here very soon in what I've seen on the weblogs, mailing lists and other discussion areas. I'll open up an entry in my blog for feedback on this early word, and will definitely appreciate hearing what you have to say, thanks!