22 ms·
"users don't want to kill themselves during interaction" - touché :) I agree with you, but taking the create-react-app example again - I can very quickly scaff
by mephitix 9y ago
"users don't want to kill themselves during interaction" - touché :)
I agree with you, but taking the create-react-app example again - I can very quickly scaffold a react app with necessary toolsets, built on top of webpack. This gets me up and running without having to mess with webpack config.
At some point, I need to break out of these opinionated guardrails and do my own thing. At that point create react app has an 'Eject' feature which opens up the black box and dumps all webpack configuration and scripts for me to hack away on. The Anvil tool seems to have something similar where you can grab all the sources, download, run, and publish it yourself.
- meredydd 9y agoAs a rule, I'm not a fan of the "Eject button" pattern. It's an admission of defeat. It says, "because you needed one advanced feature, I am now dumping you into the Wild West I was previously protecting you from. Good luck!" A much more interesting approach is to acknowledge that your system will always be incomplete, and provide ways of using more complex external features without abandoning simplicity for the other 90% of your project. We call this pattern an "escape hatch", rather than an "ejector seat", because you don't need to jump all the way out at once. Anvil has escape hatches all over the place: * If you need to use code (or hardware) outside our server environment, you can use our Uplink library to connect arbitrary code anywhere in the world to your app - but you still get our drag'n'drop front end and seamless RPC. (You can even use our built-in database from uplink code.) * If you need a browser feature we don't support yet, you can call to/from Javascript with our FFI - but you can still wrap it up in a Python form and use that from our visual designer. * If you need to use a front end that isn't built with the Anvil UI toolkit, you can expose Anvil server functions as REST endpoints and use them from your {iOS|Android|vue.js} app. But you can still use those same server functions from Anvil client code, with full autocomplete. * If you need direct textual access to your source code, or to do advanced version control operations, or to do CI/CD, you can clone your app as a Git repository. But the moment you push those branches back up into Anvil, you can edit your app with all our tools. (The editor will happily represent Git histories that it cannot [yet] create itself.) Give me an escape hatch over an ejector seat any day.
- mephitix 9y agoVery cool. I had no idea about some of these features. 'Escape hatch' is a much better way to think about this instead of 'eject'. Re. create-react-app: I definitely prefer it when other libraries (like cosmos or storybook) integrate directly with CRA without forcing me to eject. It sounds like these features go a long way toward addressing the concerns people had re. my parent comment. You can provide custom frontend or backend code with sacrificing too much of the power of Anvil.
- TXV 9y agoHi, cool project, really. As a backend developer I often feel stranded when going about web app frontends. And it's so hard to find WYSIWYG editors that don't suck. What about supporting Java for the coding, though? Is this going to happen at some point?