GitHub is one of the most popular software development and project management tools. One reason for GitHub's success is its continuous addition of features.
GitHub, owned by Microsoft, combines Git's version control properties with an extensive community support hub around code repositories. As the hosting service updates and extends its features, it aims to address new user challenges and meet their evolving demands.
Here's a look at seven key GitHub features and why they're important for software development and project management teams.
1. Iteration support
Agile development teams typically work within iterations, regardless of whether they follow Scrum or Kanban. Typically, release periods revolve around completing work within defined iteration periods. GitHub responded by adding iteration support with the iteration field type in 2021.
With this feature, development teams have insight into which parts of the project have yet to start, are in progress or are completed. As teams fine-tune their development, they can also use the iteration support to make their future sprint planning more accurate. The iteration type saves time in creating new sprints and improving code organization.
Most importantly, iteration support adds the ability to create a release's worth of sprints at one time, rather than repeating the process in each sprint. This can save developers time and eliminates a tedious and repetitive management task during each sprint.
2. Command Palette navigation control
With GitHub's Command Palette navigation control, unveiled in 2021, developers gain a number of features. These include the ability to do the following:
- search and run commands from anywhere in GitHub;
- get on-demand suggestions based on context and resources used; and
- automatically update and refine suggestions by adding text.
Developers can open and use Command Palette with a keyboard shortcut, as well as customize these shortcuts.
Codespaces is a cloud-hosted development environment that makes code development more easily accessible and expands repeatable configuration options.
Teams can use Codespaces to customize their project, including the creation of a repeatable project configuration. Codespaces is configurable from two to 32 VM-based servers and can connect locally from Visual Studio (VS) Code or remotely using a browser.
The features of Codespaces include the following:
- create a codespace from any branch or commit;
- customize the tools available by creating a configuration;
- create dev containers with a defined Docker environment -- these containers enable all repository users to access the same tools; and
- set shell preferences, add tools and add preferences such as VS Code extension and the settings editor.
4. Code scanning support for Ruby
The CodeQL engine now supports Ruby for code scanning in GitHub and secures Ruby code directly within the service. CodeQL scanning analyzes code for security issues, including those related to a database or other vulnerable locations.
The following list of security issues can be scanned in Ruby within GitHub:
- SQL injection
- regular expression DoS, or ReDoS
- OS command and argument injection
- XML entity expansion
- reflected cross-site scripting (XSS)
- stored XSS
- unsafe deserialization
- hardcoded credentials
Ruby's popularity continues to grow and supporting security scanning only improves cloud-based code security.
5. Customizable fields
With customizable fields, teams can define fields in the platform, as well as plan and track work. GitHub projects automatically track issues, pull requests and save ideas or notes. Custom fields also enable team members to view and share data within projects.
Custom fields can be found in the sidebar of issues or pull requests within a project. Custom fields must be text, numerals, dates, single select or iteration fields.
6. Sort and group issues or pull requests
Another useful GitHub feature is the ability to sort and group issues and pull requests, using project boards and dynamic tables. With keyboard shortcuts or the drag-and-drop feature, users can reorder, move cards within columns or change the column order altogether.
Developers can save time creating releases by using one of these project board types:
- User-owned contains issues and pull requests from personal repositories.
- Organization-wide contains issues and pull requests from any repository within a specified organization. Teams can link up to 25 repositories to a project board for faster access.
- Repository contains issues, pull requests and notes within a single repository that may be linked to other repositories.
GitHub Copilot uses AI to convert code comments into code. Based on the code comment input, Copilot provides suggestions on coding options. Then, developers select which suggestion to use or override the AI-generated suggestion.
Copilot can also generate entire functions from one comment. This GitHub feature may be useful for things such as pair programming, supplementing development teams or performing code conversion projects. Teams should consider the feature to see if it improves the code, while reducing costs.
Room for growth
While GitHub updates its features continuously, there are still features that users clamor for or hope to see evolve.
Specifically, security continues to be a concern. When teams use GitHub, all their app development intellectual property is in GitHub's hands. Theoretically, any GitHub member has access to it -- though, user authentication is necessary to access projects.
That said, GitHub is a target for data breaches and loss. Security development changes constantly, but it's imperative GitHub keeps up with, and provides, the latest security options to users.
Another missing GitHub feature is a less costly option. Most of GitHub's enterprise features are locked behind a SaaS paywall. While smaller teams and projects can use the free version, larger teams may have substantial costs associated with using the platform.
When evaluating GitHub, development teams can also consider alternative services, such as GitLab and Bitbucket.