OAuth Improvements

We have a couple of great new features and improvements to the OAuth flow to announce! First off, application developers can now add full text descriptions and custom images to their applications to help communicate to potential users.

screen shot 2013-06-06 at 2 42 30 pm

Next, we have entirely new views for allowing/denying access to your GitHub account. These views better communicate the identity of the 3rd party application and what kind of access they are requesting.

screen shot 2013-07-11 at 2 28 57 pm

Want to develop an application that uses OAuth and leverages the GitHub API? We have a great set of documentation to help get you started.

OAuth away!

Explore Everyone's Stars

image

You've been able to sort, search, and filter your stars for a few months now, and today you can easily browse everyone else's stars, too. Most of the view is very similar to your stars browser, except we've made a few refinements. https://github.com/stars/jonrohan

Q: Why not use /jonrohan/stars?
A: Who are we to tell you that you can't have a repository named "stars"?

Quick Links

image

You can now browse around developers you're following. We found this very fun and interesting. Make sure you follow some good developers.

Scannable Starred/Unstarred

image

As you scan a list of your friends' stars, you might notice some stars you have seen before. These are easily scannable because of the darker Unstar button.

Have fun exploring.

Deleting files on GitHub

You know all those files you’ve been creating, editing, moving, and renaming? Well, you’ll be glad to know that you can now remove them using the web-based interface too! Simply view any file in your repository, click the delete button at the top, and commit the removal just like any other web-based edit.

Delete a file using GitHub

Commit removal of a file using GitHub

And just like that, :kissing::dash:, it’s gone.

For help with these features, be sure to read our help articles on creating, moving, renaming, and deleting files.


Note: Since it’s a version control system, Git always has your back if you need to recover the file later. If you really, really need to completely delete a file from a repository for some reason, say a secret key or other sensitive file that was accidentally commited, you may need to consider :skull::fire:the nuclear option:fire::skull:.

New History Tab in GitHub for Mac

Today, we're happy to announce an all-new look for the History tab in GitHub for Mac:

The new history tab

This new design has a far more efficient way of viewing your repository's history than its predecessor. Not only that, but it's fast. Really fast.

Specifically, we used libgit2 to massively improve the performance of diffs, and ReactiveCocoa to achieve a tab which loads faster and is more responsive than ever before.

This is just the first step in our new vision for GitHub for Mac. We can't wait to bring this level of awesomeness to the rest of the app.

Release Your Software

Today, we're excited to announce Releases, a workflow for shipping software to end users. Releases are first-class objects with changelogs and binary assets that present a full project history beyond Git artifacts. They're accessible from a repository's homepage:

header

Releases are accompanied by release notes and links to download the software or source code.

releases

Following the conventions of many Git projects, releases are tied to Git tags. You can use an existing tag, or let releases create the tag when it's published.

tags

We recommend projects use Semantic Versioning, but it is not required.

Creating Releases

As a repository collaborator, you can draft up a changelog in a release's notes. Any non-production releases (alphas, betas, release candidates) can be identified through the pre-release checkbox.

draft

You can also attach binary assets (such as compiled executables, minified scripts, documentation) to a release. Once published, the release details and assets are available to anyone that can view the repository.

upload

Happy shipping! :ship:

GeoJSON rendering improvements

Nearly two weeks ago, we announced support for rendering geographic data. Today, we're excited to roll out several improvements:

  • GitHub now supports rendering TopoJSON, an extension of GeoJSON that encodes topology and can be up to 80% smaller than its GeoJSON equivalent.

  • Starting today, you don't have to rename geo files with a new extension. GitHub will now render GeoJSON (and TopoJSON) in all .geojson, .topojson, and .json files.

  • Complex geographic datasets can often be difficult to visualize, especially if points are grouped close together. We now automatically cluster nearby markers, allowing us to better support larger datasets.

Embed Support

Want to make your geoJSON map available someplace other than GitHub? Simply modify this template, and place it in any HTML page that supports javascript, such as GitHub Pages, and you'll have a beautiful, portable map:

<script src="https://embed.github.com/view/geojson/<username>/<repo>/<ref>/<path_to_file>"></script>

For more information, including how to customize the embed code, see the help article Mapping geoJSON files on GitHub. Of course, you can always embed STL files as well.

Task Lists in Gist

Task Lists are a great way to organize and break down Issues and Pull Requests into small, feasible tasks. Naturally, we want to use Task Lists to track our personal endeavors, too.

Today we're happy to make Task Lists available in Gist.

Task Lists in your Gist

Task Lists work in any Markdown file in your Gist and in any comment. Read the docs for Task Lists in GitHub-flavored-Markdown for more information.

Simpler Milestone Workflow

We just made working with milestones simpler and more explicit. Now when you want to close or open a milestone, you can do so from the milestone listing. Milestones will no longer change state based on any sort of issue assignment.

milestones - github_mail-replies-2

New File Size Limits

Starting today, you will see warnings if you push large files to your GitHub repository. Git is not well suited to large binary files, and we have some recommendations about better ways to handle them.

We will also reject pushes which add or modify files that are larger than our generous hard limit.

Please see the Help article for more details, including Git's technical limitations, and the specific limits.

Repository Next

Today we’re proud to announce a redesigned repository experience focused on your content, built for everyday use.

overall

We’ll be slowly rolling out the ability to opt-in to this new design over the next few days. It’s a big change and we don’t want to interrupt you mid-day. Within a couple of weeks this will be the new face of GitHub for everyone.

banner-tease

