Homebrew is a package manager for macOS and Linux written in Ruby and Bash.
In your application tell us:
- Who you are: your name and how we contact you (e.g. email)
- What idea are you proposing: which of our ideas is it or describe in detail if it's your own
- How will you implement it: provide a detailed work timeline that breaks the project into one or two week milestones
- Why you: link to a previous Homebrew pull request you've submitted (this is a requirement to be accepted)
Homebrew is actively seeking to diversify our contributors and especially welcome applications from women from all backgrounds and people of colour.
Please read and apply via https://summerofcode.withgoogle.com/get-started/.
Mentorship happens privately on our Homebrew maintainer's Slack and publicly on GitHub pull requests. Each student and project will be assigned a mentor but all students will work with all mentors.
Check out GitHub's blog post on how to run GSoC on GitHub for the standards expected from maintainers and students: https://github.com/blog/2312-how-to-run-a-google-summer-of-code-project-on-github
- To be accepted one trivial pull request for your project to Homebrew will need to be merged (this can be far prior to the program)
- To pass the mid-term assessment one non-trivial pull request for your project to Homebrew will need to be merged
- To pass the final assessment more than one non-trivial pull request for your project to Homebrew will need to be reviewed and merged
Homebrew is written mostly in Ruby (with small amounts of Bash), runs on the macOS and Linux operating systems and uses Git and GitHub for version control and updates. You do not need to have used any of these before but must have access to a Mac (unless working on Linux-specific features) and be willing to learn Ruby, Git and GitHub.
These are suggestions that would make good Google Summer of Code projects. Feel free to open an issue if you wish to discuss or propose your own idea.
When brew upgradeing or brew installing multiple formulae with multiple resources the downloads do not happen all at the beginning but are interleaved through the brew install process (even with resources within a single formula). This means if a single download fails mid-way through a lengthy build process the user may not notice and have to retry again later. This should be improved so the usability of Homebrew is improved. Similarly, this project could be extended to cover caveats and warnings for formulae being output all at the end of multiple brew installs for easy reference.
Expected outcome: brew upgrade and brew install do all their downloads before attempting any installations.
Although Homebrew and Homebrew Cask have been merged the two projects are not fully integrated. For example, brew info and brew cask info are separate commands that produce different output. Ideally all of Homebrew's commands that reference a formula would also be able to reference a cask and produce helpful output (although brew install and brew cask install should remain separate). This will make it easier for users to have casks recommended when there is not a formula (and vice-versa).
Expected outcome: several new brew commands should produce helpful output directing the user to casks or just show cask information.
Homebrew formulae do not have license metadata. For this to be included in Homebrew a license DSL would need to be added to Homebrew/brew and all relevant metadata would need to be added for Homebrew/homebrew-core formulae before they could be merged. Additionally, automated tests in brew audit should be added to verify this metadata matches what GitHub detects.
Expected outcome: A formula license DSL is added and used in homebrew-core. brew audit verifies this DSL is correct.
Homebrew/livecheck provides various automated ways of detecting formulae updates. A livecheck DSL should be added to formulae and migrated from Homebrew/livecheck and brew livecheck use this new data. If time permits, a separate application should be built to make use of these checks, verify that the results seem correct and open a pull request with relevant metadata on Homebrew/homebrew-core.
Expected outcome: A formula livecheck DSL is added and used by brew livecheck from homebrew-core. If time permits, a seperate application should consume this data.
You can also get inspiration from open help wanted issues on Homebrew/brew and open help wanted issues on Homebrew/homebrew-core. Please discuss any of these with us before submission to maximise your chances of being accepted.