I would like to share with you my project, Lady Deirdre.
Lady Deirdre is a framework that helps you create new programming languages in Rust. It is specifically designed to develop compilers and interpreters with support for code editor extensions (LSP servers) from day one.
The framework includes essential components to design parsers and semantic analyzers capable of incrementally reparsing dynamically evolving source code.
Lady Deirdre can be seen as a replacement for preexisting projects with similar goals, such as Tree-Sitter, Rowan, or Salsa. However, Lady Deirdre aims to offer a unified framework API that guides you through the steps of programming language development, providing even more components necessary to develop a full-featured language ecosystem. For example, components to develop a source code formatter.
I will be happy to answer any questions.
Ilya
Tree-sitter is widely supported (both in editors and on web) for syntax highlighting as well as making semantic nodes available for external tools to interact with. Is there any chance you'd add a tree-sitter integration to this project? Or conversely, build out a compatible API that can be used with editors/tools that use tree-sitter's library?
The licensing is a bit confusing - for example, what happens with open-source projects that use this that are then used in commercial projects?
That's an interesting idea. Tree-Sitter and Lady Deirdre are quite different in their approaches to parsing. Tree-Sitter is a GLR parser, while Lady Deirdre is a recursive-descent parser. In the Lady Deirdre API, there are customizable traits that let you define new types of files with parsers ("documents" in terms of Lady Deirdre). Perhaps it would be possible to create an adapter, but I would implement it as a separate crate.
> what happens with open-source projects that use this that are then used in commercial projects?
Good question. The idea is that if you link to Lady Deirdre in the Cargo.toml dependencies, it is up to the commercial project authors. They will compile the actual executable intended for selling by downloading both your crate and my crate. However, I'm not a lawyer, and this is not legal advice. Just my thoughts.
That being said, I really doubt anyone will buy a commercial license. People don't sell compilers and IDEs, and the ones who do are large corporations who make everything themselves. Look at state of language tooling today: nearly every compiler is open-source, every language server is free, every IDE is free except JetBrains (a well-known company with a large reputation) and Sublime Text (being heavily replaced by VS Code), and anything not open-source has an active open-source alternative. Nobody's going to buy a license from you to sell their compiler, because nobody's planning to sell their compiler.
For this reason I'd recommend changing the license. I don't think it's overly-restrictive or dishonest, I think it's fair to expect being paid if someone makes >$200,000 off your work. But nonetheless it hurts adoption, a lot of people will see "proprietary" and not even read the license text. You're more likely to make money distributing it as MIT / Apache, letting it get popular, and setting up donations/sponsorships to fund development. But honestly, if you're looking to make money this isn't the space to do so: you could be hired by someone to work on PL, or you could sell something like a game, but you're not going to sell your own PL.
I agree with your point about the licensing. I would also add that tools for the development of compiler front-ends are quite a niche market. So, honestly speaking, I don't plan to earn much from my project regardless of the license terms. This work is part of a higher-level in-progress toolset, which is closer to the end users. I have dedicated it as a separate project primarily for public preview, with some restrictions on distribution and use, as I haven't decided on the overall toolset distribution model yet. But it is possible that I will change the licensing terms of Lady Deirdre in the future to something less restrictive (maybe even MIT) to make it more popular, this is just not my current goal. I apologize for any inconvenience my current licensing terms may cause.
Friendly advice from a stranger, worth what it costs: I believe the greatest inconvenience of a commercial license will be to _you_, as opposed to end-users.
The market is so saturated with open source, developers expect it, and commercial licenses cause huge usage friction and doubt.
The "dual license" died as a viable business model around the time Meta (née Facebook) and Microsoft starting investing billions into free-as-in-beer OSS, 10-15 years ago.
Today, this model will only sabotage usage. People using your OSS is good. Even if your goal isn't to become popular, usage & feedback are learning, and while it's fine for popularity not to be a goal, I would encourage you not to proactively target the opposite of popularity.
If you have some other IP (the other tech you're describing) that can remain proprietary or wrapped behind a service, then people using other pieces of your stack for free is a _really good thing._ At least, they're aware of your brand and have started to trust it. At best, they're ready to use your commercial offering out of the gate.
That's correct. The license agreement requires purchasing a commercial license per product if it reaches a certain revenue threshold. I believe this price should be feasible for a business, and this restriction is not unfair for regular programmers either. To clarify, the license needs to be renewed annually to continue receiving new versions from me. Additionally, I reserve the right to change the price in the future. However, license renewal is not a strict obligation. You can continue using the previous versions if you buy the license at least once.
The idea is to replace the donation model widespread in typical OSS projects with a formal obligation to purchase a license. I believe this approach more accurately expresses what the authors really want in exchange for their labor.
So as it is, I seriously doubt that anyone wanting a quicker way to implement a language will use this; why would I want to hamper adoption of my language by hobbling it with such a license?
(did you know the game + expansion are available for 4.99 on Steam and it runs out of the box on linux? Just saying)
It would have also gone a long way if you had mentioned the licensing, which I am always interested in: https://github.com/Eliah-Lakhin/lady-deirdre#copyright
As for a question: why the seemingly needless location of everything down in a "work" folder? Is there something else that you envision one day living at the top-level which you just planned for by putting everything someone would care about one further click away?
> why the seemingly needless location of everything down in a "work" folder?
It's just easier for me to organize the filesystem this way on my local machine. Everything that is unrelated to the development is outside of the work directory. Also, the license agreement refers to the "work". Perhaps it would be clearer for users if the work directory is clearly dedicated.
> Is there something else that you envision one day living at the top-level which you just planned for by putting everything someone would care about one further click away?
Everything that I planned to publish that is related to Lady Deirdre is already in the repository. I use this project for my other programming language project that I plan to release soon, but it will be in a separate GitHub repo. Actually, Lady Deirdre initially was separated from the language project codebase as I thought it may be useful for other programming language authors.
To be a true replacement, there is at least one crucial feature missing: A LICENSE file that starts with "The MIT License (MIT)".
Nothing against "source available" but thinking to have a chance to stand in for more permissively licensed projects is very much unrealistic.
I really hope there's a model out there for OSS at least where folks can get paid.
I always wondered what if engineers had a $100/month budget to donate to OSS founders. It wouldn't cost an employer much and would be a good way to give back.
How much, monetarily, would you be willing to contribute to implement that feature?
What I am saying is, that if the elevator pitch for the project you are trying to monetize is "this is a replacement for $MIT-LICENSED-PROJECT" you will have a hard time.
The question the elevator pitch should answer first is how much this brings to the table to make me consider paying instead of just using the permissively licensed project for free.
I don't have a retained lawyer or legal budget, so it's just risk aversion on my part to treat this project as radioactive and never once look inside. Same reason a lot of folks don't look at GPL'd things.