pegjs icon indicating copy to clipboard operation
pegjs copied to clipboard

Project maintenance and health

Open dmajda opened this issue 5 years ago • 68 comments

Hi @futagoza!

During the last week I was tagged in multiple issues by @StoneCypher, who expressed his worries about PEG.js maintenance and project health (he also contacted me about this privately by email). I haven’t followed PEG.js development much since I transferred the maintenance to you, but his actions made me have a look.

I have to admit the current state of the project made me sad. There are tons of changes in the code, but the last release is still 0.10.0 which I did back in 2016 (!). Apparently, you were on track to release 0.11.0 back in 2018, but that never happened. Your last comment in the issue talks about rewriting PEG.js in TypeScript instead (?). There are also multiple other, less glaring problems.

While I don’t approve @StoneCypher’s way of expression, I understand and share his concerns. At this point, I wouldn’t recommend PEG.js as a basis of any project.

As you know, when I transferred PEG.js to you, I deliberately cut all my ties to it. I wanted it to be developing independently, without my direct or indirect involvement, and without my spectre hanging over it. I no longer have any rights to PEG.js's website, GitHub, or npm package. But I feel I have to speak up now. I’d like to ask you to consider the current state of PEG.js, its future, and to think about changes to make the project healthy again.

I’m pretty sure PEG.js community shares the concerns expressed above and would appreciate an honest answer. And while I don’t want to suggest any particular course of action, I believe the community may be the key to resolving project’s current problems.

I hope you won’t take my message in a bad way. I know very well that maintaining a project like PEG.js is hard and one can’t satisfy everyone all the time. It’s just that I felt my word may prompt you to think about these issues and that PEG.js community deserves an answer.

Thanks for listening.

dmajda avatar Feb 09 '20 17:02 dmajda

I despair that I have to fork this library, meaning none of the existing consumers will ever get help, and one of the most important libraries on the internet has died

StoneCypher avatar Feb 18 '20 13:02 StoneCypher

RIP

On Tue, Feb 18, 2020 at 5:59 AM John Haugeland [email protected] wrote:

I despair that I have to fork this library, meaning none of the existing consumers will ever get help, and one of the most important libraries on the internet has died

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/pegjs/pegjs/issues/639?email_source=notifications&email_token=AAAETTRJGY4Q5AWE76RBM2DRDPSURA5CNFSM4KSDGYBKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEMCCBUA#issuecomment-587473104, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAAETTRC57XZWSLTNS3VLL3RDPSURANCNFSM4KSDGYBA .

STRd6 avatar Feb 18 '20 15:02 STRd6

I used this library 5 years ago when I still learning to code JS. I made a language that render to HTML that is more expressive than any Markdown dialets I knew. Today, I reconsidered that language to be further evolved, but to find out this library is not as healthy as I'd expected. Just feel sad.

jamesruan avatar Mar 03 '20 12:03 jamesruan

My company uses this package as well and very much like to see the ES module feature and the TypeScript language feature released soon.

If @futagoza can't maintain this package anymore, he should let somebody else take over.

ebosveld avatar Mar 06 '20 10:03 ebosveld

I’m pretty sure PEG.js community shares the concerns expressed above and would appreciate an honest answer.

More than two months, and still no answer?

polgfred avatar Apr 13 '20 22:04 polgfred

It looks to me like @futagoza has fallen: all activity on the various communities his linked homepage links to stop at about the same time. Sad.

kf6kjg avatar Apr 17 '20 21:04 kf6kjg

you can still see activity in the last seven days on side channels

StoneCypher avatar Apr 17 '20 23:04 StoneCypher

I've reached out over e-mail to see if @futagoza could use some help with community management. I think it would be best if we could find some folks who are interested in doing maintenance releases on v0.10 and a few folks to work towards v0.11.

tilgovi avatar Apr 20 '20 21:04 tilgovi

Please remember to be kind and let's all do what we can to help out. If anyone has other ways to get in touch, please take some time to reach out and let's see if we can lift the burden and work together.

