André Staltz: Reactive Progamming is no longer niche 🙌
We asked André about his background and the future of Reactive Programming
We’re bringing you an interview with André Staltz, an independent consultant and the author of Cycle.js. He’s enthusiastic about reactive programming and functional programming, and he’s currently helping build an open source peer-to-peer social network with Scuttlebutt, while supporting his existing open source libraries like Cycle.js and others.
How do you usually introduce yourself?
I’m an open source hacker. I try to make a living by building open source software (funded through donations), teaching programming (online and offline), and in general promoting free software. In the past, I’ve worked as a software consultant, and in my free time I started building a framework called Cycle.js. Today it’s one of well known alternatives after the Big Four (React, Angular, Ember, Vue).
How did you end up being a developer? What do you love the most about your work?
As a teenager I made a lot of small computer games on my own time, and from there it sounded reasonable to pursue a career in software development. To me, it’s always been about creativity and exploration. The day programming stops being fun and challenging, that’s the day I’ll probably look for some other career. There seems to be a never ending puzzle of problems to solve, and you can solve them in multiple creative ways. This mountain of possibilities is exciting to me.
I’ll assume “Reactive Programming” stands for a programming style that resembles spreadsheets, where we use computed formulas that dynamically recalculate. Two popular libraries that represent this programming style are RxJS and MobX, both of which are common to find among users of popular frameworks like React and Angular. It’s difficult to say whether this programming style is “dominating” or will dominate the community (I would prefer that nothing dominates!), but certainly it has gotten to a level where it’s no longer niche and obscure. It’s relevant and well known.
What’s the main con of RP?
It works well for UI and events, but not for all purposes. For instance, I wouldn’t recommend reactive programming to build a CLI, because it’s not the best choice for sequential and looping evaluations.
How hard it’s to start adopting RP full scale and how much time could it take to feel comfortable with it?
It took me 2 months, as a beginner, to feel comfortable with it. It may be hard sometimes, but it is knowledge that can build on top of existing knowledge (for instance Array map and filter, as well as many lodash utils). Also, it is knowledge that you can later transfer to other similar technologies, because its operators are often universal to many languages and domains.
Which recent project/event contributed the most to the adoption of Reactive Programming in the JS community?
For better or for worse, Angular 2+ shipped with RxJS and that certainly made a huge difference to the adoption of RxJS and reactive programming in general. RxJS was already a big thing among multiple framework users before Angular 2+ came around, but after that, there was a massive influx of programmers wanting to to understand and use RxJS. I know that because I follow questions about it on StackOverflow daily, and the traffic had noticeably changed.
Is the web platform ready for truly peer-to-peer apps?
No, and that’s why it’s necessary to build new technology for a new Web. The current web platform has some tools, like WebRTC, IndexedDB, Webtorrent (not official, but nonetheless works on the normal web), that help when building peer-to-peer apps, but we need a better platform that supports easy peer-to-peer discovery and connectivity, without middlemen, as well as better local databases (IndexedDB is not great).
So the common approach for people building the new Web is to ship entirely new browsers, for example, Brave, Beaker, Blockstack browser, or to ship extensions for existing browsers (e.g. Metamask). The web was originally meant to be an authoring-and-consumption platform, so early browsers had features where you could create a website. We need to return to those principles, and add modern features aligned with our expectations as modern web users, in order to build the web we deserve: without middlemen, with easy authoring and publishing, and with data ownership.