4 ms·
I guessed the topic from the page title and am glad to second your comment. Your third paragraph is I think is even more broadly true: I'm not _that_ old, I lea
by acdha 1y ago
I guessed the topic from the page title and am glad to second your comment. Your third paragraph is I think is even more broadly true: I'm not _that_ old, I learned C in the 90s, have contributed to some widely-used C-based open source projects (I don't want to overstate this ), etc. but even with that experience, I would avoid working on a C-based project if I had to simply because using something like Rust is so much more pleasant as a developer from better functionality to package management to the experience of using the toolchain. People do that because it's a job, but working on things like coreutils doesn't exactly pay “this is now interesting” money.
The biggest C-based open source project I personally started is https://github.com/acdha/mountstatus https://github.com/acdha/mountstatus. It's a simply utility I made back in the early 2000s when I worked at a place with a lot of Linux/FreeBSD/Solaris/OS X servers using NFS storage and needed the low-level control to have a process be able to reliably scream for help when we hit the various kernel bugs which would cause an entire mount point to hang in a way which caused any normal filesystem operation to hang, which I did by forking a child process and testing whether it stopped responding. Since that stayed in memory all the time and needed to be portable, C was a natural choice and it worked well enough but there were a few features I never worked on because the pain and suffering level of managing concurrency or pushing metrics to Prometheus was a psychological deterrent, especially when I changed jobs and any time spend on OSS was coming out of my hobby time.
At some point I decided to try rewriting it in Rust, and I was happy with the results and cut v2.0 in 2017. It wasn't _that_ much time – this is a tiny project – but the subjective experience was that it didn't feel so much like a chore and not having to worry about things like package management changed how you approached features which should be simple and stayed simple because Rust package management is simple compared to managing C dependencies on multiple platforms. (As a cautionary note, I became a parent later that year and you can see the decline in free time set in pretty hard)