There is a variety of low-code frameworks for building reactive UIs. Herein, I am testing the available options with a proof-of-concept module that I want to reuse in different situations. I am looking at the frameworks from the point of view of a one-man show scientific software developer who wants to build a front-end to scientific tools. I haven’t used Javascript in a decade, so have mercy on me :)
If you have suggestions for other frameworks, I would like to add them to my list. However, I am not sure I will revisit the overall results anymore - originally I wanted to make this a living document, but this would mean I spend the rest of my life tracking bugfixes and improvements, which I don’t have the bandwidth for.
Frameworks tested:
Openblocks, 23/78/3.2k watch/fork/stars: to the report
Budibase, 199/965/16.4k: to the report
ToolJet, 116/1.4k/15.2k: to the report
Illa, 23/60/1.2k: to the report
Appsmith, 239/2k/22.8k: to the report
TLDR: Results: To the summary!
Frameworks not considered:
Refine, 41/411/5.7k, not a drag&drop builder
Windmill, 8/47/1.5k, focused on workflows
Retool, the OG. Not open source
internal.io, not open source
Anvil, open-source engine but not builder; python-based
Interestingly, the chemistry world (which happens to be my domain) has its own UI builder: The Cheminfo Visualizer. The thing is literally 10 years old and shares many concepts with Tooljet, Appsmith and co. As another plus, it has many science-specific widgets built in. However, the dev experience is very dated, and there is no good separation between “making” and “using” the app. Still, I feel in this list it deserves a honorable mention.
The example application is a simple CRUD CSV editor.
The “backend” is a WebDAV server with a CSV file on it
The frontend shall
GET the CSV
parse it to JSON
display it as a table
allow me to edit rows
allow me to add rows(I didn’t do this)render the resulting data as CSV and PUT the updated file
allow me to replace the CSV with a completely new file from my HD.
The frontend block should be reusable. I.e., I want to use it for different CSV files.
Ideally, it should be tolerant of extra columns and missing columns, i.e. not anchored to a single schema.
Why a CSV editor?
CSV is a commonly used input data format for scientific software. Everyone in IT loves JSON, but our users still need CSV.
It allows me to test a few interesting details. For example, can I run custom JavaScript code? can I import JavaScript libraries (to handle CSVs)? Can I GET, PUT and POST data that isn’t JSON?
A WebDAV server with config files plus something like the API of OliveTin for running shell scripts (there is probably a simpler alternative) is actually a great low-tech backend for many scientific software applications. I was once writing a REST API that exposed the config files for a tool, and after a while I realized I was reinventing a webserver.
Technical criteria to evaluate the framework:
Do I run into limitations? If yes, can I get around them?
Do I foresee limitations for more complex use cases?
A second task I am looking at is a simple table displaying a paginated API query with server-side sorting and filtering. This is something every framework should be able to do out of the box, since this is more or less what they’re built for. Here I care about how much friction I encounter doing stuff like attaching a filter string with one or more conditions for server-side filtering.
What I’m not yet looking into closely: Authentication options and so on.
Another criterion is sustainability. All options I evaluate are “open-source”. However I am aware that there are people behind this who have to eat food and potentially buy Porsches. “New” projects worry me because I have seen too many cool new projects abandoned, especially in a space that’s getting crowded.
Can I see how this framework will still be here in five years?
Does the team openly communicate their business model?
How much will it cost me in the future?
My wish would be that the open-source community eventually converges on a platform that becomes strong on its own, like Eclipse. However I think we are far away from that.