GitHub API: Moving On

API v3 has been in place for nearly a year. We've seen a large increase in the amount of API consumers and have ambitious future plans for it. However, at some point we have to let the old code go. A single codebase will allow us to provide a more reliable and secure API.

We will terminate API v1 and API v2 in 1 month on June 1st, 2012. (Note: The date was pushed back a month from the original date).

For those that depend on the API, we're setting up a @githubapi Twitter account for announcements. You can also follow changes to the API documentation on its Git repository. The motto for API v3 has been: "it's not shipped if it's not documented".

Notable Changes for API v3

  • Versioning is done through a custom GitHub mime type. We're currently planning for the first API v3 mime type version change due to some incompatible tweaks to the output JSON.
  • Basic auth with tokens is not supported. You can create OAuth tokens for internal scripts through the Authorizations API. The benefit here is you can set OAuth scopes per token, and even attach notes to tell you what function they're serving.

Feedback

Let us know through support@github.com or our Contact form if API v3 is missing features that you depend on for API v2. If you have a friend or Nagios alert that's using API v2, be sure to let them know too.

OAuth Application Enhancements

We just rolled out some cool changes to how you manage OAuth applications.

First up is a newly-polished Applications settings section for both developers (application owners) and users (application users). We've also added a view into both the apps you own and the apps you've authorized.

Organizations can now own OAuth applications as well — super handy for developing applications within a team.

If you have some pre-existing apps under user accounts that need to be transferred to an org, you can transfer applications on its detail page.

We've got a lot of plans for OAuth and hope to see some awesome apps!

GitHub for Mac 1.2: Snow Octocat

Today we are announcing GitHub for Mac 1.2, an update we have dubbed Snow Octocat.

Just like its bigger-cat cousin Snow Leopard, the goal for this release was to increase the stability and speed of the app. Tests have proven that 1.2 is approximately 3.29 quadrillion times faster than 1.1 and 4293% less likely to crash. It's science.

Along with a few nice touches, we couldn't resist completely re-designing the branch browser (⌘B).

It is now easier to jump between branches without taking your hands off the keyboard. Not only that, but you can now create branches from the popover as well. Simply type the name of the branch you want to create and hit return.

This release is the result of 819 commits from our, recently expanded, team but we are just getting started.

We have big plans for the Mac app this year.

GitHub for Mac 1.2

Blob contributions box

GitHub is all about social coding. So today we're rolling out a blob contributions box.

You can see it on every blob (file) view on GitHub. It'll show you the last commit to touch the file and who's contributed to that file. Check out some examples:

The contributions box is a great way to get a feel for who's involved in a project at a glance. Hope you enjoy!

Gaug.es for Android

Update: We’ve discontinued this app.

We're proud to announce that Gaug.es for Android is now available in the Android Market! The app provides a quick overview of your traffic, top content, top referrers, and the live AirTraffic for each of your gauges.

All versions of Android from Froyo (Android 2.2) to Ice Cream Sandwich (Android 4.0) are supported.

We've started small but with the same love and attention that you've gotten from the rest of the Gaug.es family of apps. You'll get a quick look dashboard with all of your gauges, list views of your daily traffic, most viewed content, top web referrers and be able to watch visitors from all over the globe hit your websites as it happens with AirTraffic.

If you have a Gaug.es account, head on over to the Android Market and install the app - it's completely free. If you haven't tried Gaug.es yet, sign up for a free 7-day trial and see if Gaug.es is right for you!

The app is free in more than one sense of the word, as it's also open-source under the Apache 2.0 license and you can grab the source here.

Gaug.es for Android is built on top of the awesome Gaug.es API as well as several great projects for Android development that are also available on GitHub:

Easier Pull Request Creation

Today, we're rolling out a new feature that makes Pull Requests easier to create:

After pushing a branch to GitHub, you (and only you) will see that branch at the top of your repo's page, along with buttons to create a Pull Request for it or compare it with master.

