quicksilver / Quicksilver

Quicksilver Project Source
http://qsapp.com
Apache License 2.0
2.75k stars 286 forks source link

Change main development branch to `main`? #2707

Closed lgarron closed 2 years ago

lgarron commented 2 years ago

A lot of projects have renamed their main branch to main[^1], and GitHub makes it easy to do this in the repository settings to that the branch dropdown on the repo features a little popup about the change: https://github.com/github/renaming

Screen Shot 2022-04-04 at 16 02 54

Would you have any interest in switching over?

[^1]: In fact, so many projects have switched that master has left my muscle memory at this point.

skurfer commented 2 years ago

I’m not opposed, but it’s not high priority right now.

n8henrie commented 2 years ago

I don't have strong feelings either way.

I've left most of my existing projects as master so as to not break a number of scripts / aliases / muscle memory. At some point I may start new projects under a different default branch (main, trunk, default, etc. all seem fine), but I'm not sure how far this goes towards ending racism, or how much it helps those that are otherwise harmed by hearing or reading the word master. The timing of GitHub's move seemed like a bit of virtue signaling (given that there has been discussion on this topic in various communities for years beforehand), which I find distasteful. Especially given its rising popularity, I also recognize that others may find the failure of a project to migrate likewise distasteful.

In addition to avoiding unintentional harm, the other benefit of migrating now would be to avoid revisiting this topic going forward, as I imagine it will come up more than once.

If we change the branch, we should probably also rename, reword, or redact the handful of other uses of master in the codebase -- looks like there's not too many: https://github.com/quicksilver/Quicksilver/search?q=master. @lgarron it seems like you've seen many more projects migrating than I have -- I assume that other projects changing their default branch are doing this as well?

lgarron commented 2 years ago

In addition to avoiding unintentional harm, the other benefit of migrating now would be to avoid revisiting this topic going forward, as I imagine it will come up more than once.

This tends to be a good reason to do it. Basically everyone agrees that the name main is unproblematic. It's the new default, and many big projects have already tackled the change earlier rather than later so that they can just use the unproblematic name rather than debating about the old one.

If we change the branch, we should probably also rename, reword, or redact the handful of other uses of master in the codebase -- looks like there's not too many: https://github.com/quicksilver/Quicksilver/search?q=master. @lgarron it seems like you've seen many more projects migrating than I have -- I assume that other projects changing their default branch are doing this as well?

To some extent. At this point, I'd say by far the most useful is renaming the development branch to match the modern default. Sometimes there are followup initiatives around removing other potentially exclusive language (master/slave databases, whitelist/blacklist instead of allowlist/denylist), but the Quicksilver codebase doesn't really seem to be using those. It looks like https://github.com/quicksilver/Quicksilver/blob/4374aea4eb98f8d5e22a447b2f2bc48dfa3736ed/Quicksilver/Tools/travis/check_indent.rb#L6 is the only change that would be needed at a technical level (assuming it's used? CI doesn't seem to use it?), although I'd be happy to send a PR to update the other references as well.

Some projects keep around a master branch for a short while (e.g. automatically kept in sync with main using GitHub Actions), but I don't think much would break if the master branch disappeared from this repo entirely. If you use the button in the settings UI for the repo, pull requests will be automatically changed over, new checkouts will use main, and the popup will direct folks to rename their branch locally. Even if based off a local master branch from an older checkout, new pull requests will also still work.

pjrobertson commented 2 years ago

Good to bring this up. I've noticed main appearing more often as well. My biggest concern is that if we do it for the main repo, we'd also want to do it for all 180 repositories under the Quicksilver organisation. As such I'd say 'no' at this point.

But referencing Github's reason to do it:

GitHub will be named "main" instead of "master" as part of the company's effort to remove unnecessary references to slavery and replace them with more inclusive terms.

If people feel strongly about this then I'm OK with the change, as long as someone can cover doing the actual renaming. That would involve:

skurfer commented 2 years ago

The timing of GitHub's move seemed like a bit of virtue signaling

You think? 😏

