Skip to content
This repository has been archived by the owner on Mar 3, 2023. It is now read-only.

Migrate core package 'package-generator' into Atom repo #18279

Closed
26 tasks
daviwil opened this issue Oct 19, 2018 · 1 comment
Closed
26 tasks

Migrate core package 'package-generator' into Atom repo #18279

daviwil opened this issue Oct 19, 2018 · 1 comment

Comments

@daviwil
Copy link
Contributor

daviwil commented Oct 19, 2018

This issue tracks the steps necessary to migrate the package-generator package into the core atom/atom repository under the packages path:

Migration Checklist

Phase 1 - Prepare repo for migration

Some guidelines for merging vs closing PRs:

  • Merge when the PR is small, useful, has no merge conflicts with master, and has passing tests
  • Close when the changes are non-trivial, the PR has conflicts with master, or there are failing tests in CI

If you close a PR, let the user know that we are currently moving the repository over to atom/atom so they should feel free to reopen the pull request there once the package code has been migrated.

Phase 2 - Migrate the package code

  • Create a fresh branch off master in your local clone of atom/atom with the name migrate-package-generator-package
  • Delete Atom's node_modules, script/node_modules, and apm/node_modules folders if they exist
  • Make sure Atom's package-lock.json file is unmodified, use git checkout -- package-lock.json if it isn't
  • Clone the atom/package-generator repo into the packages path of your local Atom repository and then delete its .git subfolder
  • Delete any unnecessary repo configuration files in the packages/package-generator folder like appveyor.yml, .travis.yml, ISSUE_TEMPLATE.md, and PULL_REQUEST_TEMPLATE.md
  • Remove any information from the package's README.md which will be inaccurate after the migration is complete (e.g. CI status badges or contribution instructions)
  • Open packages/package-generator/package.json and change the repository field to point to the main repo URL https://github.com/atom/atom
  • Open Atom's package.json file to change the following:
    • Update the package-generator entry in packageDependencies to reflect the local path of the package:
      "package-generator": "file:./packages/package-generator",
      
    • Delete the package-generator entry in the dependencies section since it may contain a hardcoded tarball link. This will help avoid issues in the next step
  • Open packages/README.md and perform the following edits:
    • Update the second column of the package-generator row to reflect the new local path for the package:
      [`./package-generator`](./package-generator)
      
    • Delete the following line toward the end of the file:
      [package-generator]: https://github.com/atom/package-generator
      
  • Run a full Atom build using script/build and verify that there are no unexpected build errors
  • Commit the migrated package code and any changes to Atom's package-lock.json files to your branch using this commit message:
    :arrow_right: Migrate core package 'package-generator' into ./packages
    

Phase 3 - Make sure the package works and send a PR

  • Launch the Atom binary in the ./out folder and manually verify that the migrated package is working without any obvious issues. For example, if you're migrating a color theme, turn on that theme to make sure that it changes the editor colors as expected.
  • Open the Chrome Developer Tools console (Ctrl+Shift+I or Cmd+Option+I) and ensure that there are no errors written there. If there are, add them to this issue and investigate.
  • Create a PR against atom/atom with the title "➡ Migrate core package 'package-generator' into ./packages". For convenience, you may use the following message in your PR body:
    ### Description of the Change
    
    This PR migrates the core [`package-generator`](https://github.com/atom/package-generator) package into `atom/atom`.  See issue #18279 for more information.
    
  • If any CI tests fail, investigate and fix the failures until CI goes green
  • Once CI is clean and the PR is approved, merge it

Phase 4 - Archive the package-generator repo

  • Move all existing issues from the package-generator repo to atom/atom using github-issue-mover or a script
  • Add a label titled packages/package-generator to the migrated issues so that they can be found easily
  • Edit the original package repo's README.md (don't commit directly) to point contributors to the code's new home in atom/atom. You can use the following text:
    ### This package is now a part of the [core Atom repository](https://github.com/atom/atom/tree/master/packages/package-generator), please direct all issues and pull requests there in the future!
    
    ---
    
  • Send a PR to the package-generator repository with the updated README.md so that watchers will be notified of the change. You do not need to wait for reviews, it can be merged immediately. You can use the following PR description text:
    As of **INSERT MIGRATION PR LINK**, the `package-generator` package is now a part of the core Atom repository. This pull request updates `README.md` to reflect that fact. We'll be archiving this repository shortly.
    
    /cc atom/atom#18279
    
  • Archive the package repository by going to its Settings page, scroll down to the "Danger Zone" section and click "Archive this Repository"

Migration is now complete! 🎉

@sadick254
Copy link
Contributor

Having core packages in the atom repo could have several benefits. Like dependancy management for the packages. They could share dependencies such that each package would be using the same version of the dependancy.

With the current setup we don’t benefit from shared dependancies. The first benefit that comes to mind for moving the packages to the atom repo is improved dev experience.

On the other hand we also have apm link which also improves the dev experience while working on packages.
Having the core-packages migrated to the atom repo doesn’t make a huge difference.

For now I will close this issue but happy to reopen once we re-organise our repo to allow shared dependencies.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants