Racket frustrates me
Sorry if I upset any of the nice Racket folks out there.
It’s time for a little reality check. First, repeat after me:
Coding is a tool to get stuff done. If you let your programming language impact your productivity, you are not in charge, the technology is calling the shots.
§Why would I use Racket today?
Do I want to iterate every 18 hours waiting for the pkgs.racket-lang.org build server to finish building my package? Then do it again because the build failed (my mistake, but now my users have to wait until later that week…)?
Do I want to worry about packaging and deploying Racket code or could I simply do the same in most other languages without any fuss? I tried packaging Racket in Nix, it did not go well.
Do I want to invest trust in a programming platform that considers umask of optional importance?
Do I want to force users to adopt an application written in a language that
uses at the very least
122M resident memory on my workstation? Or do I
consider Python or Guile which both use less than
Do I want to force users to package Racket which itself has no clear custody of its build inputs - can you produce a Racket tarball yourself that is exactly like the one on the release site? Who knows what’s in those tarballs!
Do I want to invest in a community without a mechanism to apply community feedback constructively? RFCs?
Do I want to write 4x the code (in Racket) because I forgot my secret move was actually all the pypi packages that I took for granted in Python?
Do I want to wonder about what was meant by “contributions welcome” when most of the core racket codebases at best have a README, at worst have no contributor documentation?
Do I want to invest in a platform where leadership is building Rombus a.k.a. Racket2 instead of focusing on making core Racket just that much better and easier to adopt? (see also: Future of Racket.)
Do I want to wait 10+ minutes for my package to build in CI because some other
package maintainer decided to pull in
racket-doc (which pulls in
the entire big Racket distribution)?
Do I want to ship multi-gigabyte docker images because of the above kitchen sink package?
Do I want to deal with being blocked due to not understanding how to use the less understood features of racket such as continuations, syntax-parse/syntax-case macros, units/signatures? You’ll want to know about all these things to write effective Racket code.
Do I want to add business risk by writing a product in Racket? Does anybody work as an industry Racket coder at all? Would I struggle to hire more talent?
Do I…. yeah there’s more but let’s move on ;)
§No I don’t want to invest more time in Racket
This post took forever to write. I’m giving up a portion of myself (and allowing for more growth) by giving up Racket. My initial premise was that Racket could replace Python in my workflows. For a time that seemed to work.
But then the real hard truths started to appear. I was losing a lot of productivity. The productivity losses were incremental but certainly slowed down my velocity significantly over the last seven years. Sure the language has a lot of wonderful features, but there’s more to a good programming language than well, its programming language.
I also believed I could make a career out of using or supporting software related to or written in Racket. I think this was a bit too ambitious from my perspective. Where did the racket-money mailing list go? Or really all the production users? I only found one production user.
So long and thanks for all the standard fish.
I’m giving away the
racket.wiki domain. If you want it and have a Gandi account,
I’ll transfer it to you. Contact info on my home page. Racket leaders, please
consider taking this domain so I don’t end up giving it to a complete rando.
§Discussion on HN
Article made it way on to the Orange Website! Join the discussion here.