Jasonette – Native App over HTTP
jasonette.com
jasonette.com
It's clear that in general, we are all sick of writing a bunch of bespoke code and maintaining multiple platforms, and are seeking smart layers of abstractions over native widgets. It's a tale as old as time.
What's curious is why there isn't a standard/de-facto standard (like JSON based one maybe?) for UI layouts that has emerged, with a React Native adapter for it.
We are trying to solve this problem too with the same approach (the framework isn't the product, it's just because we don't want to spend too much time building custom Mobile components for our product).
It's not like people haven't tried. Just Microsoft has probably a half dozen of these. MAUI, WPF, etc.
Again, just curious that at least one format hasn't emerged for it.
It hasn't emerged because nobody has done it. Nobody has done it because it's unbelievably hard and involves a lot of painful code of the sort that is not fun and therefore that people must be paid to write. Nobody has been paid to write it because nobody pays for dev tools and it's not in the best interest of any platform vendor to commoditize platforms.
Like any reason why Airbnb can’t open source their solution? Seems battle tested.
The thing is that many people HAVE solved this.
Some context - https://github.com/MobileNativeFoundation/discussions/discus...
(Edit to add context)
It simply is not possible to represent the realm of all possible native UIs within a common json schema. We can do it because don't need the realm of all possible UIs. We need a 20 different elements recombined and reused across all our screens.
Which is also a strength because now we can leverage our limitations into delivering a consistent experience across our app.
It can work for simple stuff. For anything more complex the underlying widgets are too different, you have to go with the lowest common denominator and the results just aren't good enough.
Did the author just get lucky with the review process?
This is the guideline I'm referring to: https://developer.apple.com/news/?id=09062019b
I also recall another guy -- who I think was openly advertising it as way to get around app store guidelines got taken down. JSONRoller or something my memory escapes me.
There are plenty of apps out there that are basically this but with custom logic. Lots of other apps are not much more than a webview with a custom "can't contact the servers" screen.
One would hope they'd do their app testing with regular user accounts designed to blend in and not anything tied directly to Apple. Likewise for other well-known forms of obfuscation like changing behavior based on the system date so that it appears fine until the review period is over—though the app could simply refuse to work when the date doesn't match the server, if there is a server component, and that wouldn't be particularly suspicious.
The main deterrent to trying any of that, of course, is that it will get not just the offending app but the entire developer account banned. Those accounts aren't free. Moreover, uploading an identical or even substantially similar app under another account would be recognized immediately, so you'd have to start over from scratch.
The schema even looks similar and as far as I know no one was aware of this project when this was built.
There are major disadvantages to this approach of course but there are also many many advantages.
We've been using the same UI data contract for the last 7 years, which has allowed us to survive several different platforms without adjusting a single line of business logic or UI code.
I noticed a couple of issues on the home page, in case the author is here:
- when I click documentation it says I’m viewing an old version, if I click OK to view the new version it’s a 404 (https://jasonelle.com/docs)
- Try Now links to an empty Heroku page, there’s a button to “build something amazing” but it just links to the Heroku home page
- the YouTube video near the top is private
so - html as json without css and a richer component palette?
1. Encoding behavior in custom components without resorting to Turing complete languages (JS), such that custom components (eg DatePicker)
2. Dependencies between components, like rules, become possible: If textfield A is empty, disable button B.
3. Access to native APIs that are not (yet) implemented in browsers.
I thought jsonnet was pronounced “J sonnet” like poetry, but a friend of mine has always pronounced it like the title of this new tool. He’s an excellent English speaker but it’s not his first language, so I assumed that was related to the different pronunciation. It sounded nice and I never misunderstood the subject, plus he’s excellent at dissecting complex jsonnet templates, so I never felt the need to point out the difference.
Now your comment had me wondering if the alternative pronunciation is more widespread than I realized, and perhaps even the “correct” way, so I looked it up… must be a common question because it’s right there on the bottom of their home page, haha
> The name Jsonnet is a portmanteau of JSON and sonnet, pronounced "jay sonnet".
* https://engineering.fb.com/2016/03/09/android/how-we-built-f...
* https://www.facebook.com/MetaforDevelopers/videos/facebook-l...
Now even to a small UI change I need to redeploy the app to app stores, which is ...tiresome.
A pity I didn't know this way before.
[0] https://news.ycombinator.com/user?id=gliechtenstein [1] https://github.com/intercellular/cell - celljs.org from the Show HN no longer works
I'm working on getting a release out in the next month or two (Open Source).
I don't mean X11, maybe I'm thinking of the way to GTK-ify bash scripts.
Having JavaScript support as well would be amazing (but I presume that's breaking some app store rules).
So this will be even less native of an experience than React Native.
I think it is however a good thing for prototypes and internal company tools.
https://medium.com/airbnb-engineering/a-deep-dive-into-airbn...