Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

It is complex, confusing and inefficient to have perennial and perennial-alias #363

Closed
samreid opened this issue Sep 27, 2024 · 4 comments
Closed

Comments

@samreid
Copy link
Member

samreid commented Sep 27, 2024

It is complex, confusing and inefficient to have perennial and perennial-alias. Now that we have more functionality in perennial (linting, grunt tasks, node modules) this problem is increased.

Each time a developer needs to make a change in perennial, they need to think carefully about whether to change the copy in perennial or perennial-alias. Then after making the change, and pushing, they need to be careful to pull the other repo. When a change is needed in both, the developer must take care not to push both.

@samreid samreid changed the title Can we eliminate perennial-alias and allow perennial to depend on phet-core via a parallel checkout? It is complex, confusing and inefficient to have perennial and perennial-alias Oct 31, 2024
@samreid
Copy link
Member Author

samreid commented Oct 31, 2024

One solution to this problem may be:
Can we eliminate perennial-alias and allow perennial to depend on phet-core via a parallel checkout?

Discovered in phetsims/chipper#1464

One idea @jonathanolson and @zepumph and I discussed is:

  • Get rid of perennial-alias
  • Change the perennial tooling so that it operates on a separate parallel working copy rather than in-place

perennial-alias has been a point of complexity and confusion, and would be good to eliminate. We discussed that developers could have one working copy which is always on main, and another which is allowed to operate on shas, branches, etc.

However, this would:
a) be a huge development effort since perennial has many complex tasks that currently assume they can operate locally
b) would introduce complexity for sim developers who would need to check out 2x trees of everything and know when to run tasks from phet/checkouts/main vs phet/checkouts/working

I just wanted to write the idea down, knowing that it is likely too expensive to implement. But it is the first viable alternative to perennial-alias that we have considered, which would also allow perennial to use code from phet-core or axon, etc.

@zepumph
Copy link
Member

zepumph commented Nov 7, 2024

@jonathanolson and @samreid and I spoke about this again today, and we want to gather more information by investigating #401. From here we can learn if having a codebase where "all branches are always on main while executing perennial commands" is possible.

@zepumph
Copy link
Member

zepumph commented Nov 13, 2024

One path forward that @samreid and I just thought of is to center all of our code around perennial-alias. perennial is the odd case, because it always stays on main, and we shouldn't promote other repos to be "always on main". Instead our whole codebase should depend on just one copy of perennial, and perennial can only use and be used by itself. Likely there are other exceptions, but in general, "you need a good reason to use perennial." Mostly we should just use perennial-alias.

@zepumph
Copy link
Member

zepumph commented Nov 19, 2024

We spend 2 hours brainstorming with @jonathanolson over in #401 (comment) and didn't find a better solution that perennial-alias. All other ideas would require lots of work to change things, but then (mostly) still have trade offs and challenges for maintenance, deploys, and developer training. We are ready to close this issue and continue with perennial-alias indefinitely.

@zepumph zepumph closed this as completed Nov 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants