logo

drewdevault.com

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

Why-am-I-working-in-private.md (7327B)


  1. ---
  2. title: Why am I building a programming language in private?
  3. date: 2022-03-13
  4. ---
  5. As many readers are aware, I have been working on designing and implementing a
  6. systems programming language. This weekend, I've been writing a PNG file decoder
  7. in it, and over the past week, I have been working on a simple kernel with it as
  8. well. I'm very pleased with our progress so far — I recently remarked that
  9. this language feels like the language I always wanted, and that's mission
  10. accomplished by any definition I care to consider.
  11. I started the project on December 27th, 2019, just over two years ago, and I
  12. have kept it in a semi-private state since. Though I have not given its name in
  13. public, the git repos, mailing lists, and bug trackers use sourcehut's
  14. "unlisted" state, so anyone who knows the URL can see them. The website is also
  15. public, though its domain name is also undisclosed, and it is full of
  16. documentation, tutorials, and resources for developers. People can find the
  17. language if they want to, though at this stage the community only welcomes
  18. contributors, not users or onlookers. News of the project nominally spreads by
  19. word of mouth and with calls-to-action on this blog, and to date a total of 30
  20. people have worked on it over the course of 3,029 commits. It is a major,
  21. large-scale project, secret though it may be.
  22. And, though we've invested a ton of work into this project together, it remains
  23. as-of-yet unfinished. There is no major software written in our language, though
  24. several efforts are underway. Several of our key goals have yet to be merged
  25. upstream, such as date/time support, TLS, and regular expressions, though,
  26. again, these efforts are well underway. Until we have major useful projects
  27. written in our language, we cannot be confident in our design, and efforts in
  28. these respects do a great deal to inform us regarding any changes which might be
  29. necessary. And some changes are already in the pipeline: we have plans to make
  30. several major revisions to the language and standard library design, which are
  31. certain to require changes in downstream software.
  32. When our community is small and private, these changes are fairly easy to reckon
  33. with. Almost everyone who is developing a project based on our language is also
  34. someone who has worked on the compiler or standard library. Often, the person
  35. who implements a breaking change will also send patches to various downstreams
  36. updating them to be compatible with this change, *for every extant software
  37. project written in the language*. This is a task which can be undertaken by one
  38. person. We all understand the need for these changes, participate in the
  39. discussions and review the implementations, and have the expertise necessary to
  40. make the appropriate changes to our projects.
  41. Moreover, all of these people are also understanding of the in-development
  42. nature of the project. All users of our language are equipped with the knowledge
  43. that they are expected to help fix the bugs they identify, and with the skills
  44. and expertise necessary to follow-up on this fact. We don't have to think about
  45. users who stumble upon the project, spend a few hours trying to use it, then
  46. encounter an under-developed part of the language and run out of enthusiasm. We
  47. still lack DWARF support, so debugging is a chore. Sometimes the compiler
  48. segfaults or aborts without printing a useful error message. It's a
  49. work-in-progress, after all. These kinds of problems can discourage new learners
  50. very fast, and often requires the developers to offer some of their precious
  51. bandwidth to provide expert assistance. With the semi-private model, there are,
  52. at any given time, a very small number of people involved who are new to the
  53. language and require more hands-on support to help them through their problems.
  54. A new programming language is a major undertaking. We're building one with an
  55. explicit emphasis on simplicity and we're still not done after two years. When
  56. most people hear about the project for the first time, I don't want them to find
  57. a half-completed language which they will fail to apply to their problem because
  58. it's not fleshed out for their use-case. The initial release will have
  59. comprehensive documentation, a detailed specification, and stability guarantees,
  60. so it can be picked up and used in production by curious users on day one. I
  61. want to fast-forward to the phase where people study it to learn how to apply it
  62. to their problems, rather than to learn *if they can* apply it to their
  63. problems.
  64. Even though it is under development in private, this project is both "free
  65. software" and "open source", according to my strict understanding of those terms
  66. as defined by the FSF and OSI. "Open source" does not mean that the project has
  67. a public face. The compiler is GPL 3.0 licensed, the standard library is MPL
  68. 2.0, and the specification is CC-BY-ND (the latter is notably less free, albeit
  69. for good reasons), and these details are what matter. Every person who has
  70. worked on the project, and every person who stumbles upon it, possesses the
  71. right to lift the veil of secrecy and share it with the world. The reason they
  72. don't is because I asked them not to, and we maintain a mutual understanding
  73. regarding the need for privacy.
  74. On a few occasions, someone has discovered the project and taken it upon
  75. themselves to share it in public places, including Hacker News, Lemmy, and
  76. 4chan. While this is well within your rights, I ask you to respect our wishes
  77. and allow us to develop this project in peace. I know that many readers are
  78. excited to try it out, but please give us some time and space to ensure that you
  79. are presented with a robust product. At the moment, we anticipate going public
  80. early next year. Thank you for your patience.
  81. Thank you for taking the time to read my thoughts as well. I welcome your
  82. thoughts and opinions on the subject: [my inbox is always open][0]. If you
  83. disagree, I would appreciate it if you reached out to me to discuss it before
  84. posting about the project online. And, if you want to get involved, here is a
  85. list of things we could use help with — email me to volunteer if you have
  86. both the time and expertise necessary:
  87. [0]: mailto:sir@cmpwn.com
  88. - Cryptography
  89. - Ports for new architectures or operating systems
  90. - Image & pixel formats/conversions
  91. - SQL database adapters
  92. - Signal handling
  93. - JSON parsing & encoding
  94. - Compression and decompression
  95. - Archive formats
  96. If you definitely don't want to wait for the language to go public, volunteering
  97. in one of our focus areas is the best way to get involved. Get in touch! If not,
  98. then the release will come around sooner than you think. We're depending on your
  99. patience and trust.
  100. ---
  101. *Update 2022-03-14*
  102. This blog post immediately generated detailed discussions on Hacker News and
  103. Lobsters in which people posted the language's website and started tearing into
  104. everything they don't like about it.
  105. It's not done yet, and the current state of the language is not representative
  106. of the project goals. This post was not a marketing stunt. It was a heartfelt
  107. appeal to your better nature.
  108. You know, I have a lot on my plate. All of it adds up to a lot of stress. I had
  109. hoped that you would help relieve some of that stress by taking me seriously
  110. when I explained my motivations and asked nicely for you to leave us be. I was
  111. wrong.