At GitHub, we're constantly creating and using Pull Requests. They're an indispensable tool in our internal workflow, and a key part of making open source project management with GitHub so great. We're excited to make using them easier!

Highlighting Repository Languages

Today we pushed a redesigned feature that highlights language statistics on repository home pages, allowing you to quickly see what languages a repository contains. It's a great way to get a general picture of a repository before you dive into the code.

We're using linguist to collect language statistics from repositories. Linguist is aware of common files and directories, so code like jquery or directories labeled vendor won't be included in the final count. If you happen to spot a language that linguist doesn't recognize, let us know!

Settings Refresh

Today we pushed a redesigned settings page that will make it easier to find and edit settings for your personal account as well as any organizations you own.

The major change is having easy access to settings for your organization. In the previous design you had to fax us your social security number, drivers license photo, and send us a hard copy of your Passport before you could find the link.

Now it's right there with the rest of your settings.

For GitHub Enterprise customers this will be in the next regular release of GitHub Enterprise.

Gauges Daily Summaries and Browser Support

We are excited to announce two new features for Gauges today.

Daily Summaries

Have you ever wanted a quick snapshot of how your site did the previous day, something to look at during the boring morning commute? Gauges makes that possible with daily summaries for your sites via email. We made them simple and sexy, just the way you like it.

Email Summary

Go to My Account and then Email Summaries to turn on the daily summary for one or more gauges.

Email Summary Settings

Browser Support

Need to find out what percentage of your users can view CSS animations or use the Javascript File API? Gauges has exactly what you need to find out the percentage of CSS, HTML5, and Javascript features your visitor's browsers support.

View any gauge and select Technology and then Browser Support to see a graph like the one below.

Browser Support

@mention autocompletion

@mentions are a great way to pull someone into a issue or pull request. Internally we use a /cc convention to call out people. A lot of our issues look something like:

You may have noticed, but the number of GitHubbers has been growing. We needed a faster way to include others on tickets.

The new @mention autocompleter

Type an @ and you should see a list of people on the project. Continue typing to filter the list and hit enter or tab to complete the name. You can also use arrows to select the second or third person.

The result set is restricted to repo collaborators and any other participants on the thread. So it's not a full global search. But this makes it really fast and you'll probably find those are the people you were looking for anyway.

The search uses the same fuzzy filter as the file finder. It works for both usernames and full names.

It's enabled on blog comments too, so give it a try.

Introducing GitHub Enterprise

Today we're launching GitHub Enterprise: a self-hosted GitHub for your company.

GitHub Enterprise

Easy, Secure, and Powerful

GitHub Enterprise has all the great stuff you've come to expect from GitHub: commit histories, code browsing, compare views, pull requests, issues, wikis, gists, organizations and team management, powerful APIs, and a beautiful web interface. With GitHub Enterprise, you can run those features locally, on your own server.

But we've also built a lot more into GitHub Enterprise. Support for LDAP and CAS so you can use your existing corporate authentication systems. Full system backups of all of your data. We also help you set up access over HTTPS so you can be safe and secure.

When you own the server, you can do some very cool things.

Technically Speaking

We first launched the precursor to GitHub Enterprise, GitHub Firewall Install, over two years ago. As it's grown into a bigger part of our business, we've learned to design a great, installable product. GitHub Enterprise is the result of the last twelve months of hard work.

GitHub Enterprise is delivered in the industry-standard OVF format, which means you'll be able to run it on virtualization layers like VMware, VirtualBox, and Oracle VM. Once installed, we'll take you through a brief setup, then you'll be off and running.

Pricing

GitHub Enterprise is priced at $5,000 per 20 users, per year. It comes with everything you need in one tidy package: code browsing, code review, issue tracking, wikis. No extra software to buy, no extra software to install, no extra software to manage.

There's even a free 45-day trial. We think you'll love it.

Use GitHub. You're in Good Company.

Check out the GitHub Enterprise FAQ for more details, sign up for a free trial, or ping us directly at enterprise@github.com if you have questions- we'd love to hear from you.

