waxeye-org / waxeye

Waxeye is a parser generator based on parsing expression grammars (PEGs). It supports C, Java, JavaScript, Python, Racket, and Ruby.
https://waxeye-org.github.io/waxeye/index.html
Other
235 stars 38 forks source link

Restarting Development #108

Open orlandohill opened 4 years ago

orlandohill commented 4 years ago

I now have an e-ink computer monitor, and can restart work on Waxeye without it impacting my health.

I've been thinking about how to make the project more sustainable. Right now I'm thinking about creating a new repo that's entirely my code, and resuming development from there.

Two reasons:

  1. Personal Drive What kept me going during the initial development was having the code as a creative outlet, and a drive to make the project better than other tools available. Having other people's code in the repo kills that for me, at least for now. Of course, feature requests, bug reports, and use cases are all very welcome. I'm also pretty embarrased by some of the code I wrote back in 2008, and would rather have a clean start.

  2. Re-licensing Early on, I switched from GPL3/LGPL to MIT. In hindsight, I think that was a mistake. Dual copy-left/proprietary licensing is the most realistic way for a niche developer tool like this to make money. Without an ongoing financial incentive, I've found it very difficult to justify working on the project over the last decade. Ideally, I'd like to get to the stage where all developers and maintainers can be paid for their work.

I'm currently considering to license the new version under the Parity Public License from License Zero, with the option to buy proprietary licenses for developers working on closed-source software. Parity is a strongly copy-left license, and results in something similar to how some SaaS companies offer free accounts to open source projects. https://licensezero.com/ https://licensezero.com/licenses/parity

I like the idea of granting waivers (free private licenses) to existing contributors, whether or not their code was merged. https://guide.licensezero.com/#waivers

Here's an interview with the creator of License Zero, Kyle Mitchell. https://sustain.codefund.fm/29

License Zero might be unpopular at the moment, but I wouldn't be surprised if there's a cultural shift in the software development community over the next few years.

glebm commented 4 years ago

Glad to hear you've found a setup that works for you! 🎉 I look forward to the shiny new thing!

orlandohill commented 4 years ago

Thanks! I appreciate all the time and effort you've spent contributing to this version.

michael-becker commented 4 years ago

Hi @orlandohill and thanks for your work. I am no licensing expert so just for clarification:

  1. When someone uses the parser generator to generate a parser and uses this parser in a commercially licensed software, she has to buy a license or publish the commercial software as open source?
  2. Does this affect the license of the current code or will this code be "freezed" and can be used under the MIT license?
orlandohill commented 4 years ago

Hi @michael-becker ,

  1. Yes, a team developing software would either need to be granted license waivers, buy private licenses, or open source their code. Right now I'm looking at having two different types of private licenses, one for the parser generator, and one for each of the parsing runtime libraries. The cost to use the parser generator would likely be more than the cost to use a generated parser.

    Waivers and private licenses would be per developer, and per licensing identifier. The licensing identifier might change from release to release, which would require purchasing a new license to use the new release. For example, a company might have purchased licenses for their developers to use version 1.2.1, and their developers could keep using that version or subsequent releases until the licensing identifiers changed at the release of version 2.0.0. If the company wanted their developers to use version 2.0.0, they would need to purchase new private licenses.

  2. The license change doesn't impact the code in this repository. People can continue to use it under the MIT license. I won't be contributing more code here, because I don't think it's in the best interests of myself or the project. If others want to maintain a fork of this code base, they are free to do so, but I'd prefer that the name was changed.

I'd be happy to grant you a waiver to use the new version free of charge. Maybe I can grant waivers for the rest of your fellow developers. How big is your team?

orlandohill commented 4 years ago

Just a quick update to say that I'm making progress. Currently working on a system to help future versions of Waxeye support many more programming languages.

martinvahi commented 3 years ago

I logged in to GitHub just to file a bug that the code a the Waxeye has the MIT license and the waxeye.org site says that the license is much more restrictive than the MIT. After reading this thread here I understood that there is no point for me to see that situation as an accidental discrepancy.

Well, I as a freelancer am of course very biased saying this, but my life is too short to work or study projects/components that I can not use for my work, which is creating software for my clients. I find that my clients must have the freedom to use the software that they ordered from me as closed source software, if they so choose, and they must be able to do that without needing to buy any extra licenses from anywhere. That's why I do not bother even studying projects that I can not freely use for creating closed source software. My own open source software is either BSD, MIT or public_domain or something else that allows closed source development without paying me a dime. Historical example is the Apache web server. If the Apache web server had not been free for commercial use, then probably it would have never been seriously improved by the employees and freelancers that wanted to use it for their own work. A bit more remote historical examples are the Gopher and the WWW and the Apple Hypercard: we have the WWW in stead of the Apple Hypercard and Gopher exactly due to the fact that the WWW/HTML was free for everyone for any purpose and the Apple Hypercard and the Gopher were projects that required some paid licenses. The university/academics that developed/financed the development of the Gopher, totally blew it. And how much did Apple manage to earn from the Hypercard or the university from the Gopher project? But RedHat, as of 2021 bought by the IBM for billions, earned pretty well without demanding any license fees. Again, real service is something that people can write the bills and licensing revenue can probably extracted by being literally nasty and hiring lawyers and suing people, which in turn repels quite many talented people, as seen what happened, when Microsoft did it extra aggressively during the Bill Gates era.