tilgovi avatar Apr 20 '20 21:04 tilgovi

This request to @futagoza for community help has beed raised may times, but we got no response on that matter. We can only assume this project as abandoned, and together decide on a fork to work from there.

roypeled avatar Apr 21 '20 09:04 roypeled

I got a response to e-mail. I'll follow up as soon as I have more info to share.

tilgovi avatar Apr 21 '20 15:04 tilgovi

We shouldn't release 0.10. It's been put onto really weird isolated tools, the development methodology has been changed to something bizarre and niche, it's been moved onto failing build systems, &c.

We really need to go back to 0.9 and cherry pick PRs in their original state, and keep David's original clean system. We can't let Futagoza skip versions for three years because he's created a mess, then hold out for someone who's willing to keep his approach and try to release it

This needs to be turned into a standard node system now. It's needed it for years and all the active users have been asking for this forever

StoneCypher avatar Apr 23 '20 22:04 StoneCypher

@StoneCypher I think you may have missed something or it may just be a typo - we already have a 0.10 release. So you meant the 0.11 release?

michael-brade avatar Apr 24 '20 08:04 michael-brade

oh, my mistake, 0.10.0 is david's 4 year old release, you're right

StoneCypher avatar Apr 25 '20 00:04 StoneCypher

@tilgovi Any news to share?

In general: is there another parser library anyone can recommend?

leifg avatar May 11 '20 01:05 leifg

https://tomassetti.me/parsing-in-javascript/

bd82 avatar May 12 '20 09:05 bd82

Frankly none of those are usable.

None of those except canopy and ohm have an in-browser version

Waxeye slows down dramatically under even light use, as does apg

Jison's grammars are a puzzle from Vulcan, set to drive any human that isn't Lex Luthor stark raving

ANTLR is like eating broken glass that is somehow also bees

Nearly is fun and interesting and I just cannot get the promises that Early parses give. I recognize that I should be able to. I've been trying for years.

Ohm is super powerful and fun and an entirely different way of looking at the problem and not a reasonable substitute. It's like recommending a replacement of lisp with prolog. Peg and Ohm only just barely technically apply to the same problem domains. It's almost guaranteed that at least one of them will be a bad fit.

Bennu is buggy and produces incorrect results.

Parsimmon is interesting and powerful but I don't enjoy parser combinators and it's pretty verbose.

Par.js took the first ten lines of my PEG and turned them into 200 lines of code. Ouch

Chervotain made them 1900 lines. I actually wrote a peg to translate my peg to Chervotain. Admittedly, it's blazing fast, but the last thing I want to do is transcompile a grammar, and the second to last thing I want to do is maintain Chervotain. Even the XML guys would call this verbose.

The reason PEG has persisted despite rotting on the vine half a decade is that nothing currently alive can possibly replace it.

StoneCypher avatar May 15 '20 00:05 StoneCypher

I initially got a very thoughtful response when I reached out over e-mail. I suggested ways I could help the community get started maintaining a 0.10.x branch and offered to work on reviewing and managing contributors. It's now been weeks since I last received a response.

tilgovi avatar May 27 '20 15:05 tilgovi

Ya'll i think it's time we stop grumbling in the issue tracker here. I also want to see the project move forward but Maintainers don't owe us anything. The better approach would be for someone to fork and maintain in the way they feel is best. We need to show up or move on though, there isn't much value in grumbling about other's free work. Clearly they don't have the time, energy, or desire to keep the project moving, and that's fine!

jquense avatar May 27 '20 17:05 jquense

i'd be all for a new maintained fork under fresh administration -- it should be called POG.js am i right fellow kids?

dlqqq avatar Sep 20 '20 21:09 dlqqq

If I were @dmajda I'd be pretty upset to be honest.

I’m not really upset, but I regret not doing two things:

  1. Not waiting longer before handing PEG.js over to a new maintainer. Maybe I should have waited for multiple candidates to appear and choose between them, require contributions first, or something similar.

  2. Not keeping the “keys” to the project (access to PEG.js website, GitHub, and npm package).

