Examples Templates Store Pricing Docs Turbo CSS Blog Boomla WishList Introducing Turbo UI Named buckets Turbo CSS is Tailwind CSS on steroids Introducing Turbo CSS, the most advanced web-design language Calculate how much storage you use Better login system Collaboration settings Filesystem and Database are not cutting the problem space right What I'm working on 64bit File node IDs New how-to videos Creating buttons gets easier Introducing reusable components HTTPS by default Introducing the Boomla Theme CDN for faster pageloads Write your own website builder on top of Boomla On On composition Shared admin access A fresh config editor Building a multi-purpose theme A filesystem to replace your CMS New file link type: scope Mobile editing support Inline file wrapping changed Package sandboxing New PHP-like JavaScript engine [sjs-4e] Send emails to the website owner New JavaScript engine [sjs-4] A better editing experience New email service provider Glossary and other changes New panel changes Improved registration flow Boomla goes multiplayer Using local dev tools Why Boomla doesn't need Git File Panel Let's build a community Automatic updates Improved sjs-3 API New Frontend CSS modules Work offline with Boomla Faster page loads via caching Drag & drop supercharged Supporting CommonJS modules  Paranoid about loosing data IDE usability improvements Simple App install flow Meetups in Budapest Goodbye broken links Flow control from user space Customizing apps Contextmenu support for apps Deprecating the .Class file Hello Changelog Embedding 3rd party plugins Introducing Tools Installing apps just got amazing Public beta Host on our servers Simple deploy with push/pull Version Control for the Web 350M files on a 1TB disk 2 weeks in review
Control Panel

Automatic updates


As mentioned in my last post, I’m working towards releasing the File Panel, which is a side-bar that visualizes the structure of your website. As Boomla lets one play lego with the building blocks of a website, this is greatly needed.

(You can already try it on a per-website basis, via website settings -> select the bleeding branch of System tools.)

First things first

One thing became apparent. To release the File Panel, we have to roll out another feature first: automatic updates for apps.

What’s that? Well, updating application code was already supported, but what if you had to change the instances? (The gallery app is the app, a concreate gallery is an instance of the app.) This is also referred to as migrating the data, a super complex problem space.

Here is an example. Images in a gallery were stored in bucket 0, but for a better user experience with the File Panel, we have to move those images into bucket 1. On every existing website. Of course, I’m not going to do this by hand. Plus, Boomla is a platform, and I want to empower application developers with the same tools. They have to be able to roll their own apps, and update the instances as we go. We need automatic update support baked into the platform.

How it works

As an end user, you can effectively ignore this change. Automatic updates will run every once in a while and your apps will be updated. We will create a snapshot of your website before and after the update. That way, should anything go wrong, you can always undo the update.

If you want, you can also completely turn off automatic updates via website settings. Generally, you shouldn’t use this feature on regular websites. This is more a feature for developers, who want (should) verify every change to their application.

If you head to the Story of your website on the Control Panel, you will most likely already see entries like that:

[SYSTEM] automatic update: commiting changes before updating
[SYSTEM] automatic update: gallery.boomla.net


If you are a developer, follow this link to read more about automatic updates.

As usual, Boomla is about simplicity, and so far it seems our solution is as simple as it gets. In case of the gallery, the following snippet is the entire code required to move children from bucket 0 to 1.

images = f.children()
images.each(function(img) {
    img.move(os.APPEND, f, "", 1)

And it works if you have several update scripts. It works if you check out a snapshot of your website after a long time.

Let’s chat!

I recently started a Boomla channel on Reddit. You are welcome to ask anything.


you can follow me on Twitter