Krabby appeared on Lobste.rs last week, and I’ve since received e-mails from people interested in contributing! I’ve created a Zulip chat for discussions; feel free to join it whether you want to observe what’s happening or participate yourself. If you’re interested but unsure what you can help with, perhaps take a look at the list of open issues.
Some of those e-mails asked whether Krabby is still being actively developed. I will strongly affirm that; yes, Krabby continues, and I’m as motivated as ever (if not more now!). While it’s still incredibly limited in functionality, I have a lot of plans, and I’m really excited. Let me give you a quick status update.
I am currently working on Krabby’s query system. The PR hasn’t been updated in a while, but that’s because I got side-tracked by developing housekeeping, which is now finished. (I will write about it sometime soon, I promise!). I am in the middle of rewriting the PR to use it, but work there is paused while I design a cycle detection algorithm and prepare my RustWeek talk. I expect to push some changes next month.
Krabby now has one active external contributor! Viv is looking into implementing declarative macro expansion. You can follow her progress in the declarative macros PR. This will eventually get stitched into the name resolver with the new query system.
licensing
Until now, Krabby used the Keypunch Public License; this disallows commercial use and made Krabby non-FOSS software. While this matches my principles in general, I think Krabby needs an exception. Changing the license has been on my mind for a while, and has been accelerated by external interest.
Using an unconventional license like Keypunch is obviously an inconvenience. It would be justified if there was a serious risk of commercial use; but I don’t think there is any. Krabby is, at its heart, a research project. I expect it will take many years to reach (partial) parity with cargo check; I refuse to think about code generation until then. Krabby is not going to be a valuable replacement for anything in the foreseeable future.
After some deliberation, I have decided to switch to MIT / Apache-2.0 dual-licensing, as is convention across Rust projects. This makes it easier to vendor code from rustc and rust-analyzer; it simplifies matters for potential contributors; and it makes the project and its ideas more accessible in general.