Mavo: An HTML-based language for creating many kinds of web applications
lea.verou.me
lea.verou.me
Official website : http://mavo.io/
No centralized framework. Everything is decomposed into "behaviors" that have no direct dependencies. Attributes are used for configuration and storing the running "state" of all libraries. Liberal use of CSS selectors as a kind of query language to remove the need for tree-traversal code.
The interesting thing about this approach is that it enables libraries/behaviors to interact and effectively "compose" at run-time without any direct code dependencies. It has some similarities to the idea of agent-oriented programming, which I think is a powerful idea worth a deeper look.
Of course, this is more of a proof-of-concept than a complete set of libraries needed for a complex website. However, I find this "behavioral" approach very enjoyable to use, because it makes development very immediate and incremental. Add an attribute, observe that it works, add another attribute, observe that it works, etc.
You also get progressive enhancement "by default".
>Make a website that non-technical folks (clients? family members?) can edit right in the browser
I think the author is well aware that your average Joe is not gonna pump out web apps only "because it's just HTML". Saying that Mavo is simple to use can be misleading in this context. Simple compared to what? As developers, behaviour-enriched HTML seems simple to us because we have frontend stacks as an anchor for comparison. In almost all cases, average Joe won't even know about the structure of HTML documents, nor will he have a GitHub account to authorize against.
I think if you take Mavo for what it markets itself as, namely a "new, approachable way to create Web applications", it is great work.
I love the concept though. It kind of reminds me of Excel. It's really hard to tell if "the users" will like it or not, you have to test it on them. But I think "the users" will want some sort of GUI/WYSIWYG.
i'm creating a mavo project right now and i wanna use a simple textarea as a mavo field. (tinymce makes me feel a little icky inside.) but i didn't see anything in the documentation about how i would do that. can i? if so, how?
edit: oh hey. i just acted like it would work, tried it out, and bingo! hey, that makes me happy...
except markdown also makes me feel a bit icky -- too many inconsistencies in the various flavors.
markdown's redeeming value is that it's "popular".
which is also why it's so frightening now, since it desperately needs to be replaced. (it cannot be improved, because xkcd 927.)
speaking of "popular", that's how you describe the showdown converter that your plug-in uses.
one reason it's popular is because it was fast -- the fastest converter, at one time, it claimed.
note the past-tense "was"...
because that time has now passed.
other converters, also coded in javascript (the other big reason showdown got popular) are now much faster and far more powerful.
without getting into all the surrounding drama, i'd recommend that you use markdown-it instead: it's blazingly fast, and has much functionality.
> https://github.com/markdown-it/markdown-it
(functionality is now a better differentiator of the worth of a markdown converter than speed.)
mavo's choice of converter is more consequential than it might appear at the first glance because follow-on effects of differential functionalities will surely impact the success of a mavo project, as will the inconsistencies that will bite users.
all this aside, mavo is a fascinating little tool. :+)
I created a quick 'Hello world' tutorial on Mavo here btw, hope you like it:
https://mavo.io/docs/mavoscript/#math-functions
You would have to nest functions to get proper order of operations. Using function names instead of actual symbols. Seems like it would be easier to do something like math(a+b/2) and have it know that whatever was inside that function is math to be parsed.
I might be nitpicking.
To add to the strangeness, every website I inspect with browser tools shows me it has HTML. Are all websites from the 90's?
So for 90% of my browsing, I'll click on their page, see nothing, and move on with my day.
Also, I like to use Chrome on my phone, so installing an adblocker is a lot of work for little benefit. It would slow down the already laggy rendering and require I either use a different browser or let an app intercept network traffic.
I'm perfectly happy not using JS (or for that matter, media) on my phone.
Web pages these days are far less about the template and far more about the logic and interactions involved.
Subsequently building up from HTML the way pages used to be built and then embedding code doesn't really line up with the way modern web apps are developed.
While it may have a niche in front-end design, for the kind of work I do at least it comes off as though the platform "allows" devs to build web apps entirely written in CSS.
Unfortunately the data doesn't agree with you. JSX, react and all that jazz is not used by 99.99% of the web. And NEVER will be! In fact react/vuejs/front-end frameworks are fancy only these days, the majority of web developers don't even use preprocessors for CSS or a templating engine like HAML/Markdown to begin with [1].
There's a reason why writing HTML has been kept simple. And forgiving.
[1] https://blog.codepen.io/2013/04/08/statistics-on-preprocesso...
Edits: Downvoted because it doesn't fit your narrative? Lame.
I suppose that could have been worded differently, I meant it in the context of the original person mentioning HTML is their least favorite part of web design.
For your 0.01% of us who use all that jazz HTML-first design feels like a step backwards and especially trying to inject application logic comes off as a ham-handed method of design when compared with a logic-first design that spits out and manages the UI (HTML/CSS).
I'm not sure what CSS preprocessors has to do with that, but I'm also confused - what is your opinion of Mavo?
That even simpler step-ups like preprocessors with lower learning curves have not been adopted by the majority. Simplicity and lazy has a very high bar for any sort of competing tech.
I agree with you that technical simplicity of HTML-first would feel a step backward because you have already climbed over the fence and accepted the issues of over-engineering that come with React/JSX/Webpack and 1000 other components.
This of course doesn't mean HTML-first approach would be replaced anytime soon. Even with likes of Facebook betting their entire ass behind it.
On Mavo: Not tried it yet, but I do see a promise in it. Also, coming from Lea Verou makes it all the more compelling.
So for comparison, how do the majority of people design sites? Say you're making a HN or Twitter clone, what is the process from cradle to production to get the site up and running?