Aviary API Announced]
Hackers and geeks, ahoy!
We've gotten quiet a few requests for more in-depth information on how the system and our API will work. Adobe has also asked us to elaborate more on the underlying structure of our system (i.e. the fact that we're Flex based and will run on AIR). As we're close to releasing the first API for Aviary, now seemed as good a time as any to discuss some of the geekier bits of our system.
Our first API will allow developers to use and extend our GUI interface, basic components and store data in our file system. In future releases more code functionality will be accessible so anyone interested could join the project easily or develop their own tools. An example of the functionality the second API would bring would be using our built in undo/redo or ability to parse certain file types (such as .TTF, .PDF or .3DS).
[b]How the whole system works[/b]
Aviary is developed in ActionScript 3 using Flex (and it will also run on AIR). It was developed using the [URL="http://labs.adobe.com/wiki/index.php/Cairngorm"]Cairngorm design pattern[/URL] created by Adobe engineers. The Aviary Framework is developed with interaction in mind; any developed application has to be able to merge trasparently into the suite, allowing the developer to focus on providing additional functionalities without worrying about building a GUI or framework. To achieve this goal the whole Aviary Suite has been built using a modular approach:
A user will only need to open one application (Aviary), which serves as a launcher. All of the tools are really just powerful independent modules that will be managed by this launcher application. Aviary will load and unload applications as needed, leaving the data available for another application and providing seamless interoperability between all of the tools.
The user workflow will be as smooth as possible. A user won't need to open separate applications to edit all the assets that will compose his final document, as the individual tools will be automatically loaded and unloaded by the Launcher to provide the functionalities needed to edit each asset. The Aviary framework will manage the synchronization to restore the tool which requested another tool for editing.
[b]Graphical User Interface[/b]
The Aviary framework will provide a full set of custom components that can be used to implement homogeneous user interfaces between all the tools. Those components will also be styleable and skinnable, so developers can customize the appearance of their tool. We're also including support classes for the user interface: for instance a user customized workspace could be saved on our server and restored the next time the user will be online.
You will be able to create and customize different palette types and menus:
1) [URL="http://www.creationonthefly.com/aviary/images/blog/mockup/gui3big.jpg"]Left palettes[/URL] (the tool palletes that affect very specific aspects of your workspace).
2) [URL="http://www.creationonthefly.com/aviary/images/blog/mockup/gui4big.jpg"]Right palettes[/URL] (the global palletes that affect general aspects of the workspace).
3) Bottom palettes (also global palletes, but laid out horizontally).
4) [URL="http://www.creationonthefly.com/aviary/images/blog/mockup/gui4big.jpg"]Menus[/URL] (a simple menu system reserved for common functionality that needs to be accessible at all times, such as UNDO / REDO, and copy / paste)
Your tools will even be able to support multiple workspaces (for example if you want to provide a simple and advanced version of your tools).
We will also provide developers with a library of button icons to use in the GUI.
Finally, we have prepared our GUI to be able to support multiple languages. You can easily add new language configuration files for your tools and if a user specifies to work with that language in their preferences, it will be displayed.
[b]Connecting to Rookery, our file server[/b]
One of the best features of our API is that it includes a full, free filesystem for you to permanently store and retrieve user data. Our API will include a set of classes needed to access the server and retrieve data from it as needed. With those APIs a developer can access informations related to a given user, retrieve a list of assets that can be used in their program or share a creation with the community. In other words, there is no need to build a back end for storage.
Our file system, rookery, is a distributed redundant network that uses Amazon S3 for backup and failover. It can also be accessed independantly of Aviary, if wanted.
We save all work files with the [b].egg[/b] extension. Developers simply need to have their applications pass their completed work file data to our class, where it will be automatically wrapped with additional "egg metadata" used by our filesystem to store and track ownership of files. All files have protective shells. We automatically scramble the egg data (yum) so the integrity of file ownership shouldn't be compromised, even when users download the work files to their desktop.
[b]Logging and session recording[/b]
One of the coolest aspects of Aviary is that it allows users to automatically create text-based tutorials and record a video of their workspace, to share with other users as tutorials. Using those APIs a developer can automatically log messages or record sessions so they could be replayed later or used to build a tutorial. We're also planning on releasing a chat module so multiple users can view and comment on a single users' workspace in realtime as they perform work. This will be useful for live tutoring sessions (which theoretically could also add another form of income for users of our marketplace).
[b]AIR applications[/b]
We do plan on releasing an AIR version of Aviary, as well. We'll have a separate blog post on how this will work shortly.
If you're a developer interested in building your own Aviary application or otherwise want to access our marketplace, please drop us a line at [b]aviary_api (a) worth1000.com[/b].]]