logo

drewdevault.com

[mirror] blog and personal website of Drew DeVault git clone https://hacktivis.me/git/mirror/drewdevault.com.git

Dependencies-and-maintainers.md (4590B)


  1. ---
  2. date: 2020-02-06
  3. layout: post
  4. title: Dependencies and maintainers
  5. tags: [philosophy, free software, maintainership]
  6. ---
  7. I'm 34,018 feet over the Atlantic at the moment, on my way home from FOSDEM. It
  8. was as always a lovely event, with far too many events of interest for any
  9. single person to consume. One of the few talks I was able to attend[^1] left a
  10. persistent worm of thought in my brain. This talk was put on by representatives
  11. of Microsoft and GitHub and discusses whether or not there is a sustainability
  12. problem in open source ([link][fosdem archive]). The content of the talk,
  13. interpreted within the framework in which it was presented, was moderately
  14. interesting. It was more fascinating to me, however, as a lens for interpreting
  15. GitHub's (and, indirectly, Microsoft's) approach to open source, and of the
  16. mindset of developers who approach problems in the same ways.
  17. [fosdem archive]: https://fosdem.org/2020/schedule/event/foss_sustainability_issues/
  18. [^1]: And strictly speaking I even had to slip in under the radar to attend in the first place — the room was full.
  19. The presenters drew attention to a few significant crises open-source
  20. communities have faced in recent years — left-pad, in which a trivial
  21. library was removed from npm and was unknowingly present in thousands of
  22. dependency graphs; event-stream, in which a maintainer transferred project
  23. ownership to an unknown individual who added crypto mining; and heartbleed, in
  24. which a bug in a critical security library caused mass upgrades and panic
  25. — and asks whether or not these can be considered sustainability issues.
  26. The talk has a lot to dissect and will frame my thinking and writings for a
  27. while. Today I'll focus on one specific problem, which I called attention to
  28. during the Q&A.
  29. At a few points, the presenters spoke from the perspective of a business which
  30. depends on up to thousands of open-source libraries or tools. In such a context,
  31. how do you prioritize which of your thousands of dependencies requires
  32. attention, for financial support, contributions upstream, and so on? I found
  33. this worldview dissonant, and asked the following question: "why do you have
  34. thousands of dependencies in the first place?" Because this approach seems to be
  35. fast becoming the norm, this may seem like a stupid question.[^2] If any Node
  36. developers are reading, scan through your nearest node_modules directory and see
  37. how many of these dependencies you've even heard of.
  38. [^2]: If so, you may be pleased by a Microsoft's ridiculous answer: "we have 60,000 developers, that's why."
  39. Such an environment is primed to fail in the ways enumerated by this talk.
  40. Consider the case of the maintainer who lost interest and gave their project to
  41. an untrusted third party. If I had depended on this library, I would have
  42. noticed long ago that the project was effectively unmaintained. It's likely that
  43. I or my peers would have sent patches to this project, given that bugfixes would
  44. have stopped coming from upstream. We would be aware of the larger risk this
  45. project posed, and have studied alternatives. Earlier than that, I would
  46. probably have lent my ear to the maintainer to vent their frustrations, and
  47. offered my help where possible.
  48. For most of my projects, I can probably list the entire dependency graph,
  49. including transitive dependencies, off of the top of my head. I can name most of
  50. their maintainers, and many of their contributors. I have shaken the hands of
  51. these people, shared drinks and meals with them, and count many of them among my
  52. close friends. The idea of depending on a library I've never heard of, several
  53. degrees removed via transitive dependencies, maintained by someone I've never
  54. met and have no intention of speaking to, is *absolutely nuts* to me. I know of
  55. these problems well in advance because I know the people affected as my friends.
  56. If someone is frustrated or overworked, I'm right there with them trying to find
  57. solutions and correct the over-burden. If someone is in dire financial
  58. straights, I'm helping them touch up their resume and introducing them to
  59. companies that I know are looking for their skillset, or helping them work on
  60. more sustainable sources of donations and grants. They do the same for me, and
  61. for each other.
  62. Quit treating open-source projects like a black box that conveniently solves
  63. your problem. Engage with the human beings who work on it, participate in the
  64. community, and *make* it healthy and sustainable. You shouldn't be surprised
  65. when the 3 AM alarm goes off if the most you see of a project is a line in your
  66. `package.json`.