Announcing GitHub Constellation Tokyo

GitHub Constellation June 6, 2017

6月6日(火)、日本で初となるGitHubのカンファレンス”Constellation Tokyo”を開催します! Tabloidで開催するセッションと、GitHubのチーム・パートナー様・お客様・コミュニティの方々とのネットワーキングに皆さんをお招きします。カンファレンスでは、GitHubを全社に展開した例などを含むビジネスケーススタディーを聞くことができます。また、どうすれば社内のデベロッパーエクスペリエンスを向上させることができるかのヒントを得ることもできるでしょう。GitHubの今後の方向性に関する最新情報も、当社チームのメンバーから直接お聞きください。

Constellationに先立って6月5日(月)には、SuperDeluxeでコミュニティミートアップを開催します。オープンソースやコミュニティマネジメントに関するトークを聞き、ドリンクやスナックを楽しみながらGitHubber達とお話ください。

今すぐチケットを入手するか、イベントの最新情報をメールで受け取りましょう!


On June 6, GitHub is hosting Constellation Tokyo, our first-ever conference in Japan! We'd like to invite you to a day of sessions and networking with the GitHub team and your local GitHub community.

At Constellation, you'll learn how Japanese teams are integrating GitHub across their companies to create a better developer experience. Then meet developers who contribute to open source and their communities. You'll also get the latest updates on where GitHub is headed, directly from our team.

Before the conference, we’re hosting a community meetup at SuperDeluxe on June 5. Check out talks on open source and community management and hang out with GitHubbers over drinks and snacks.

We hope you'll leave Constellation with new friends and fresh ideas on how to work better with your team—and with the open source community.

Go to githubuniverse.com/constellation to get your tickets or sign up for updates!

Satellite and Universe: better together deal

satellite_blog_email_header

With Satellite just a couple weeks away, we’re sharing a deal to help you experience our two biggest conferences for less. For a limited time, get 50% off Satellite and Universe tickets when you buy them together.

At Satellite, you’ll hear the latest from GitHub and software community leaders with two full days of talks, workshops, and special events in London on May 22-23. Then, reconnect with them four months later at Universe, our flagship conference in San Francisco on October 10-12, to build on the momentum.

Get the complete experience of GitHub events from products to partners to the community around them. But don’t wait! This deal is only available until May 22.

Get the Satellite and Universe ticket bundle

satellie_sponsor_lockup_may2

Git 2.13 has been released

The open source Git project has just released Git 2.13.0, with features and bugfixes from over 65 contributors. Before we dig into the new features, we have a brief security announcement.

For those running their own Git hosting server, Git 2.13 fixes a vulnerability in the git shell program in which an untrusted Git user can potentially run shell commands on a remote host. This only affects you if you're running a hosting server and have specifically configured git shell. If none of that makes sense to you, you're probably fine. See this announcement for more details. As neither GitHub.com nor GitHub Enterprise uses git shell, both are unaffected.

Phew. With that out of the way, let's get on to the fun stuff.

SHA-1 collision detection

Did I say fun? Oops, we're not there yet.

You may have heard that researchers recently found the first collision in SHA-1, the hash function Git uses to identify objects. Their techniques may eventually be used to conduct collision-based attacks against Git users. Fortunately those same researchers also provided a way to detect content that is trying to exploit this technique to create collisions. In March, GitHub.com began using that implementation to prevent it being used as a potential platform for conducting collision attacks.

Git 2.13 ships with similar changes, and will detect and reject any objects that show signs of being part of a collision attack. The collision-detecting SHA-1 implementation is now the default. The code is included with Git, so there's no need to install any additional dependencies. Note that this implementation is slower than the alternatives, but in practice this has a negligible effect on the overall time of most Git operations (because Git spends only a small portion of its time computing SHA-1 hashes in the first place).

In other collision detection news, efforts have continued to develop a transition plan and to prepare the code base for handling new hash functions, which will eventually allow the use of stronger hash algorithms in Git.

[collision detection, SHA-1 transition 1, SHA-1 transition 2]

More convenient pathspecs

You've probably passed path arguments to Git before, like:

$ git log foo.c
$ git grep my_pattern program.rb

But you may not have known that to Git, the foo.c and program.rb arguments are actually pathspecs, a Git-specific pattern for matching paths. Pathspecs can be literal paths, prefixes, or wildcards:

$ git log Documentation/      # Everything under the Documentation/ directory
$ git log '*.c'               # C files anywhere in the tree

But they also have a powerful extension syntax. Pathspecs starting with :(magic) enable special matching features. The complete list can be found in the pathspec section of git help glossary, but let's look at a few here.

For instance, you may want to exclude some files from a grep, which you can do with the :(exclude) directive:

$ git grep this.is.a src
src/foo.c:this is a C file
src/foo.rb:this is a ruby file

