Starting from today, I am no longer using Bun, the JavaScript runtime.
I had used Bun to build all my websites that are made with the static site generator Eleventy. I enjoyed using Bun because it was indeed fast, and I found its name and logo adorable. I even openly praised Bun during my first talk at THE Eleventy meetup in September 2024.
I was a happy user of Bun for more than a year... until I found out through David Bushnell's post that the Bun team had been posting art for Bun that was clearly inspired by United States propaganda, on X/Twitter the nazi bar. Fucking yikes.
Even though I am not American, I am aware of the U.S. politics enough that the fascist government holds nothing but contempt for people like me — queer, disabled and not white. Therefore, I am wary of anyone, especially Americans, who act like the American status quo is fine, and I do not have the privilege of being comfortable with pretending things, including technology and software, can be separated from politics when the people behind those things support or enable politics that endanger people like me. Therefore, learning that the creator of software I use holds abhorrent politics absolutely can and has been a deal-breaker for me.
To be honest, I felt bad for having openly promoted Bun after finding this out. This was not the first time I enjoyed things made by people with terrible politics without realising it, but this strung a bit harder because it was something I openly sang praises for in front of others. Fortunately, there is still Node.js as the long-standing option for a JavaScript runtime to fall back to, as Node.js still receives better support from major JavaScript projects, including Eleventy, than Bun does.
My migration from Bun to Node.js was smooth in the most part, thanks to Bun being designed as a drop-in replacement for Node.js. During the migration, I learned that you can send command line arguments to your existing npm scripts with --. For example, if I have created a build script in the package.json file of my Eleventy website project for the command npx @11ty/eleventy, and then I wanted create a start script for starting a local development server for running my Eleventy project, instead of npx @11ty/eleventy --serve, I can set the value of the script as npm run build -- --serve.
"scripts": {
"build": "npx @11ty/eleventy",
"start": "npm run build -- --serve"
},
In conclusion, I am sticking to Node.js for all my JavaScript projects, including my websites, until maybe there is a better replacement for Node.js as a JavaScript runtime that is not created or run by people with very questionable politics.