All of the Hooks

Over three years ago, @pjhyett launched GitHub Services with just four services: Campfire, IRC, Lighthouse, and Twitter. Since then, 124 other people contributed to a total of 68 third-party services. We and many others depend on these services to power our workflow and ship awesome features.

There have been two main requests for Hooks: an API to manage the Hooks, and support for other GitHub events besides just push.

Today, we're announcing two APIs for Hooks and eleven new possible events, so you can build tighter integrations around GitHub.

The new events are:

  • issues - Any time an Issue is opened or closed.
  • issue_comment - Any time an Issue is commented on.
  • commit_comment - Any time a Commit is commented on.
  • pull_request - Any time a Pull Request is opened, closed, or synchronized (updated due to a new push in the branch that the pull request is tracking).
  • gollum - Any time a Wiki page is updated.
  • watch - Any time a User watches the Repository.
  • download - Any time a Download is added to the Repository.
  • fork - Any time a Repository is forked.
  • fork_apply - Any time a patch is applied to the Repository from the Fork Queue.
  • member - Any time a User is added as a collaborator to a non-Organization Repository.
  • public - Any time a Repository changes from private to public.

In addition to an HTTP Hook API that's consistent with the rest of API v3, we also support a PubSubHubbub endpoint to manage Hooks. The core Web hook already accepts hooks from all twelve events. The Campfire and IRC hooks support the new pull request and issue events as well. These changes are available in the API only, so eager developers can take a crack at them. Expect a future update to the Service Hook admin in the near future once these changes have been proven in battle.

Issues Dashboard

The new Issues Dashboard. Now you can get all your issues on all your projects.

Similar to the Pull Request Dashboard, the Issues Dashboard consolidates all of your issues in one tidy little page. Use the filters to show issues in your repositories, assigned to you, created by you, and watched by you.

So now there's no excuse to keep open issues lingering in your repositories. Enjoy!

Gist creation in 5 lines with Java v3 API

As part of the Mylyn connector announcement last week a new stand-alone Java library was released for accessing GitHub API v3.

Below is a 5 line example showing how to create a new private Gist that has a single file containing a simple one line Java example:

Running the above example would create the following Gist:

Many more examples can be found within the GitHub Mylyn connector source base which uses it exclusively for all API calls. The library currently supports creating and fetching issues, labels, milestones, and gists. More services will be added to the library as they become available through the v3 API.

The org.eclipse.egit.github.core library requires Google Gson 1.6+ and Apache HttpComponents 4.1+ and the latest builds can be found on the GitHub Eclipse Hudson page.

Have you created something interesting with the GitHub Java API library? Let us know!

GitHub Mylyn connector for Eclipse

This week marks the initial alpha release of the GitHub Mylyn connector for Eclipse. If you are unfamiliar with the Mylyn project, it is a set of plug-ins that adds support for working with issue trackers, build tools, and code review tools from within the Eclipse IDE.

The GitHub Mylyn connector was built around the new features of Issues 2.0 such as milestones, assignee, mentions, and filtering and also uses the new Issues and Gist API. This initial release supports creating, updating, commenting on, searching, and monitoring issues from within Eclipse. Gists are also supported, you can now highlight text in the editor or select a file from the explorer and run Create Gist from the context menu. A Gist will be created in the background and a notification popup will display after it has been created with a link to the newly created Gist.

You can also browse and search for Gists from within Eclipse, open a Gist's files in the Eclipse editor, and add or update the contents of a Gist. If you want to work with a Gist as a Git repository just click the Clone button from the toolbar and the Gist will be cloned locally and imported as an Eclipse project.

The connector is available from the Eclipse Marketplace. Many thanks to @caniszczyk and @smilebase for their past and ongoing contributions. This project is open-source, part of EGit, and welcomes any contributions. If you want to get started using the connector please check out the user guide to learn more. The goal is to release the 1.0 version as part of the Eclipse Indigo release next month.