When I started writing the first lines of code for Flow's resource management, I essentially had one goal: all data stored on a web server is temporary – persistent data can be stored elsewhere. This feature didn't make it into a Flow release so far, but the APIs were shaped for that goal from the beginning. In Flow 2.1 we'll finally see cloud storage and cloud resources happen – and it's basically a matter of switching it on.
Hassle-Free Asset Management
As always, it is rather easy to create a proof of concept, but the real work begins when you try to simplify a solution so it's easy to configure and to use. I started with first drafts last winter and created a running demo in February this year. During the last few weeks I have intensively worked on it again and brought it into a state where I'm convinced about the concept, API and functionality.
Here are the key features for our new resource / asset management:
- grouping of resources into collections
- each collection can store and publish their resources to their own storage / publishing target
- automatic handling of storage management and (de)publication
- no persistent file system required – all resources can be stored and published outside the web server
- full featured Content Delivery Network support
- local and remote file system support for smaller projects
- very slim API for your own custom storage / target implementations
- command line tool for publishing and managing resources
- post processing support for collections: minify, render, combine etc
- compatibility with Assetic filters (proof of concept pending)
- fully backwards compatible with Flow 2.0 applications (provided that they use the official API)
Sounds good so far? Then, without further ado, I invite you to watch the demo video which shows off some of what my current implementation can do:
Maybe you guessed it, there's a catch: it's not finished yet. While I know of a couple of projects and can imagine a gazillion more which are burning to use this feature, I currently personally don't have a customer project which could fund the development. So far, Yeebase (the fine people behind t3n.de) helped me getting started with the essential parts by sponsoring 6 days of development. And since I didn't want to lose the train of thought I decided to just keep on developing another 12 days on my own account until I was more confident about the API.
I'm confident that customer projects will eventually make this feature happen. If you need some of the functionality I talked about and see a way to fund parts of the development, please get in touch with me.
There are lots of smaller features which I didn't mention here, which will make asset management a breeze. But it may very well be that I forgot an important aspect – so, what's your pet feature for the new resource management? Leave your thoughts in the comments …
Photo © theaucitron