Fetching the latest programs, projects, and workspace data.
The Missing Package Manager for macOS (or Linux)
Showing 5 of 11 projects. Click any project card for scope, mentors, and proposal studio.
Mentors: Student: Mohammad Zain Abbas
Many Homebrew packages use resources, a special kind of package dependency. While Homebrew has tools which automatically upgrade packages to new versions, this feature doesn't work with resources. This project will enhance Homebrew's existing livecheck feature.
Mentors: Student: Nanda H Krishna
<p>DSLs or domain-specific languages are written in order to serve a highly specific purpose. Currently, Homebrew has DSLs for various purposes, in Formulae, Casks, and so on. Homebrew also has a livecheck Tap which enables checking for latest versions, compared to the user’s locally installed version. The Tap checks for the latest version from a URL specified or obtained from the Formula specification, using Regex and a heuristic.</p> <p>Currently, Livecheckables or “instructions” for livecheck are part of the homebrew/livecheck Tap. However, it would be more beneficial to include the livecheck details as part of the Formula definition in homebrew/core itself. This would require changes to the Formula class defined in Homebrew, in the form of adding a domain-specific language for livecheck. Once this is added, a Formula’s author may include the livecheck details in the Formula definition on homebrew/core, and not have to maintain a separate Livecheckable in homebrew/liveecheck, making things more convenient for maintainers and contributors.</p> <p>The project aims to add this DSL for livecheck to Homebrew Formulae and migrate all existing Livecheckables to home-brew/core.</p>
Mentors: Student: rmnull
<p>Refactor keg, keg_relocate and elf.rb modules to use rbelftools and patchelf.rb instead of calling shell commands. Patchelf.rb is doesn't work well with the ELFs modified using <code>patchelf</code>. Make patchelf.rb behave like patchelf. This is important as most of the bottles in the bintray are relocated with placeholders using <code>patchelf</code>.</p>
Mentors: Student: Vidushee Amoli
<p>The majority of the code in Homebrew is written in Ruby which is a dynamic language. This means that types are checked when the code is run. My project aims to incorporate Sorbet, a static type checker which would provide the benefits of static type checking to a developer. Adding static type checking helps developers rectify potential errors before the actual runtime. It also provides faster debugging of pre-existing bugs even by new developers, as they can easily jump to class/method definitions without having prior knowledge of the directory structure of the project. Sorbet serves as a tool to reduce brittle code, increases a developer’s confidence in their work and is a great tool for refactoring. I believe that this project has a lot of potential and the impact that it is going to have on the overall development cycle is going to be huge.</p>
Mentors: Student: Markus Reiter
<p>The goal of this project is to improve the integration of Casks and Homebrew-Cask commands into Homebrew by removing redundant code that is used by both Casks and Formulae, and by merging some <code>brew cask</code> commands with their <code>brew</code> counterparts.</p>