Preamble
This article is meant as a discussion in particular about the technical attitude towards progressiveness. It is in neither way meant to insult or diminish the great work of the folks behind babel or similar tools that are mentioned. Please keep it up, you rock and the open source world definitely needs you!
"Babeling-up" and why it harms us
So you've built that brand new website, or service, or piece of code. Now it's time to go awesome and ship it to the world! Okay, let's make a checklist
- [x] make sure all bugs are fixed before release
- [x] make sure you have an awesome release name
- [ ] make sure it runs everywhere
- [x] package it, upload it. There you go. The world loves you ❤️
Now. The third part on our list is particularly cumbersome. From my experience working with the folks behind Inexor I know that this can be almost all the work. You think you're done with shipping an amazing release, but the pages turned against you and it's double the amount of time now to get it work everywhere. So this happened to me once, twice, a third time, over and over. Full stop. One time it took me and my coworkers an entire week to make our latest feature available on IE10. I was wondering why it'd had to be this way, and it kind of makes sense for the commercial sectors. However, there is a worrying trend in the open source community, that tries to workaround this issue. Some projects that spring off my mind are:
- TypeScript
- CoffeeScript
- Babel
- Webpack
These all try to solve a common problem: bring an new featureset to older platforms.
We are trying to comfort our users with polyfills, and at the end of the day we've spent an insane amount of time supporting all of the deprecated environments out there. I'd say this has to stop.
The question that came up next in my mind was: "how do we make our technologies more progressive". I remember when I once helped a colleague of mine submit a feature proposal to the python committee, and as far as I can tell, it was an awfully hard experience. Reading through the W3C standards group, and the ECMA standards proposals is neither satisfying.
It should be significantly easier to write and test enhancements. This is particularly true for browser standards, where a new idea can take years to centuries to be implemented. Therefore I suggest to those projects (yes, I am looking at you libcef, although you do much better recently) to provide mechanisms to write and ship language and framework enhancements conveniently.
Why pushing the implementation burden isn't enough
Given we had those amazing API's and workflows to write enhancements, that wouldn't really change a thing. It's a good first step towards progressing technology. In the aftermath though it doesn't really change a thing. When we take a closer look at the history of software industry, there has been a huge efforts to improve this situation. Why hasn't it succeeded yet? The answer is pretty much: mindset. Most developers fear the urge of unpleasing their users with updates. This might be unfeasible for a business. For open-source, this attitude actively hinders development. We, as a community should be forcing users to keep at pace. Why support IE10? Why support Windows XP? Honestly, nobody should use that, and we should protect the software community as a whole from using deprecated environments. This is an encouragement article! Don't fear your users. Break their workflow. Progress open source. Only with a mindset where we force users to use up-to-date environments, change will finally come.
So please: next time you start a new project, don't use babel, don't use python2, don't use node4. If your user can't switch their environment, it's certainly not your responsibility to deal with. Remember: You give your free time and effort to that project. If your user can't update because he or she is in a protected environment, hack, they should demand their administrators to make it possible!. Only such an attitude will put enough pressure on the end users, hence make progress possible.
Top comments (0)