Open Sourcing Deadpendency

2023-02-24

I created a tool called Deadpendency, which is a GitHub app that checks for dead (abandoned) dependencies in your GitHub repo.

There were some trials and tribulations, but ultimately I was successful and I built the thing. In Haskell no less, which worked out pretty great!

Unfortunately, the product itself was not successful at getting paid users and I pulled the plug.

I have decided to open source it, so it might still serve some purpose!

https://github.com/deadpendency/deadpendency

What Is Deadpendency?

tl;dr

Deadpendency Tldr

Why Open Source It?

In a nutshell, I don’t have plans to work on it anymore, so why not 🙂.

Disclaimer: It was a startup and I was juggling full time work for part of it, so certain corners were cut.. Nonetheless, I am generally quite proud of it and think it may be interesting to Haskell developers in various ways.

I won’t go into too much detail in this post, as I have put lots of detail in the readme and linked docs. However, what might be of value?

A Haskell ‘DevOps’ Pattern

Probably the best aspect is something I have iterated on for a number of years is the way they code is built, tested and deployed, both locally and in CI. This solution is quite simple and offers great cacheability and reproducibility.

The Deadpendency Solution

Purely as a solution to the problem, I think it is quite clean. I had to iterate on it a lot as it is seemingly pretty simple, but in actuality quite complex (shocking I know.. 😉).

A Complete Monorepo Haskell Solution

Contained is a complete solution with all the terraform to run Deadpendency, or any API feeding into a pipeline, on google cloud run (why I chose google cloud). It is done in a monorepo style with minimal overhead to connect a bunch of small components (AWS Lambda like functions) together. I think it worked out quite nicely.

Lots Of Pretty Diagrams And Reflections

I tried to diagram and document as much as possible. You can trace the documentation through from the readme. Hopefully this is interesting to some people 😃.

Can I Start Checking My Dependencies Right Now!?

No, not really. It is a very specific solution designed to run as a GitHub app in google cloud. Everything you need is there to convert it to some CLI tool, however it would take some time to do this conversion. I do not have plans to do so currently.

Conclusion

Haskell meme

Check it out!