$ git grep this.is.a -- src ':(exclude)*.c'
src/foo.rb:this is a ruby file

There are a few things to note in that example. The first is that we had to put our pathspec after a -- (double-dash) separator. This is necessary because most Git commands actually take a combination of revisions and pathspecs. The full syntax is [<revisions>] -- [<pathspecs>]. If you omit the double-dash, Git will check each argument to see if it's either a valid object name or a file in the filesystem. But since our exclude pattern is neither, without the double-dash Git would give up and complain (this may change in a future version of Git; wildcards like *.c used to have the same problem, but the rules were recently loosened to resolve them as pathspecs). More information is available via git help cli.

The second thing to note is that typing :(exclude) is a pain, and we have to quote it from the shell. But there's a solution for that: short form pathspec magic. The short form for exclude is ! (exclamation point). This is easy to remember, since it matches the syntax in other parts of Git, like .gitignore files.

$ git grep this.is.a -- src ':!*.c'
src/foo.rb:this is a ruby file

That's shorter than exclude, but we still have to quote, since the exclamation point triggers history expansion in most shells. Git 2.13 adds ^ (caret) as a synonym for the exclamation point, letting you do the same thing without any shell quoting:

$ git grep this.is.a -- src :^*.c
src/foo.rb:this is a ruby file

Ah, much better. Technically we would need to also quote the *.c wildcard from the shell, but in practice it works out. Unless you have a file that starts with :^ and ends in .c, the shell will realize that the wildcard matches nothing and pass it through to Git verbatim.

But wait, there's more! Git 2.13 also adds the attr token, which lets you select files based on their gitattributes values. For instance, if you use Git LFS, you may want to get a list of files which have been configured to use it:

$ git ls-files
.gitattributes
README
video.mp4

$ git ls-files ':(attr:filter=lfs)'
video.mp4

You can even define your own attributes in order to group files. Let's say you frequently want to grep a certain set of files. You can define an attribute, and then select those files using that attribute:

$ echo 'libfoo/ vendored' >>.gitattributes
$ echo 'imported-tool/ vendored' >>.gitattributes
$ git grep -i license -- ':(attr:vendored)'

And if you want to get really fancy, you can combine the attr and exclude tokens:

$ git grep foobar -- ':(exclude,attr:vendored)'

Note that the attr token is not yet supported in all parts of the code. Some commands may report that it cannot be used with them, but this is likely to be expanded in future versions of Git.

[negative pathspecs, attribute pathspecs]

Conditional configuration

Git's configuration system has several levels of priority: you can specify options at the system level, the user level, the repository level, or for an individual command invocation (using git -c). In general, an option found in a more specific location overrides the same option found in a less specific one. Setting user.email in a repository's .git/config file will override the user-level version you may have set in ~/.gitconfig.

But what if you need to set an option to one value for a group of repositories, and to another value for a different group? For example, you may use one name and email address when making commits for your day job and another when working on open source. You can set the open source identity in the user-level config in your home directory and then override it in the work repositories. But that's tedious to keep up to date, and if you ever forget to configure a new work repository, you'll accidentally make commits with the wrong identity!

Git 2.13 introduces conditional configuration includes. For now, the only supported condition is matching the filesystem path of the repository, but that's exactly what we need in this case. You can configure two conditional includes in your home directory's ~/.gitconfig file:

[includeIf "gitdir:~/work/"]
  path = .gitconfig-work
[includeIf "gitdir:~/play/"]
  path = .gitconfig-play

Now you can put whatever options you want into those files:

$ cat ~/.gitconfig-work
[user]
name = Serious Q. Programmer
email = serious.programmer@business.example.com

$ cat ~/.gitconfig-play
[user]
name = Random J. Hacker
email = rmsfan1979@example.com

The appropriate config options will be applied automatically whenever you're in a repository that's inside your work or play directories.

[conditional includes]

