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.
1. Charge money for the software
2. Charge money to help people implement/use the software
3. Leverage the experience and credibility gained to get a company to hire you or sell consulting services
4. Hope that people give you money for the software out of the goodness of their heart
Opting for an MIT license pretty much ensures that the software will only make money for you indirectly via option 3, and maybe you'll get a trickle via option 4. There are numerous examples of people making popular OSS that become frustrated with companies that are using their software to make money, and they aren't getting anything for it. They have to work for other people for money despite having made software that generates lots of value. If you want to ensure that if your software creates substantial value, you get some of it, you need a license like yours.
I think there is a strong argument that if you want to get paid for your software, you simply shouldn't make it any flavor of source-available. A company may actually be more willing to buy software that is closed source than open source, because the closed-source software is simply perceived as being more valuable. Of course, as an engineer, I love that the source code is available.
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.
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.
Having to pay is clearly one drawback for some, but if you save this money by not having to develop some features or getting some support, then it may be worth it.
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.
Unless there are patents involved, and we’re just talking about possible copyright infringement, then you’re free to borrow the ideas just not the expressions. Which in practice means if you’re not blatantly copying then the proof of Structure, Similarity and Organization is prohibitively expense for the plaintiff.