Secondly, I suspect that a typical corporate software developer does not want the hurdle of having to negotiate with their corporate legal department and various bosses to contribute the work that is done on company time to any open source project, unless the corporation already has some open source contribution policy in place. Freelancers like me do not have that burden. Unlike corporate developers, who get their salary independent of any concrete deliverables to paying clients, freelancers like me get paid only after delivering working software, which means that I really do not have the luxury of contributing to any project that I can not use for my work. The end result is that often times typical academic/university software projects that do not have a license that allows free closed-source, commercial, usage get rejected by corporate developers due to "budgeting bureaucracy" and those projects also get rejected by freelancers like me, because of both, cost and the handicap that their licenses limit the clients of freelancers too much.

Consequently the academics, who should distribute knowledge and advance the state of art, just do not get their research results adopted by the industry and after some years the code that the academics created (or biological samples in the case of biologists) ends up being at the history trash bin. It is the right of academics to choose to trash their hard work, provided that it's not paid by tax money, but I find it kind of sad. One serious problem with the various academics is that they tend not to understand that in commercial software development the clients pay the money for SOFTWARE THAT CAN BE RUN ON A COMPUTER and a nice PDF-file, generally called as scientific paper, that describes some experiment and observations about what worked and what did not work, is NOT SUFFICIENT, IS JUST A DOCUMENTATION SUB-PROJECT, if not totally skipped in more lame cases. It is not possible for a commercial software developer to learn all things on planet earth, which means that some components have to be used as black boxes that can be audited and changed if there is a dire need for the audit or change. If the academics deliver just a PDF-file in stead of a proper software component, then the work of the academics won't be used in commercial projects. Add some licensing requirements on top of that and the academics can keep on complaining that the knowledge transfer from academia to industry is horribly slow. Concrete example: Linux. Surely there were fancier operating systems during the Linux early years, but the monetary price and the freedom to modify and reuse the product, Linux, do matter. Once Linux had already ceased the tinkerers market, open-sourcing the BSD was not sufficient to get the BSD adopted as widely as Linux got adopted.

What regards to parser-generators, there is quite a competition already. Some suit better for some task, but licenses also matter.

Thank You for reading my comment.

orlandohill commented 3 years ago

Hi Martin,

Thank you for your comment.

Sorry for the confusion about the license. I'll look at archiving this repository, and clearly marking the project's new development home. The entry on Wikipedia's Comparison of parser generators page will need to be updated, along with various package managers.

It's still my intention to develop Waxeye into software that is obviously worth the time and money required to purchase a commercial license. Unfortunately, things have been rather delayed due to the effects of Brexit, the pandemic, and other life annoyances.

Anyway, I'm optimistic that myself and others will eventually be able to get paid on a regular basis to develop Waxeye and other software.

martinvahi commented 3 years ago

Anyway, I'm optimistic that myself and others will eventually be able to get paid on a regular basis to develop Waxeye and other software.

Thank You for the answer. Well, we all like, need, may be love, money, but TIMES CHANGE. The times, when people payed per-minute-phone-bills will HOPEFULLY never come back. My current cell-phone contract is that for local calls I can literally take phone-calls 24/7 and I pay for it literally about 9€/month (about nine EUR per month). I'm born in 1981 and as a teenager in the 90-ties Estonia we had a contract that for a fixed fee per month we got about 30h/month "internet time" from a local company in Kuressaare (Teetormaja was its name, it is still in business in 2021, just not with that kind of deals). Yes, my computer took a local call to their computer by using a land-line modem. Our family's only computer was initially the Intel 386, after a few years, an Intel 486. And yet, now think of the permanent internet connections, the speed of the connections, etc.

That is to say, TIMES DO CHANGE!!! 
BUSINESS MODELS CHANGE!!!

I suggest You try to mimic the Apache Foundation business model or the Linux Foundation business model. Also, please take to account that You as a person are probably not capable of porting whatever software You are creating to all hardware and operating system and compiler combinations and not everybody is willing to accept the awful lack of portability that the various mobile_phone/cellphone software has since the old Nokia times. We all like to get paid, there's nothing wrong with the wish to get paid, but I find it sad that many projects, usually various GPL-licensed projects, just get totally abandoned after their authors become too old to maintain them or literally die and then there will not be anybody to negotiate any kind of license. Often times the relatives, who inherit the copyrights of the works, do not have the technical background and who on Earth will start to look up some relatives of some abandoned software just to negotiate a license? Specially if the old software has not been upgraded to work with latest combinations of hardware, operating systems and compilers/interpreters.

By the way, I found an interesting parser generator that turned out to be part of the Ruby stdlib: https://github.com/ruby/racc

It seems to me that nowadays even closed source commercial projects can not really afford to use subcomponents that at some point stop functioning, id est compiles/runs on WindowsXP, but not on Windows10, etc. I guess there might be a chance to sell closed source library licenses for a library that is literally a drop-in replacement for some open source library, so that when the closed source library stops working for whatever reason, the client project can keep on using the open source library and the license fee for the closed source library would be only for some extra performance. From that perspective, You might have a license sales opportunity if You re-implement something that is already available under BSD/MIT/Apache/Mozilla/Eclipse/etc_something_closed-source-permissive license, and Your sales argument would be that You deliver extra performance WITHOUT ANY LOCK-IN. In that case You do not even need to publish the source of Your project. The open source project that defines the API should not be by You, because You have a conflict of interest if You try to sell licenses to a more optimal version of the same software. That way You might get the license fees for Your software optimization activity.

My own business model as of 2021_07 is to just offer software development services and I create open source software to allow me to offer those software development services with the quality that I feel comfortable with and in a way that I at least self believe that I do the best job that I'm intellectually capable of doing. Obviously I try to improve and I tend not to like my old code, but I do get some things right at the first time.

Thank You for reading my comment and thank You for the answer.