Sunday, December 31, 2017

Top 10 new GitHub features of 2017

As 2017 comes to a close, let's have a look at the best features that the GitHub developer team has introduced this year, ranging from protected branches to improved project management and completely new IDEs.


10. Direct users to your community forum or FAQ docs with SUPPORT files

To better direct users to dedicated support channels, you can now describe your project's support resources in a SUPPORT file.

SUPPORT files work just like CONTRIBUTING files. They can live in your repository root, .github/, or docs/ folder, and will be displayed throughout GitHub such as above the new issue form:

Instead of describing how to contribute to the project like CONTRIBUTING files do, SUPPORT files can be used to direct users to dedicated support resources, such as community forums, FAQ documents, or corporate support channels. For more information, see the SUPPORT file documentation.

9. Restrict review dismissals with protected branches

Have a team working on the same repository, but you want to limit who can mess with the master branch? This is now possible with protected branches: Now you can specify who in your organization can dismiss reviews on a protected branch.

You can either completely remove the ability to dismiss reviews on a protected branch or restrict that ability to a subset of users or teams specified in your branch protection settings for any organization repository:

8. Tag your repo by type or technology using Topics

You can now discover networks of similar repositories in a completely new way with Topics. Topics are labels that create subject-based connections between GitHub repositories and let you explore projects by type, technology, and more.

Click on a topic that interests you to find related repositories. Adding topics to your repositories will help other users discover your projects, too.

You may see suggested topics when adding a topic to a public repository. These suggestions are the result of machine learning and natural language processing applied to repository content. We're at the start of this new journey and rejecting suggestions that don't fit well will help us train our model for more meaningful results.

7. Automatically request PR reviews from code owners

You can now define exactly which people and teams need to review projects using code owners. This new feature automatically requests reviews from the code owners when a pull request changes any owned files.

To specify code owners, create a file named CODEOWNERS in the repository's root directory (or in .github/ if you prefer) with the following format:

# Lines starting with '#' are comments.
# Each line is a file pattern followed by one or more owners.

# These owners will be the default owners for everything in the repo.
*       @defunkt

# Order is important. The last matching pattern has the most precedence.
# So if a pull request only touches javascript files, only these owners
# will be requested to review.
*.js    @octocat @github/js

# You can also use email addresses if you prefer.
docs/*  docs@example.com

With that in place, code owners will automatically be requested for review whenever a pull request touches the files they own:


6. Get security alerts about vulnerabilities in your code dependencies

If your open-source project has code dependencies, you can now get notified when GitHub detects a vulnerability in one of your dependencies. This includes vulnerabilities that have CVE IDs (publicly disclosed vulnerabilities from the National Vulnerability Database). If a known safe version exists, GitHub will select one using machine learning and publicly available data, and include it in their suggestion.

Public repositories will automatically have your dependency graph and security alerts enabled. For private repositories, you’ll need to opt in to security alerts in your repository settings or by allowing access in the Dependency graph section of your repository’s Insights tab.

5. Use GitHub in your classroom

If you are a teacher, using GitHub in the classroom has just gotten a lot easier. You can now use GitHub Classroom to set deadlines, track student accounts, and more. Here’s how to use these features in your course and set them up for the first day of class.

For one, you can now track student progress leading up to a due date with assignment deadlines. Deadlines fetch the latest commit SHA on the default branch at the time of the deadline, and displays this to the teacher as a "submission":

In addition, classroom rosters provide teachers with a snapshot of course activity at a high level, and an easier way to connect student names with GitHub usernames.

4. Connect with developers around the world using Community Forum

The GitHub Community Forum offers a new way to connect with developers around the world: You can ask questions, swap stories, and share ideas, regardless of whether you work on public or private projects:

You can explore the forum over at https://github.community.

3. Enjoy IDE-like functionality when developing code with Atom

Earlier this year, GitHub collaborated with Facebook to develop Atom-IDE: a set of optional packages that bring IDE-like functionality to the popular source code editor Atom. The initial release includes smarter, context-aware auto-completion, navigation features, like outline view and goto-definition, and other useful functions, errors, warnings, and document formatting.

Atom-IDE includes packages for C#, Flow, Java, JavaScript, PHP, and TypeScript that use the power of language servers to provide deep syntactical analysis of your code and projects.

2. Extend your GitHub workflow using GitHub Desktop 1.0

In 2017 GitHub Desktop got more than a mere face lift: The once-buggy GUI application got completely redesigned and reimplemented on Electron:

The beta was released back in May, and since then the team has been hard at work fixing bugs, adding features, and responding to feedback. GitHub Desktop works on Windows and Mac OS X.

1. Organize and prioritize work using Projects

By far the most attention was given to GitHub's Project Board feature. Project boards on GitHub help you organize and prioritize your work. You can create project boards for specific feature work, comprehensive roadmaps, or even release checklists.

This year, the GitHub team made it easier to work with project boards in a number of ways. First, you can now automate the process of moving project cards between columns. You can specify where cards should be moved whenever you or a teammate:

  • Add a new card to a project, moving it from from triage to a default starting column
  • Close an issue
  • Merge a pull request
  • Close a pull request with unmerged changes
  • Reopen an issue or pull request

Second, when you reference an issue or pull request in a note, you'll see a preview of the cross-referenced link in a summary card—without having to leave the project board:

Third, you can now use new keyboard shortcuts to efficiently move and navigate between cards and columns. Select a card or column using the enter key and move it anywhere on the board. Commit the change with enter again, or cancel it with escape. Press the ? key on any project board to review the new keyboard shortcuts in more detail:

Fourth, you can now use filtering to find the project card you're looking for. If you know the title of the card you're looking for, just type it into the filter box to find it quickly. If you don't know the title, you can use one of our qualifiers to narrow cards down by label, author, and more:

That's it for 2017! Which one is your favorite new GitHub feature? Let us know in the comments below.