Any of these may have prevented the current situation. Unfortunately, this is obvious only in retrospect.

Anyway, it’s quite clear from his non-reaction that @futagoza is not interested in PEG.js anymore. I didn’t watch the JavaScript parser generator space in the last few years so I don’t know whether a good replacement of PEG.js exists. But if not, I would welcome if someone sufficiently interested and motivated picked up PEG.js code and continued development under a new name. I believe this would be the best course at this point. The only issue to decide is whether to continue from the current state or from the state before changes made by @futagoza.

I think that changing the name is a good idea in order to prevent confusion, at least if the original website and repo is still up. Also, it is possible that multiple people will appear, each wanting to take PEG.js in a different direction. In such case, it would be unfortunate to have “Joe’s PEG.js fork”, “John’s PEG.js fork”, etc.

I feel sorry for this situation. If I ever do an open source project again and end up handing it over to someone, I will definitely do it differently.

dmajda avatar Nov 21 '20 11:11 dmajda

Thanks @dmajda for your support.

pjmolina avatar Nov 21 '20 11:11 pjmolina

Not keeping the “keys” to the project (access to PEG.js website, GitHub, and npm package).

Hello.

I don't know about the website and github access, however, npm has a process to resolve conflicts on package names.

  • https://www.npmjs.com/policies/disputes

So that is one item that can be retrieved.

Who is paying for https://pegjs.org DNS name? If I understand correctly the domain name will expire in ~1 week so dependent on the grace period it may be possible to repurchase pegjs.org in 1-2 months.

bd82 avatar Nov 22 '20 09:11 bd82

@bd82 - we cannot dispute this because there is no cause. dmajda chose to give the project to someone who's never done anything, and that person has absconded.

@phpnode - I have a significant modernization of the project underway

StoneCypher avatar Nov 26 '20 00:11 StoneCypher

@StoneCypher sounds good! Is this on your fork at https://github.com/StoneCypher/pegjs ?

I've contacted the owner of the https://www.npmjs.com/package/peggy package which hasn't been updated in 9 years and they've agreed to give us the name. I've created a new github org and moved the repo here: https://github.com/peggyjs/peggy I'd be happy to add you to the organisation if you'd like?

phpnode avatar Nov 26 '20 00:11 phpnode

I would enjoy to join your org.

No, that's not the one I'm talking about; that's just a bugfix fork for the main project. I already have a domain and package name :)

My goals are to modernize the output and editor, to fix a lot of long standing bugs, to radically improve testability, and to fix the enormous !#%%#& binaries I get unnecessarily

StoneCypher avatar Nov 26 '20 02:11 StoneCypher

You can dispute whatever you want with npm, they are usually very helpful, you don't need "cause" to contact support over package ownership, it's not a legal proceeding

jquense avatar Nov 26 '20 14:11 jquense

The NPM people have clear guidelines on when a repo can be contested, and this unfortunately does not fit.

Listen, think about it. If every time a repo went dark, any rando could come take it over, you'd be looking at an extreme security nightmare, where any time someone wanted to attack people, they'd just pick some random supporting library that was cold and be like "I want to be the new maintainer"

Their process is for things like abuse, trademark control, and things of that nature

StoneCypher avatar Nov 26 '20 15:11 StoneCypher

if you say it's useless before trying that's fine guy. I don't care. I've had luck talking to them about conflicts and they have been very helpful without it having anything to do with trademark issues or things of that nature, if @dmajda would like to try, it's just firing off an email. The worst case is they say no and you lost 5min of time.

jquense avatar Nov 26 '20 15:11 jquense

The npm name disputes policy explicity states that the process may be used to:

Adopt an "abandoned" package

  • https://www.npmjs.com/policies/disputes

I would recommend attempting this process, there is enough proof that the package has been abandoned...

bd82 avatar Nov 26 '20 17:11 bd82