Optimized for everyday use

GitHub is a product you use every day. We’ve focused on this and optimized for how people interact with GitHub on a daily basis. The next time you click through on a notification email, you’ll find a dramatic reduction of persistent section navigation cluttering up the page.

issues

Gone is the large, prominent section of the page dedicated to navigational debris — replaced with a slim, de-emphasized icon-based navigation.

Focus on the context you’re working on and jump to the repository root to switch sections.

The content is the interface

We want the interface to melt away and your content to take center stage. We’ve optimized the design for scanning and reading of your code — your issues — your pull requests. Let your code speak for itself — without tab bars and navigational text competing for attention.

code

Inside of sections, we’ve replaced many persistent navigation tabs with overviews and content links.

stats

stats-expanded

The new repository overview acts as a thumbnail for code — a visual fingerprint for each repository. Click the language bars to see the language breakdown.

If you work across many different repositories, the language bars are a nice way to tell the difference between repository pages, which have a tendency to look exactly the same project to project.

Speed

Responsiveness is one of the most important design aspects of software — so it comes as no surprise that this redesign puts a tremendous focus on speed and responsiveness. We've doubled down on pjax and upped our caching game to do everything in our power to reduce page load times.

For many projects on a typical connection, we’ve reduced total navigation time from around 1 second down to 300 milliseconds. We’ve made browsing files within a repository so fast that we no longer need the animations: in most cases, files are rendered nearly instantaneously.

A long time in the making

We've been working toward this redesign for almost a year now, and we think it's a massive step forward in using GitHub.

It's a big change, and may take a few days to feel right. As always, this is just the beginning. This redesign paves the way for an even faster, more focused GitHub. And we can't wait to see what the future holds.

There's a map for that

Not long ago, we began rendering 3D models on GitHub. Today we're excited to announce the latest addition to the visualization family - geographic data. Any .geojson file in a GitHub repository will now be automatically rendered as an interactive, browsable map, annotated with your geodata.

screen shot 2013-06-13 at 10 23 32 am

People are already using GitHub to store everything from Chicago zipcodes to community radio stations to historic hurricane paths, and we can't wait to see what the community will begin to collaborate on next.

Under the hood we use Leaflet.js to render the geoJSON data, and overlay it on a custom version of MapBox's street view baselayer — simplified so that your data can really shine. Best of all, the base map uses OpenStreetMap data, so if you find an area to improve, edit away.

Maps on GitHub support rendering GIS data as points, lines, and polygons. You can even customize the way your data is displayed, such as coloring and sizing individual markers, specifying a more descriptive icon, or providing additional human-readable information to help identify the feature on click.

Looking to get started? Simply commit a .geojson file to a new or existing repository, or dive into the docs to learn how to customize the map's styling.

Introducing Octokit

We're happy to announce Octokit, our new lineup of GitHub-maintained client libraries for the GitHub API.

octokits

Today, we're making our first two libraries available.

octokit/octokit.rb

Octokit.rb (formerly pengwynn/octokit) has been developed by the Ruby community over several years and provides access to the GitHub API in idiomatic Ruby.

octokit/octokit.objc

OctoKit has been extracted from GitHub for Mac by the Mac team and is a Cocoa and Cocoa Touch framework for interacting with the GitHub API, built using AFNetworking, Mantle, and ReactiveCocoa.

Introducing GitHub Sudo Mode

In the ongoing effort to keep our users safe, we recently took inspiration from the Unix sudo command. We wanted to require password confirmation for dangerous actions on GitHub.com, but we didn't want to force you to be constantly entering your password.

Meet GitHub's "sudo mode"

sudo mode screenshot

Dangerous actions (e.g. adding email addresses or public keys) will now require password confirmation. If you're deep in the zone and you're doing a lot of these dangerous actions, we'll only ask you to re-authenticate every few hours.

With this balance of security and convenience, we help you keep your account safe, without getting in your way. Feedback is always welcome. Enjoy!

Installing Git from GitHub for Mac

In today's release of GitHub for Mac, you can now easily install Git for use on the command line, without needing to download any separate packages. And whenever we update the version of Git included with GitHub for Mac, you'll get the changes automatically – no work required on your part!

After updating the app, you may notice some changes to the Preferences window. On the newly renamed "Advanced" tab, simply click "Install Command Line Tools":

Advanced preferences pane

You'll be prompted for an administrator password so that Git can be installed into /usr/local/bin, and then you should very shortly see that it succeeded:

Installation Complete

If you're using GitHub for Mac for the first time, and want to install Git, you can also set it up from the welcome screen:

Configure Git welcome screen

Once installed, you can open up Terminal.app and run git commands to your heart's content. Command line aficionados, rejoice!

Update: We've since removed the ability to install Git from GitHub for Mac, because OS X Mavericks and later includes a version of Git already.

Repository redirects are here!

It's a fact of life - sometimes repository names change. This can happen in a few different types of scenarios:

  • When you rename a repository.
  • When you rename your user or organization account.
  • When you transfer a repository from one user or organization to another.

We're happy to announce that starting today, we'll automatically redirect all requests for previous repository locations to their new home in these circumstances. There's nothing special you have to do. Just rename away and we'll take care of the rest.

As a special bonus, we'll also be servicing all Git clone, fetch, and push requests from previous repository locations.

There is one caveat with the new redirect support worth noting: GitHub Pages sites are not automatically redirected when their repositories are renamed at this time. Renaming a Pages repository will continue to break any existing links to content hosted on the github.io domain or custom domains.