facebook / jscodeshift

A JavaScript codemod toolkit.
https://jscodeshift.com
MIT License
9.09k stars 465 forks source link

Announcement: Maintenance and Future Plans #587

Open Daniel15 opened 2 months ago

Daniel15 commented 2 months ago

There's been many questions about maintenance and the future of jscodeshift. There are currently no active maintainers of jscodeshift at Meta. I took over as the 'official' maintainer starting from the 0.12.0 release (April 2021) and have handled all releases since then, however I'm not doing any active development work on the project.

In 2022, I added @ElonVolo as a maintainer. He was maintaining his own fork of jscodeshift called "evcodeshift", and has some great ideas for modernization of jscodeshift.

Today, I'm adding the Codemod team as maintainers. They are experts in codemods, and their expertise combined with @ElonVolo's deep understanding of the jscodeshift codebase will help drive the jscodeshift project forward. They’ll be working on a brand new version of jscodeshift in TypeScript, improving maintainability and fixing many of the existing issues.

I understand that introducing new maintainers can raise concerns. Meta and I will continue to retain control of the repo and npm package, and I will still be the person who publishes new versions.

Please let me know if you have any questions or concerns.

morgante commented 3 weeks ago

Hi @Daniel15! It's great to see some more maintenance on jscodeshift.

For some context, I'm the founder of Grit and we've been doing a lot of foundational work on code rewriting (including open sourcing a toolkit).

I'd love to understand the decision to partner with Codemod exclusively, and would appreciate a chance to discuss how we might contribute as well.

Daniel15 commented 3 weeks ago

@morgante Codemod are a partner, but anyone is welcome to contribute and we can always add more maintainers and contributors if needed/wanted. If you've got some ideas about ways to improve jscodeshift then I'd recommend chatting to @ElonVolo and @alexbit-codemod. 😃

morgante commented 3 weeks ago

@morgante Codemod are a partner, but anyone is welcome to contribute and we can always add more maintainers and contributors if needed/wanted. If you've got some ideas about ways to improve jscodeshift then I'd recommend chatting to @ElonVolo and @alexbit-codemod. 😃

How do we become a "partner" too? It feels a bit icky to not have a level playing field for an open source project, especially when we have done extensive original development.

Respectfully, I don't think this is a good look for this project. Giving exclusive partnership rights to a commercial company outside Meta, without any community input beforehand, doesn't feel in the ethos of open source.

Daniel15 commented 3 weeks ago

@morgante jscodeshift has been in need of maintainers for a while. For example, see #482 from February 2022, but it was an issue even before then. ElonVolo was the only individual contributor and Codemod was the only company that reached out about contributing to the project, which is why they're both contributors to the project now. Anyone else could have reached out in exactly the same way any time over the past few years.

It feels a bit icky to not have a level playing field for an open source project,

I'm not sure how it's not a level playing field. You can contribute to jscodeshift in the same way that anyone else can. If you want to become a contributor, then send some pull requests or make some discussion posts about what you think the future of jscodeshift should be.

we have done extensive original development

Development on jscodeshift, or in general? If it's development on jscodeshift, feel free to submit the development work as pull requests. If it's development on other tools, then I'm not sure how that's relevant in this repo.

Giving exclusive partnership rights to a commercial company outside Meta,

I think you may be taking the word "partnership" too seriously. It's not a signed contract or anything like that. Codemod has just agreed to help with jscodeshift's development and maintenance, since it's a tool that they use themselves.

without any community input beforehand

The community input has been that people want to see jscodeshift receive more maintenance and development. They don't particularly care who does that work, just that it gets done.

morgante commented 3 weeks ago

ElonVolo was the only individual contributor and Codemod was the only company that reached out about contributing to the project, which is why they're both contributors to the project now.

I've reached out to @ElonVolo to offer our support, and have previously tried to contact people at Meta.

I'm not sure how it's not a level playing field. You can contribute to jscodeshift in the same way that anyone else can.

Not really, as Codemod is marked as the "official" maintainers and you explicitly endorse their platform.

This has a significant chilling effect on our willingness and ability to contribute. Codemod.com is our direct competitor and you've effectively handed them control of the project but I don't see any commits in the history from @alexbit-codemod or his team.

Can you explain why the bar for us is "put a bunch of work in to contribute code, and hope our direct competitor will accept that without hurting us" while they get maintainer privileges without contributing a single line of code?

For the record, this is exactly why major open source projects are careful about not privileging a single vendor. If you are going to partner with companies, there should be a process where all can be given consideration. As far as I can tell, @alexbit-codemod was given this privilege without any community discussion or any way for others to contribute.

Development on jscodeshift, or in general? If it's development on jscodeshift, feel free to submit the development work as pull requests. If it's development on other tools, then I'm not sure how that's relevant in this repo.

We originally did development on jscodeshift/codemods, but shifted for many of the same reasons that were identified here - it didn't seem like any of the codemod "stack" was being maintained, and all other outside contributions have lingered in limbo.

I also think our track record of open source work beyond jscodeshift is relevant here. We do extensive original open source development ourselves, including contributions to many other repos, instead of just wrapping our brand around existing open source projects. Perhaps it was my mistake to focus on this instead of fostering closed-door partnerships.

Daniel15 commented 3 weeks ago

effectively handed them control of the project

Meta still has control of the project. Nobody else has full admin repo access (in fact I don't think I even have that), nor does anyone else have access to publish the jscodeshift package to npm. I'm still reviewing commits before publishing releases.

Can you explain why the bar for us is "put a bunch of work in to contribute code, and hope our direct competitor will accept that without hurting us" while they get maintainer privileges without contributing a single line of code?

The project needed maintainers, and they asked if they could be maintainers. I spoke to their team and it seemed reasonable to me given their focus is codemods. Now the project has maintainers. That's it. Anyone else (whether a person or a company) could have asked the same thing any time in the last few years and they would have been treated exactly the same way.

ElonVolo and Alex at Codemod had some ideas about the future of jscodeshift - nobody else has really thought about it in that much detail. Like I said, you're also welcome to post a discussion about what you think the future of jscodeshift should be.

We originally did development on jscodeshift/codemods, but shifted for many of the same reasons that were https://github.com/facebook/jscodeshift/issues/500#issuecomment-1816970625 here - it didn't seem like any of the codemod "stack" was being maintained,

In that case, it sounds like you're not interested in contributing, in which case I'm not sure why you're even discussing this.

There's been some thoughts around creating a jscodeshift-specific fork of ast-types and recast, or switching to different libraries if any are available for this purpose. You're also welcome to create your own fork, like Elon did with evcodeshift (and AFAIK most of the changes have been merged back into jscodeshift by now).

morgante commented 3 weeks ago

Anyone else (whether a person or a company) could have asked the same thing any time in the last few years and they would have been treated exactly the same way.

Great, I'm asking if we can be maintainers too.

In that case, it sounds like you're not interested in contributing, in which case I'm not sure why you're even discussing this.

I'm interested in contributing if we can do so on a level playing field.

We've done a lot of foundational work on the parsing/rewrite side and are interested in porting some of that to run with a jscodeshift-compatible API.