I’m not worried about appeasing people that have gone out of their way to pretend they don’t know what words mean just so they can very publicly demonstrate how much better they are than the rest of us.

I do think we should change it eventually, but only because “main” makes more sense.

pjrobertson commented 2 years ago

Seems like there's a slight general consensus that we should change at some point. In which case - I say let's go for it.

@lgarron - since you brought this up, are you OK with changing all the repository names?

I already wrote a quick list of what I think needs doing – you should be able to do all except the last one. You may have other tasks that need doing so feel free to add them.

lgarron commented 2 years ago

Seems like there's a slight general consensus that we should change at some point. In which case - I say let's go for it.

@lgarron - since you brought this up, are you OK with changing all the repository names?

I already wrote a quick list of what I think needs doing – you should be able to do all except the last one. You may have other tasks that need doing so feel free to add them.

I'd certainly be happy to help! Unfortunately, the default branch is a repo setting in GitHub, and of course I don't have the permissions for that. 😢

I don't know if it would be good form to ask for permission, but I'd certainly be glad to pitch in for what's needed to get something like this over the finish line!

n8henrie commented 2 years ago

At this point, I'd say by far the most useful is renaming the development branch

Interesting, having seen the changes to e.g.allowlist in other projects' codebases (it would make an unusual default branch name ;) ), I had assumed master would be considered equally harmful in the codebase (or documentation for that matter) as in the branch name. I would expect participating projects to be e.g. renaming variables and aliasing imports to avoid the use of master (perhaps from external dependencies) as much as possible. @lgarron to your knowledge, is there something unique about the branch name in this regard that makes it more harmful than elsewhere? This seems like it should be a bigger effort than just branch renaming if it is really about the harm people experience when they see or hear the word master.

Also, we're not using Travis anymore, so that file can probably be removed entirely.

One other concern is the precedent this sets for future problematic words that the current authors and contributors are ostensibly using without ill intent. As it seems incredibly unlikely that similar issues will fail to come to our attention in the future, does this implicitly oblige us to follow suit in those cases as well (or else seem more sensitive to the plight of some groups as opposed to others)?

skurfer commented 2 years ago

does this implicitly oblige us to follow suit in those cases as well

I don’t think so. We aren’t obliged to make this change. We choose to. The same should apply to any similar requests going forward.

pjrobertson commented 2 years ago

Agreed with skurfer.

I say let's make this change. Final point is that @lgarron will need to have admin permission to make the changes (see: https://github.blog/changelog/2021-01-19-support-for-renaming-an-existing-branch/ )

Lucas has been around these parts for circa 10 years, so I'm comfortable with temp access to make the changes. Unless no others oppose by 25th April 23:59, @lgarron - I'll give you access then (or thereabouts).

pjrobertson commented 2 years ago

Hi @lgarron - I've invited you the QS organisation, so you can change all branch names from master to main.

When you have time, please start on moving from master to main! Thanks

lgarron commented 2 years ago

Hi @lgarron - I've invited you the QS organisation, so you can change all branch names from master to main.

When you have time, please start on moving from master to main! Thanks

Thanks! I was able to accept the invite to the org.

I've tried the rename on https://github.com/quicksilver/Terminal-qsplugin, which seems to have gone well!

Screen Shot 2022-04-30 at 22 06 27

I'll get on the others, and look for any hardcoded references to master along the way.

lgarron commented 2 years ago

Okay, I've gone through all 180 repos (all of which are public).

I've essentially gone in reverse chronological order of "last modified", so the order at https://github.com/orgs/quicksilver/repositories?type=all is similar to what it was before.

Here's the full list (in aforementioned reverse chronological order):