Bits and bobs

  • --decorate=auto is now the default for git log. When output is sent to the user's terminal, commits that are pointed to directly by a branch or tag will be "decorated" with the name of the branch. [source]

  • git branch's output routines have been ported to the ref-filter system shared by git for-each-ref and git tag. This means you can now use git branch --format= to get custom output. See git help for-each-ref for the list of substitutions. As a side note, these patches are from Karthik Nayak, Git's Google Summer of Code student from 2015. Though his GSoC project to introduce ref-filter was completed almost two years ago, he's continued contributing to the project. Great work! [source]

  • git branch, git tag, and git for-each-ref all learned the --no-contains option to match their existing --contains option. This can let you ask which tags or branches don't have a particular bug (or bugfix). [source]

  • git stash now accepts pathspecs. You can use this to create a stash of part of your working tree, which is handy when picking apart changes to turn into clean commits. [source]

  • The special branch names @{upstream}, @{u}, and @{push} are now case-insensitive. This is especially convenient as both @ and { require holding down the shift key on most keyboards, making it easy to accidentally type a capital U. Now you can hold that shift key AS LONG AS YOU WANT. [source]

  • More commands have learned to recurse into submodules in the past few versions of Git, including checkout, grep, and ls-files. git status --short also now reports more information about submodules. [source, source, source, source]

  • The last few versions of Git have cleaned up many corner cases around repository discovery and initialization. As a final step in that work, Git 2.13 introduced a new assertion to catch any cases that were missed. After being tested for months in development versions, this shouldn't trigger. But it's possible that you may see BUG: setup_git_env called without repository. If you do, please consider making a bug report. [source]

The whole kit and caboodle

That's just a sampling of the changes in Git 2.13, which contains over 700 commits. Check out the the full release notes for the complete list.

Get ready for Pride Month with our new GitHub Pride and Trans Shirts

It’s almost Pride Month, and we’re rolling out the rainbow carpet a little early to announce a new shirt in the GitHub Shop, inspired by the LGBTQ tech community. After two years of donating proceeds from Pridetocat and Transtocat shirts to organizations that empower LGBTQ community members, we’re changing up the design and going bigger (and global) with our donations.

With the new shirt design, you’ll always have your heart on your sleeve and your git chart proudly on your chest. Whether you’re wearing it to parade day or a coffee run, it’s the perfect way to add some color with a side of code. Get one while you can—they'll be in the Shop until September 30.

Check out the shirts

pridetrans2

LGBTQ organizations you’ll be supporting when you buy one

BreakOUT!
BreakOUT! seeks to end the criminalization of lesbian, gay, bisexual, transgender, and questioning (LGBTQ) youth to build a safer and more just New Orleans. BreakOUT! builds on the rich cultural tradition of resistance in the south to build the power of LGBTQ youth ages 13-25 directly impacted by the criminal justice system through youth organizing, healing justice, and leadership development programs.

Communities United Against Violence
Founded in 1979, CUAV is a San Francisco organization that supports the wellness of predominantly low and no-income LGBTQ people surviving violence or abuse. They host support groups, workshops, advocacy campaigns for systemic change, and programs for leadership development.

Familia: Trans Queer Liberation Movement
Familia: Trans Queer Liberation Movement was founded in 2014 by trans and queer immigrants, undocumented LGBTQ immigrants, youth leaders, and parents. They are the only US national organization solely dedicated to community organizing and building the leadership of the trans and queer Latin community across the U.S. Familia runs advocacy programs including #Not1More and #EndTransDetention, a campaign against deportations of queer and trans people.

Gladt e.V.
Founded in 1997, Gladt e.V. is an organization by and for the LGBTQI community of color and queer immigrants in Germany. Working at the intersection of race, queer/trans identity, and migrant status, Gladt e.V. runs programs for queer refugees and provides binational couples counseling and support on health, violence, discrimination, coming out, and navigating immigration status.

alQaws
alQaws for Sexual & Gender Diversity in Palestinian Society is an organization building LGBTQ community in Palestine. They run a professional advocacy group to support Palestinian therapists on integrating LGBTQ issues into therapy, create safe spaces for LGBTQ Palestinians, and run a national support hotline. alQaws also advocates to change public discourse on gender and sexuality in Palestine and works with LGBTQ Palestinian youth, providing opportunities for advocacy, education, and community-building.

Stay tuned for more information about our Pride festivities.

Go to the GitHub Shop

pridetrans

See you at OSCON this week

Greetings, Austin! If you're going to OSCON this week, we'd love to meet you. We'll be at the GitHub booth in the Expo Hall on Wednesday from 10am-7pm and Thursday from 10am-4:30pm. At our booth, you'll find Open Source Alley, where open source maintainers will present and demo their projects. Throughout the week, you'll also be able to hear talks from GitHub engineers and product leaders. Check out the schedules below to learn more.

Open Source Alley

Open Source Alley is a space in the middle of the OSCON Expo Hall alongside the GitHub booth dedicated to open source projects from across the community.

GitHub Open Source Alley

Whether you're learning to code or scaling your infrastructure, using JavaScript or in love with Go–you're sure to find a project that is right up your alley. Stop by to chat with maintainers and contributors, find out more about the projects, and learn how to get involved with one of these great projects:

  • Exercism is a community helping code newbies and experienced programmers level up their programming skills. With practice problems in over 30 different languages, you can try solving programming exercises and get feedback on your solutions from the community. See a demo on Wednesday, May 10, at 10:25am and 2:30pm.

  • Operation Code empowers the military community to learn software development, enter the tech industry, and code the future. They work with more than 1,000 members through their online community, and welcome past and present Army, Navy, Marines, Air Force, and Coast Guard service members, veterans, and military spouses to apply to their programs. See a demo on Wednesday, May 10, at 10:45am and 3:25pm.

  • Salt is a new approach to automating the management and configuration of any infrastructure or application at scale. Salt can be used for data-driven orchestration, remote execution for any infrastructure, configuration management for any app stack, and more. See a demo on Wednesday, May 10, at 11:40pm and 3:45pm.

  • Hospital Run provides the most modern hospital information system possible to the least resourced environments through open source. Its intuitive interface provides a great user experience, and it's designed to allow records to be carried to remote clinics. See a demo on Wednesday, May 10, at 12:50pm and 5:55pm.

  • Botkit is a toolkit for making bot applications built to ease the process of designing and running useful, creative bots that live inside messaging platforms. Bots are applications that can send and receive messages, and in many cases, appear alongside their human counterparts as users. See a demo on Wednesday, May 10, at 1:30pm and 6:20pm.

  • Homebrew is the missing package manager for macOS. If there's a tool you need on your Mac, then you can almost certainly install it from Homebrew. See a demo on Thursday, May 11, at 10:20am and 2:30pm.

  • Keep a Changelog encourages open source projects to maintain a curated, chronologically ordered list of notable changes for each version of a project in a change log. See a demo on Thursday, May 11, at 10:40am.

  • Hugo is a fast and modern static website engine, making website creation simple again. Hugo works flexibly with many formats and is ideal for blogs, docs, portfolios, and much more. See a demo on Thursday, May 11, at 3:15pm.

  • Beeware is a collection of projects that can be used to help develop, debug, and launch Python software. Each tool follows the Unix philosophy of doing one thing well. Each tool can be used in isolation or they can be chained together to provide a rich set of programming tools. See a demo on Thursday, May 11, at 11:40am.

  • Appium is an open source test automation framework for use with native, hybrid and mobile web apps. It drives iOS, Android, and Windows apps using the WebDriver protocol. See a demo on Thursday, May 11, at 3:30pm.

  • Open Collective is on a mission to bring sustainable funding to open source. They offer transparent finances to over 200 open communities and have brought in over $200,000. See a demo on Thursday, May 11, at 12:40pm.

  • Mimic is a seamless mocking tool that runs inside your browser. It allows you to set a mock programmatically and to test out different scenarios of your application, and share your mocks across your team using your version control system. See a demo on Thursday, May 11, at 1:00pm and 3:45pm.

  • Zulip is an open source group chat application optimized for software development teams. It has all the features you'd expect in a modern chat application, and you can run it on your own servers and integrate it with your favorite tools. See a demo on Thursday, May 11, at 1:20pm and 4:00pm.

Thanks to StickerMule for donating stickers to many of these projects so they can give them out to visitors at Open Source Alley.

GitHub talks

You'll also be able to find GitHubbers at OSCON this week, discussing everything from APIs to open source best practices. Stop by their talks and introduce yourself! They'd be happy to chat with you.

Satellite: beyond the sessions

satellite_blog_email_header

With 14 sessions and two keynotes, there’s plenty to do on the first day of Satellite. But make sure to save some energy for socializing, workshops, and after parties while you’re there. Here’s a rundown of events outside of the conference talks you can experience with your Satellite ticket.

Ask GitHub

Don’t miss your chance to chat with a GitHub expert. Whether you have questions about GitHub Enterprise or Electron, GitHub team members will be at Satellite and ready to help you do your best work.

GitHub Professional Services is offering 30-minute complimentary, private consultations. Stop by Ask GitHub while you’re at Satellite to chat with them or sign up on the Satellite site under Ask GitHub.

Build your community

Connect with developers and teams who share your passions.

Wander through art installations, lounges, and food stations to meet developers working on projects like yours, and strike up a conversation with service providers who can improve your GitHub workflow.

This year, you can look forward to interactive art like an ethereal flower garden from Heroku and recharge lounges hosted by AWS and Sentry.

Celebrate with us

After the conference, walk a few blocks over to the after party at Hawker House, one of London’s biggest street markets. Reconnect with developers you met at the conference, meet session presenters, and challenge them all to a game of foosball when you’re done sampling the food stands.

Hone your skills

The second day of Satellite kicks off on May 23 with workshops—practical sessions, where you’ll build something new with experts leading the way. You’ll have your choice of workshops for €99 like “GitHub and the Internet of Things: Automate IoT Hardware”, “Electron: Start to Finish”, “Creating an InnerSource Culture”, and “Build a ChatBot”.

Space is limited and workshops are almost sold out, so make sure to register for workshops when you get your ticket.

See the full Satellite schedule

satellie_sponsor_lockup_may2

Protect your organization's repositories with new security settings

Organization owners can now limit the ability to delete repositories. The new repository deletion setting is available for all plans hosted by GitHub and will be coming to GitHub Enterprise soon.

The setting is enabled by default, allowing organization members with admin permissions for a repository to delete it. When the feature is disabled, only organization owners will be able to delete the repository.

how to set repository deletion settings

When deleting a repository, you'll still see Danger Zone warnings. If the repository deletion setting is disabled and you are not an organization admin, you'll get a message letting you know that only owners can delete the repository.

image 2017-04-12 at 9 40 54 pm

Coming soon in the next GitHub Enterprise release

The next GitHub Enterprise release will include the same organization setting for repository deletion. In addition, there will be an appliance-level override that will limit repository deletion to only site-administrators.

The appliance-level setting is enabled by default. This allows users with admin permissions for a repository to delete it and defers to the organization-level repository deletion setting. If disabled, only site administrators will be able to delete the repository.

how to set GitHub Enterprise appliance-level repository deletion settings

When the appliance-level setting is disabled, users will see a similar message as they would at the organization-level when trying to delete a repository.

Documentation and support

For more information about limiting repository deletion for your organization, see our help documentation on deleting repositories. You can learn more about how repository deletion will work on GitHub Enterprise when the next version is released.

If you have any questions, please get in touch with us. We'd be happy to help!

Integrations moves into pre-release with new features

Last September, we launched the Early Access Program of GitHub Integrations, a new option for extending GitHub. We've recently added some new features and moved Integrations into pre-release so you can begin using it within your production workflows. Here's a summary of the latest features. You can learn more about what's changed from our Developer Blog.

Enabling users to log in from your Integration

Users can now log in with your Integration using the OAuth protocol, allowing you to identify users and display data to them from the relevant installations. Additionally, an Integration can now make authorized API requests on behalf of a user; for example, to deploy code or create an issue. Learn more about authenticating as a user via an Integration.

Updating an Integration's permissions

When you create an Integration, you have to specify which permissions it needs; for example, the ability to read issues or create deployments. Now you can update the requested permissions via Settings > Developer settings > Integrations, whenever the needs of your Integration change. Users will be prompted to accept these changes and enable the new permissions on their installation.

Post-installation setup

Finally, you now have the option to configure a Setup URL to which you can redirect users after they install your integration if any additional setup is required on your end.

Resources

More information on getting started can be found on our Developer Blog and in our documentation. We'd also love to hear what you think. Talk to us in the new Platform forum.

Git LFS 2.1.0 released

Today we're announcing the next major release of Git LFS: v2.1.0, including new features, performance improvements, and more.

New features

Status subcommand

With Git LFS 2.1.0, get a more comprehensive look at which files are marked as modified by running the git lfs status command.

Git LFS will now tell you if your large files are being tracked by LFS, stored by Git, or a combination of both. For instance, if LFS sees a file that is stored as a large object in Git, it will convert it to an LFS pointer on checkout which will mark the file as modified. To diagnose this, try git lfs status for a look at what's going on:

On branch master

Git LFS objects to be committed:

converted-lfs-file.dat (Git: acfe112 -> LFS: acfe112)
new-lfs-file.dat (LFS: eeaf82b)
partially-staged-lfs-file.dat (LFS: a12942e)

Git LFS objects not staged for commit:

unstaged-lfs-file.dat (LFS: 1307990 -> File: 8735179)
partially-staged-lfs-file.dat (File: 0dc8537)

Per-server configuration

Git LFS 2.1.0 introduces support for URL-style configuration via your .gitconfig or .lfsconfig. For settings that apply to URLs, like http.sslCert or lfs.locksverify, you can now scope them to a top-level domain, a root path, or just about anything else.

Network debugging tools

To better understand and debug network requests made by Git LFS, version 2.1.0 introduces a detailed view via the GIT_LOG_STATS=1 environment variable:

$ GIT_LOG_STATS=1 git lfs pull
Git LFS: (201 of 201 files) 1.17 GB / 1.17 GB

$ cat .git/lfs/objects/logs/http/*.log
concurrent=15 time=1493330448 version=git-lfs/2.1.0 (GitHub; darwin amd64; go 1.8.1; git f9d0c49e)
key=lfs.batch event=request url=https://github.com/user/repo.git/info/lfs/objects/batch method=POST body=8468
key=lfs.batch event=request url=https://github.com/user/repo.git/info/lfs/objects/batch method=POST status=200 body=59345 conntime=47448309 dnstime=2222176 tlstime=163385183 time=491626933
key=lfs.data.download event=request url=https://github-cloud.s3.amazonaws.com/... method=GET status=200 body=4 conntime=58735013 dnstime=6486563 tlstime=120484526 time=258568133
key=lfs.data.download event=request url=https://github-cloud.s3.amazonaws.com/... method=GET status=200 body=4 conntime=58231460 dnstime=6417657 tlstime=122486379 time=261003305

# ...

Relative object expiration

The Git LFS API has long supported an expires_at property in both SSH authenticate as well as Batch API responses. This introduced a number of issues where an out-of-sync system clock would cause LFS to think that objects were expired when they were still valid. Git LFS 2.1.0 now supports an expires_in property to specify a duration relative to your computer's time to expire the object.

What's next?

The LFS team is working on a migration tool to easily migrate your existing Git repositories with large objects into LFS without the need to write a git filter-branch command. We're also still inviting your feedback on our File Locking feature.

In addition, our roadmap is public: comments, questions, and pull requests are welcomed. To learn more about Git LFS, visit the Git LFS website.

That was a quick overview of some of the larger changes included in this release. To get a more detailed look, check out the release notes.

How investing in teaching with GitHub pays off

How Harvard, San Francisco State, and The College of New Jersey use GitHub in their courses

As a teacher, you juggle the endless stream of student emails, faculty responsibilities, and an ever-evolving field of scholarship. Is it worth to switch to version control for your courses? What do students get out of it?

Three teachers candidly reflected on the benefits GitHub offers their classroom practice at the recent Special Interest Group on Computer Science Education conference (SIGCSE) in Seattle.

Skip to a specific section:

  • 2m24s Omar Shaikh (SFSU): GitHub + Travis CI for automated grading
  • 11m50s S. Monisha Pulimood (TCNJ): Collaborating on real-world projects
  • 23m28s David J. Malan (Harvard): Custom tools for CS50
  • 37m25s Questions and answers

Monisha Pulimood, Professor of Computer Science and Chair at The College of New Jersey, shifted her class on databases to a project-based model, where students collaborate in teams with a service learning component.

My concern was that, because of all the collaborative activities, I was losing class time for the students to actually master the content. But in fact, they are. It turns out they are really doing well with that; there’s a good increase in understanding the content. Students can answer deeper questions than they could before.

David J. Malan from Harvard University walked through the nuts and bolts of implementing Git and GitHub for CS50 in this deck.

CS50 Deck

Sign up for lesson plans, tutorials and best practices from GitHub Education

Once a month we’ll pass along tips and tricks for implementing Git and GitHub in your classroom.

Subscribe for updates

A sneak peek at Satellite sessions

Developers, community builders, and technical leaders from around the world are gearing up to share their experiences in fourteen sessions at Satellite on May 22. Here’s a closer look at a few of the topics and presenters.

Get your Satellite ticket before they sell out to be a part of the sessions.

Satellite speakers

Get excited for Satellite

“How to avoid creating a GitHub junkyard” with Lauri Apple of Zalando

When Lauri isn’t project managing Zalando's core search engineering team, she’s spearheading the team’s InnerSource initiative. She’ll be applying her background as a former journalist and media strategist to a session about building a cohesive narrative on GitHub.

“In this talk, I'll share insights gained from ‘editing’ Zalando's GitHub repository so we can tell a better story. From 400+ projects of widely differing quality, reliability, and maintenance levels, we've winnowed our offerings to make our highest-quality work more discoverable. I'll share how we used GitHub and other tools to create guidelines, categories, and processes that bring sanity to our storytelling. If your organization is facing similar GitHub-bloat challenges, or looking for ways to manage your repos more effectively, you’ll find some help here.”

“The power of the open source community” with Kat Fukui & Mike McQuaid of GitHub

Kat is a California-based Product Designer on GitHub’s Community and Safety team building tools that empower communities. Mike is a Scotland-based Senior Software Engineer and a lead maintainer of Homebrew on the side. They’ll be teaming up to share what they’ve learned about tapping into the power of the open source community to build the most successful people-powered projects.

“In this session, we’ll talk about what makes an open source project successful, and what workflow tools we’ve been building to help communities become happier places. Whether you’re a maintainer, existing open source contributor or looking to make your first ever contribution, this session will help you make the most out of the open source community on GitHub.”

“Openness at King: our journey towards collaboration with GitHub Enterprise” with Raul Pareja and Victor Martinez

Raul and Victor are build and configuration engineers at King, based in Barcelona and the UK respectively. They bring decades of experience in building integration and delivery environments to their session about collaboration among developer teams on GitHub.

“We’re excited to discuss how we’ve used GitHub Enterprise as a sharing and collaborative tool in our current workflow. We needed to boost collaboration between departments and game studios that fit the openness of our company, and while there were challenges along the way, this session will show you how we achieved that outcome.”

“Building a tech community within an African society” with Konrad Djimeli, GitHub Campus Expert

Konrad Djimeli is a student at the University of Buea, Cameroon, an open source developer, and a GitHub Campus Expert. He’ll share his experience with building software in African communities in his session.

“I’m helping build ‘the Silicon Mountain community’ known to be Cameroon's largest growing tech community. It’s still very new and has gone through some refinement to get to where it is now. This talk provides some insight on how technology is being used to solve problems we are facing in this part of the world, and how we are overcoming challenges against all odds.”

“Demystifying the monolith” with Kir Shatrov of Shopify

Kir is a Developer Infrastructure Engineer at Shopify where he works on the core Rails platform. He shares his journey working on the oldest actively developed Rails monolith, Shopify, in his session.

“The Shopify codebase starts in 2005, contains a thousand models and 400 controllers, and remembers the very first Rails versions. Every day hundreds of developers are working on it and pushing new code into a single GitHub repo. How do you scale, not in the number of requests served per minute, but from the perspective of developer experience? How can you automate code reviews and prevent developers from shooting themselves in the foot? We’ve built tools to make developers happy working with monolith, and I’ll share our learnings at Satellite.”

Don’t miss this orbit

These are just a handful of the sessions you’ll be able to participate in at GitHub Satellite. Find more info about sessions in the Satellite schedule, and don’t forget to grab a ticket!

Why version control is required for Comp 20 at Tufts University

Ming Chow of Tufts gives advice on teaching Git and GitHub

Students don't leave Ming Chow’s course until they are prepared to hold their own on an engineering team. Full stop.

What’s required for those rigorous engineering roles? “Experience making tangible things, mastery of how the web works, and communication,” Ming affirms.

In 2016 he received both the School of Engineering Teacher of the Year and Excellence in Technology Education awards at Tufts, success he reached using GitHub:

I’ve used Git and GitHub for well over five years now. When you take a course with me, it is simply expected that you’re going to learn Git and GitHub.

Ming was inspired to put version control front-and-center in his curriculum from a colleague, Norman Ramsey, who posted the idea to Stack Overflow. “Norman is a man of many great ideas, and this was one of them. I took his idea and executed it.”

To collaborate, you must communicate

It’s rare that developers build something entirely on their own: whether it’s taking over legacy code, reading documentation or submitting bug reports, we’re always in dialogue with others.

The benefit of version control is that it takes snapshots of progress over time, and small commits with clear progress markers give context to your work. Training students to make commit messages that are clear and frequent pays off in the future when other developers are able chip in to help.

Just to make sure that students master collaboration, Ming designs assignments and group projects so students must rely on one another to distribute the workload. He also asks students to give context to their work with GitHub’s documentation features:

In every assignment and every lab, students have to write a README. And a lot of them ask, “Why the heck do we have to write that?” Well, the difference between a good engineer and a great engineer boils down to writing skill and communication. So that’s the whole point of having a README for every project.

chow-readme-example
Priming collaboration: GitHub users are invited to create a README for every repository.

Collaboration matters because the web is relationships

To demonstrate how web technologies are interrelated, Ming has students evaluate and use third-party tools like APIs, Heroku, and GitHub to build their projects.

As part of that process, students become wise about which APIs to rely on:

One of the nice things about this course is it reveals the ugliness of web development, especially if you’re using other people’s platforms and services. For instance, Instagram recently changed its policy on rate limits, which students had to adjust for in their projects. When you’re dealing with APIs, you’re at the mercy of that third party. In any job, you’ll need to learn how to deal with that kind of risk.

All that said, Ming recommends the third-party tool Heroku for student projects because students can use Git to push changes to a live product.

wikilinks

Screenshot from a COMP 20 project hosted on Heroku. With these end-of-semester projects, students demonstrate their ability to work in teams, apply everything they’ve learned in the class, and have fun.

phood

Screenshot of another COMP 20 project.

Last, Ming points to GitHub itself to show the moving parts of the web in action:

Git and the web are tightly integrated. One of the main points of using GitHub is to show it’s all based on HTTP and HTTPS. That also reinforces the learning of how the web works, as well.

Why is mastery of the fundamental pieces of the web important? Once students master the web conceptually, they will be able to integrate new technologies into this framework, building upon their understanding in the future.

Careers are the sum of our contributions

At the end of the semester, Ming celebrates the end of the course with perhaps one of the best subject lines of all time:

gift image

Ming frames student work as something that’s valuable and in moving a repo to their stewardship, he’s giving students the gift of a portfolio. In the future, students can point to this project as proof of how they communicate with other developers.

As their last assignment, he asks students to frame their repository with one last README: a self-assessments about what they’ve learned in the course. From a student:

The most important thing I learned has been the importance of communication in teamwork. For example, dealing with merge conflicts on GitHub was a big problem in my group, and helped us learn how to discuss our changes with each other, even as we were working on separate parts of the project. Another time we were struggling with making our database queries, and even those group members not working on the server side had to learn about it and help.

A duty to train future leaders

Git and GitHub reinforce the ability to communicate with others around real-life projects, which is why they are required for COMP 20.

Ming believes that teaching computer science is not simply about ones and zeroes but about leadership. The technology of the future relies on the habits he’s building in the classroom.

image


This is a post in our “Teacher Spotlight” series, where we share the different ways teachers use GitHub in their classrooms. Check out the other posts:

Join this week's discussion in the community forum: How do you introduce Git in your course?

Announcing updates to the GitHub Developer Program

GitHub Developer Program Updates

For over three years, the GitHub Developer Program has been a launchpad for developers—from testing their newest applications to growing their biggest businesses. Now, we're excited to build on what's made the program successful for members and make it even more accessible.

Welcome, all developers

We're opening the program up to all developers, even those who don't have paid GitHub accounts. That means you can join the program no matter which stage of development you're in.

New levels and benefits

We're also introducing participation levels that come with existing program perks from us and our partners, like development licenses for GitHub Enterprise, and a new category of benefits that help you build and scale even faster. 17,000 developers around the world are already aboard—if you're kicking around ideas for applications that integrate with GitHub, now's the time to get started!

Here's how it works: Depending on the size of your user base, you'll be placed into one of three levels. For each group, we've made a set of benefits, resources, and tools available to help you advance to the next stage of development. If you're already a member of the GitHub Developer Program, you'll get an email with information about your level and available benefits.

We're so excited to see the applications you're building grow, and cheers to the thousands that have already seen success through the GitHub Developer Program: CircleCI, SRC:CLR, and GitPrime just to name a few.

Learn more

The GitHub Satellite schedule is here: save your seat

There's still time to register for GitHub Satellite, and now you can buy a ticket knowing more about what's in store.

See the full schedule

Here's a peek at what you'll experience in London on May 22-23.

GitHub Satellite 2016, Amsterdam

Hear from the GitHub team

You'll start day one with GitHub's co-founder and CEO, Chris Wanstrath. The keynote will share the latest GitHub updates, and you'll hear more from our team in later sessions. GitHub trainers, engineers, and product designers will cover everything from Git tips to running a healthy open source project.

Learn from the GitHub community

The keynote will also kick off breakout sessions hosted by leaders from our community. They'll share case studies on what they're building on GitHub and the tools they're using to improve the way their teams work together. Learn how:

  • Panna Pavangadkar of Bloomberg is changing how her team builds software
  • Kir Shatrov and the Shopify team improved the experience of hundreds of developers shipping code every day
  • Jacob Tomlinson and the team behind the largest supercomputer in Europe, the Met Office, are using open source tools to manage and analyze the rapidly growing warehouse of weather and climate data

Build something new in the workshops

If you're joining us for day two of Satellite, you'll experience hands-on workshops that bring you closer to the code and experts. In this new workshop format, you'll learn how to build a chatbot, create Electron apps from start to finish, and bring open source principles to your team.

See workshop schedule

Be inspired in London

Outside of the sessions, you'll have plenty of opportunities to connect with other attendees in our conference venue, Printworks—a 16 acre former printing factory. Chat while taking a break in one of the lounges or meet up for all-day coffee and snacks. You'll be immersed in the most exciting software community in the world, and you won't want to miss what we have planned outside the conference doors.

printworks

After party at Hawker House. After the conference, make your way over to the after party a few blocks away at Hawker House in the Rotherhithe neighborhood. You’ll get to meet presenters, visit food stalls, and play billiards and foosball in one of London’s biggest street markets.

Workshops at The White Rabbit. The second day of Satellite kicks off in a striking studio space—a 7,000 square foot renovated Victorian archway in Shoreditch. From chatbots to IoT hardware, you’ll have your choice of things to build alongside experts leading the way.

Visit the Satellite page to see the full schedule and get your ticket—but don’t wait! This conference will sell out.

Private emails, now more private

GitHub has supported using an alternate "noreply" email address to author web-based commits for a while now. Starting today, there's another way to ensure you don't inadvertently publish your email address when pushing commits to GitHub via the command line.

Git uses your email address to associate your name to any commits you author. Once you push your commits to a public repository on GitHub, the authorship metadata is published as well.

If you'd like to ensure you don't accidentally publish your email address, simply check the "Keep my email address private" and "Block command line pushes that expose my email" options in your email settings.

email settings page with the block command line pushes that expose my email checkbox

You'll also want to configure Git to use your username@users.noreply.github.com email. Don't worry—this won't affect your contribution graph. All commits will still be associated with your account.

Once you configure Git, commits will use your alternate "noreply" email address, and any pushes that don't will be rejected.

terminal showing the error message seen when a push is blocked by this setting

If you already have a private email address and would like to use this feature, check your email settings to make sure it's enabled. New private emails will have the option enabled by default.

For more information on keeping your email address private, check out the GitHub Help documentation.

Stay safe!