André Staltz, a JavaScript and open source developer, writes about web centralization, open source sustainability, reactive programming, and decentralized social networks.
HN commenters link his essay on the time until an open source alternative appears, and discuss his Cycle.js framework and its ergonomics.
This is a very useful walkthrough.
Some links for those who are also interested in "Thinking in React" in a more conceptual way (#4 is a presentation from the same person who wrote the walkthrough):
1) React — Basic Theoretical Concepts: “A description of the conceptual model of React without implementation burden.” https://github.com/reactjs/react-basic
2) Pure UI: “A lot has been written about the merits of React as a framework. Today I’m compelled to write about the benefits of a programming model it enables and its implications to the design and creation workflow." http://rauchg.com/2015/pure-ui/
3) Removing User Interface Complexity, or Why React is Awesome: “I’m mostly concerned with the core problems of data binding and componentizing UIs. After much research and usage of the technologies mentioned above, I found React to provide the best solution.” http://jlongster.com/Removing-User-Interface-Complexity,-or-Why-React-is-Awesome
4) Pete Hunt: React: Rethinking best practices (youtube): “building views with JavaScript, ‘re-rendering’ your entire application when your data changes, and a lightweight implementation of the DOM and events.” https://www.youtube.com/watch?v=x7cQ3mrcKaY
5) Nothing new in React and Flux except one thing: “What is it that makes React so innovative and compelling?… The Virtual DOM allows us to convert a mutable retained mode graphics API to an immutable functional immediate mode API.”…
I was offered a donation once. It turned out to be some kind of scammy new crypto coin that someone was trying to push. That was a very sad low. Besides that, I got a $10 donation of real money once. I treat open source as just a hobby, I'd love for it to be something more but analyzing the situation it's not very realistic.
Read this amazing article on how much money Open Source makes: https://staltz.com/software-below-the-poverty-line.html
The best funded JS open source project, Vue.js, receives $16k/month[1]. That's a single-developer level of income in SV. The fact that TechCrunch, who regularly covers multi-million deals and CEOs making millions, says that "the revenues can be outsized" with these numbers is ingenuous at best: https://techcrunch.com/2018/06/23/open-source-sustainability/
So you have few realistic options:
- Save enough money to not need to work again (FIRE - Financial Independence, Retire Early, etc).
- Live very cheap, which could be a flip side of FIRE. Be ready to move to Thailand and other cheap countries.
- Work on open source on the weekends or after work. Alternate working N months/years and then doing OSS M years.
- Do consulting as a part time job and open source. If you play your cards right you might be able to join both consulting and OSS somehow.
- Find the companies that do open source and apply for jobs there. Not so many options, but it's realistic.
Cycle is really cool, and I'd love to see reactive programming become more popular, but after trying it out for a project it has a few ergonomics issues that keep me from using it as my primary web framework.
- Dynamic lists of components are really annoying to create. In Cycle, the happy path is calling every component function in your app at startup to set up the data flow graph, and then your reactive operators handle the actual logic. With dynamically added or removed components, you get a stream of "sinks" and then have to splice them into your data flow somehow.
- Circular dependencies are cumbersome. If a parent passes a value to a child which can change that value in the parent, you essentially have to create a stub stream in the parent, use it to derive the parent's state and then "imitate" the output of the child as well.
That said, Cycle has a lot of great ideas that I want to become more mainstream. If you have a free weekend, try it! The creator André Staltz's blog is also a good read: https://staltz.com/
http://www.nncpgo.org/Comparison.html
This is really amazing stuff. Years ago, I was heavily interested in scuttlebutt [1]. I'm interested in grid down and "occasionally connected" communications. I particularly liked the island to island sailing analogy.
SSB has a few downsides - mainly that your client needs to download full logs. You can't just request the last 30 days. They call this out as well that your first sync could take over an hour and consume several gigs of data.
I'm just today learning about NNCP, but I've used FidoNet and UUCP in the past, so the concept is pretty familiar to me. In my mental model, I would be less interested in sneakernet than standalone wifi hotspots that one could connect to and exchange data, possibly combined with an AREDN style mesh[2].
[1]: https://staltz.com/an-off-grid-social-network.html
[2]: https://arednmesh.readthedocs.io/en/latest/arednGettingStarted/aredn_overview.html
https://beepb00p.xyz/sad-infra.html
This one had some impact on me because it revived the importance of taking ownership not only on my personal data, but the infrastructure which generates it, processes and stores it; and that the same infrastructure should be well thought of by me through a tinkering process which adds value to itself and to data the more I invest time on it.
I felt very motivated to rethink my workflows, my opsec and the way I store any data, not only new data I create, but general content that find around the Internet and that I think could be of any use in the future.
An honorable mention would be this one: https://staltz.com/the-web-began-dying-in-2014-heres-how.html which helped me look at how the web has been evolving from a different angle and, of course, triggered me to change some of my behaviors regarding privacy and the use of big tech derived products.
As already mentioned, they're a lot better than callbacks (well, for certain cases. There are still places where callbacks are better).
The problem is that this is a field that has been heavily studied, and there are great solutions to this problem that also solve countless other problems, and interop well with each other. The way promises work, they solve that ONE problem but throw away the rest.
If you have the choice between 2 mostly equivalent solutions to solve a problem, but one of the solutions also solve 10 other problems with essentially no drawback, why would you choose the former?
This is probably already linked in this thread somewhere and is also probably was prompted someone to post this old issue to Hacker news, but this is a good explanation of the problem:
https://staltz.com/promises-are-not-neutral-enough.html