https://github.com/quicksilver/AOL-qsplugin
https://github.com/quicksilver/AddressBookActionsPlugIn-qsplugin
https://github.com/quicksilver/Alarm-qsplugin
https://github.com/quicksilver/Amazon-qsplugin
https://github.com/quicksilver/LegacyAudio-qsplugin
https://github.com/quicksilver/BBEdit-qsplugin
https://github.com/quicksilver/Bezel-qsplugin
https://github.com/quicksilver/Bluetooth-qsplugin
https://github.com/quicksilver/BuddyPop-qsplugin
https://github.com/quicksilver/CLIX-qsplugin
https://github.com/quicksilver/CalendarSupport-qsplugin
https://github.com/quicksilver/Camino-qsplugin
https://github.com/quicksilver/Cl1p-qsplugin
https://github.com/quicksilver/ColloquyPlugin-qsplugin
https://github.com/quicksilver/Daemons-qsplugin
https://github.com/quicksilver/DeliciousLibrary-qsplugin
https://github.com/quicksilver/DesktopManager-qsplugin
https://github.com/quicksilver/Deviant-qsplugin
https://github.com/quicksilver/DiffModule-qsplugin
https://github.com/quicksilver/DiscInterface-qsplugin
https://github.com/quicksilver/DiskImage-qsplugin
https://github.com/quicksilver/Dock-qsplugin
https://github.com/quicksilver/DokuWiki-qsplugin
https://github.com/quicksilver/Editor-qsplugin
https://github.com/quicksilver/Eudora-qsplugin
https://github.com/quicksilver/Expert-qsplugin
https://github.com/quicksilver/FindModule-qsplugin
https://github.com/quicksilver/Flickr-qsplugin
https://github.com/quicksilver/Google-qsplugin
https://github.com/quicksilver/GoogleCalendar-qsplugin
https://github.com/quicksilver/Indigo-qsplugin
https://github.com/quicksilver/InternetExplorer-qsplugin
https://github.com/quicksilver/MachineSource-qsplugin
https://github.com/quicksilver/Mailsmith-qsplugin
https://github.com/quicksilver/Markdown-qsplugin
https://github.com/quicksilver/Monolith-qsplugin
https://github.com/quicksilver/MusicArtwork-qsplugin
https://github.com/quicksilver/NetNewsWire-qsplugin
https://github.com/quicksilver/NetworkLocation-qsplugin
https://github.com/quicksilver/NimbusAppSwitcher-qsplugin
https://github.com/quicksilver/NowContact-qsplugin
https://github.com/quicksilver/OnMyCommand-qsplugin
https://github.com/quicksilver/OrnateInterface-qsplugin
https://github.com/quicksilver/Phone-qsplugin
https://github.com/quicksilver/PowerManagementPlugIn-qsplugin
https://github.com/quicksilver/PrimerInterface-qsplugin
https://github.com/quicksilver/Printer-qsplugin
https://github.com/quicksilver/ProcessSwitcherSupportPlugIn-qsplugin
https://github.com/quicksilver/QSAdiumPlugIn-qsplugin
https://github.com/quicksilver/QSBezelInterfacePlugIn-qsplugin
https://github.com/quicksilver/QSDesktopPictureAction-qsplugin
https://github.com/quicksilver/QSFullscreenPlugIn-qsplugin
https://github.com/quicksilver/QSHomestarRunnerPlugIn-qsplugin
https://github.com/quicksilver/QSPatchPlugIn-qsplugin
https://github.com/quicksilver/QSRSSPlugIn-qsplugin
https://github.com/quicksilver/QSSherlockPlugIn-qsplugin
https://github.com/quicksilver/QSShiiraPlugIn-qsplugin
https://github.com/quicksilver/QSSlimInterfacePlugIn-qsplugin
https://github.com/quicksilver/QSSpellcheckAction-qsplugin
https://github.com/quicksilver/QSWeatherPlugin-qsplugin
https://github.com/quicksilver/RemoteDesktop-qsplugin
https://github.com/quicksilver/SafariSearches-qsplugin
https://github.com/quicksilver/Skype-qsplugin
https://github.com/quicksilver/Slideshow-qsplugin
https://github.com/quicksilver/SoundSupport-qsplugin
https://github.com/quicksilver/StartupDisk-qsplugin
https://github.com/quicksilver/Stikkit-qsplugin
https://github.com/quicksilver/SystemKeys-qsplugin
https://github.com/quicksilver/TSActionsPlugin-qsplugin
https://github.com/quicksilver/Teleflip-qsplugin
https://github.com/quicksilver/Template-qsplugin
https://github.com/quicksilver/TextMate-qsplugin
https://github.com/quicksilver/Translation-qsplugin
https://github.com/quicksilver/UserAccounts-qsplugin
https://github.com/quicksilver/X10PlugIn-qsplugin
https://github.com/quicksilver/Xattr-qsplugin
https://github.com/quicksilver/XattrMetadataImporter-qsplugin
https://github.com/quicksilver/YouControlDesktopsPlugIn-qsplugin
https://github.com/quicksilver/com.apple.spaces-qsplugin
https://github.com/quicksilver/com.facebook-qsplugin
https://github.com/quicksilver/elements.composerui-qsplugin
https://github.com/quicksilver/elements.support.music-qsplugin
https://github.com/quicksilver/elements.support.window-qsplugin
https://github.com/quicksilver/elements.survey-qsplugin
https://github.com/quicksilver/elements.trigger.gesture-qsplugin
https://github.com/quicksilver/elements.trigger.hotkey-qsplugin
https://github.com/quicksilver/elements.trigger.time-qsplugin
https://github.com/quicksilver/elements.update-qsplugin
https://github.com/quicksilver/elements.webbridge-qsplugin
https://github.com/quicksilver/public.file.tags-qsplugin
https://github.com/quicksilver/Plugins
https://github.com/quicksilver/AirPort-qsplugin
https://github.com/quicksilver/QSCubeInterface-unused-qsplugin
https://github.com/quicksilver/qs-update
https://github.com/quicksilver/qsopera
https://github.com/quicksilver/QuickTimePlayer-qsplugin
https://github.com/quicksilver/Cyberduck-qsplugin
https://github.com/quicksilver/MiniInterface-qsplugin
https://github.com/quicksilver/iPhoto-qsplugin
https://github.com/quicksilver/com.apple.Automator-qsplugin
https://github.com/quicksilver/Adium-qsplugin
https://github.com/quicksilver/ChatSupport-qsplugin
https://github.com/quicksilver/Messages-qsplugin
https://github.com/quicksilver/Deminimizer-qsplugin
https://github.com/quicksilver/com.apple.Xcode.devdocs-qsplugin
https://github.com/quicksilver/CloudApp-qsplugin
https://github.com/quicksilver/MailMate-qsplugin
https://github.com/quicksilver/Transmit-qsplugin
https://github.com/quicksilver/Abracadabra-qsplugin
https://github.com/quicksilver/FileTagging-qsplugin
https://github.com/quicksilver/Evernote-qsplugin
https://github.com/quicksilver/iTerm2-qsplugin
https://github.com/quicksilver/LaunchAtLoginController
https://github.com/quicksilver/com.apple.Mail-qsplugin
https://github.com/quicksilver/showcase
https://github.com/quicksilver/OpenMetaFileTagging
https://github.com/quicksilver/CubeInterface-qsplugin
https://github.com/quicksilver/QSOmniWebPlugIn-qsplugin
https://github.com/quicksilver/remember-the-milk-qsplugin
https://github.com/quicksilver/VDKQueue
https://github.com/quicksilver/SocialBookmarks-qsplugin
https://github.com/quicksilver/plugin_template
https://github.com/quicksilver/iTunes-qsplugin
https://github.com/quicksilver/Spotlight-qsplugin
https://github.com/quicksilver/1Password-Plugin
https://github.com/quicksilver/manual
https://github.com/quicksilver/RemoteHosts-qsplugin
https://github.com/quicksilver/Audio-qsplugin
https://github.com/quicksilver/BezelClassic-qsplugin
https://github.com/quicksilver/GoogleChrome-qsplugin
https://github.com/quicksilver/CommandLineTool-qsplugin
https://github.com/quicksilver/Compression-qsplugin
https://github.com/quicksilver/Dash-qsplugin
https://github.com/quicksilver/Displays-qsplugin
https://github.com/quicksilver/elements.trigger.event-qsplugin
https://github.com/quicksilver/FaceTime-qsplugin
https://github.com/quicksilver/elements.hfsattributes-qsplugin
https://github.com/quicksilver/ImageManipulation-qsplugin
https://github.com/quicksilver/Keychain-qsplugin
https://github.com/quicksilver/Menu-qsplugin
https://github.com/quicksilver/elements.trigger.mouse-qsplugin
https://github.com/quicksilver/PathFinder-qsplugin
https://github.com/quicksilver/ProcessManipulationPlugIn-qsplugin
https://github.com/quicksilver/com.apple.Safari-qsplugin
https://github.com/quicksilver/Services-qsplugin
https://github.com/quicksilver/elements.textmanipulation-qsplugin
https://github.com/quicksilver/Viscosity-qsplugin
https://github.com/quicksilver/QSWindowInterfacePlugIn-qsplugin
https://github.com/quicksilver/Yojimbo-qsplugin
https://github.com/quicksilver/zoom.us
https://github.com/quicksilver/UIAccess-qsplugin
https://github.com/quicksilver/Networking-qsplugin
https://github.com/quicksilver/TextStartRanker-qsplugin
https://github.com/quicksilver/com.apple.AddressBook-qsplugin
https://github.com/quicksilver/QSOmniFocusPlugIn-qsplugin
https://github.com/quicksilver/com.google.mail-qsplugin
https://github.com/quicksilver/MiniBezel-qsplugin
https://github.com/quicksilver/GrowlNotifier-qsplugin
https://github.com/quicksilver/NotificationHub-qsplugin
https://github.com/quicksilver/elements.support.mail-qsplugin
https://github.com/quicksilver/Firefox-qsplugin
https://github.com/quicksilver/ExtraScripts-qsplugin
https://github.com/quicksilver/QRCodePlugin-qsplugin
https://github.com/quicksilver/com.apple.Xcode.application-qsplugin
https://github.com/quicksilver/Calendar-Reminders-qsplugin
https://github.com/quicksilver/elements.websearch-qsplugin
https://github.com/quicksilver/Calculator-qsplugin
https://github.com/quicksilver/Twitter-Plugin
https://github.com/quicksilver/Nostromo
https://github.com/quicksilver/PluginDevelopmentReference
https://github.com/quicksilver/MicrosoftOffice-qsplugin
https://github.com/quicksilver/Flashlight-qsplugin
https://github.com/quicksilver/QSApp.com
https://github.com/quicksilver/ScreenCapture-qsplugin
https://github.com/quicksilver/DictPlugin-qsplugin
https://github.com/quicksilver/elements.clipboard-qsplugin
https://github.com/quicksilver/Shelf-qsplugin
https://github.com/quicksilver/Terminal-qsplugin
https://github.com/quicksilver/ndhotkeyevent
https://github.com/quicksilver/Quicksilver

