What I'm working on

2020-11-02

Here is a little update on what is in the pipeline so that you too can get excited about them. I certainly am. :P

Summary

  • Collaborative database

  • Notifications

  • Design language

  • HTML/CSS UI-kit

  • Developer onboarding docs

     

Let's look at each of them.

 

Collaborative database

Boomla gets database support! For those who know more about the project, this may sound weird as Boomla is all about its magic filesystem. Well, rest assured, the Boomla Database will be a filesystem, too! :)

Most platforms use the filesystem as a storage for large objects (files) and the database for structured data. This is not a hard requirement, mostly just a historic accident.

More importantly, they use the filesystem for single-user tasks, the database for collaboration. Now this is the important part.

In Boomla, you can store both large objects and structured data in either the filesystem or the database, but you should use the filesystem as non-collaborative storage, while the database as collaborative storage.

For example, when you are editing your project, you need undo/redo and some sort version control capabilities. At minimum to restore an older version if you have totally screwed it. That's what the non-collaborative filesystem is for.

On the other hand, a collaborative database needs to be strictly sequential. You don't want to hit undo only to accidentally remove a comment from your site! Or undo the sale of an item - that was already paid for.

I'm not sure yet if they should be called filesystem & database, or versioned vs collaborative storage, or something else. That's yet to be decided. (Have an opinion? Tell me!)

This is already a work in progress.

 

Notifications

Once we have support for a collaborative database, we can write applications like forums, games, issue trackers, wish-lists, shopping lists, whatever you want. But collaboration without knowing that others have taken action is super limited and annoying. So we need notifications.

 

Design language

I've built a language to simplify writing user interfaces that has been used to build the uikit of basic website building blocks. It was heavily inspired by Tailwind CSS but it also takes a very fundamentally approach based on both my past experience building user interfaces and the requirements of the Boomla Platform.

First, it is infinitely more flexible because it is a compiled programming language instead of a predefined list of available classes. Want to use the class w-179? (It stands for width: 179px.) Just use it. You don't need to break your flow and go edit your settings and regenerate the list available of classes. This results in faster iteration.

Second, it is less opinionated. It is not going to force you to learn a new number system where 1 is 4px and 2 is 8px.

Third, it has less configuration options. Tailwind needs this to keep its list of available classes at minimum, which is needed to reduce its CSS file size. This greatly hurts portability. You can't just copy-paste code across projects. On the other hand, the Boomla design language (not yet named) was designed (no pun intended) to be portable. It has virtually no configuration options. Well, except for colors.

It already works in production on about a 1000 websites, including this one. It's currently part of the uikit.boomla.net package. I want to incorporate what I have learned since using it, document it and finally repackage it and spin it out into its own codebase.

 

HTML snippet based UI-kit

Continuing on the above, I want to create a HTML snippet based uikit that you can use to create user interfaces via copy-paste. Even if you don't know how to code, it will be super simple to get started building user interfaces with it.

To compare them, the current uikit.boomla.net package contains functional apps that you can use to create websites via drag-and-drop. This new HTML snippet collection will be code snippets. It will not be functional apps, just code.

Importantly, the two uikits will be compatible. You will be able to build most of a website via drag-and-drop, using the existing element collection, then add any custom ones you need.

 

Developer onboarding docs

Finally, I plan to improve the developer documentation to allow lots of people with little or know programming knowledge take advantage of the above and get started writing beautiful collaborative web applications.

 


Cheers,