Safer paths, part 2 - Stop, Reconsider, Contribute
Last week I published a paths library. I showed it to the Haskell subreddit and learned from their reaction.
With good intentions I set out to create a safer way to handle paths in Haskell. After a few days of coding and lots of testing, I had a first draft of a solution. Some polishing later, I put it up on Hackage, wrote a blog post about it and put the blogpost up on reddit.
I got very reasonable not-so-positive reactions. The main reaction pointed
me to the path
library. This library solves the same problem (and does it better) and is
much more widely used. Subsequent reactions made me reconsider what made
safepath different in the first place. I decided to stop work on
safepath for now.
There are aspects in which
path is superior to
safepath. Most notably: it performs better, is already widely
used and has some more advanced safety features. The biggest (and arguably
only) advantage of
safepath was that
tested much more thoroughly.
If I was going to make
safepath better than
path, I was going to have to copy a lot of features and then
convince people to start using
safepath instead of
path in the future. It would have been a lot of extra work, just
for a more thoroughly tested safe paths library.
That is why this post’s title is not “Safer paths, part 2 -
safepath IO operations” as I had planned last week.
Instead of stubbornly continuing work on
safepath, I am
currently trying to contribute tests to the paths library. You can follow the
progress here. When
this is done, I will deprecate
safepath and point any users