There are 3 repos I was not able to change, because I don't seem to have access to settings for them:


I've also sent a PR to update the main stale references to master I could find in the main repo:

There are a few others, but they seem historical (e.g. in a changelog entry from over 10 years ago) or self-correcting (e.g. in Xcode files).

Feel free to remove my permission when you see fit!

pjrobertson commented 2 years ago

Okay, I've gone through all 180 repos (all of which are public).

Phew, great job!

There are 3 repos I was not able to change, because I don't seem to have access to settings for them:

I've just given you access to those 3, so you should be able to update them as well :)

pjrobertson commented 2 years ago

For those devs with lots of QS copies locally, here's a script you can run to rename all folders:

for dir in */; do
    cd "$dir"
    if [[ `git branch --list master` ]]; then
        git branch -m master main
        git fetch origin
        git branch -u origin/main main
        git remote set-head origin -a
    fi
    cd "../"
done
pjrobertson commented 2 years ago

@lgarron - did you manage to change the branch names for those last 3 repos you mentioned? Once done, please let us know so we can close this issue and mark it as complete!

lgarron commented 2 years ago

@lgarron - did you manage to change the branch names for those last 3 repos you mentioned? Once done, please let us know so we can close this issue and mark it as complete!

Done! :-D

pjrobertson commented 2 years ago

🎉 🎉 🎉

Thanks for all your contributions!