Optimizing your open source project with GitHub Apps

Managing open source communities can be time consuming for maintainers who want to support projects but lack the resources to do so. GitHub is ready to help automate away all of your problems with GitHub Apps.

GitHub Apps allow developers to build custom workflows with GitHub’s REST and GraphQL APIs. There are also dozens of free, open source GitHub Apps available for public use.

Here are some existing open source apps that can be installed for free today to help automate away some of the pain points of maintaining an open source project. All of these apps are built with Probot, an open source framework for building GitHub Apps.

Open source apps

Sentiment Bot

Sentiment bot image

Sentiment Bot, which uses Google’s Perspective API to analyze sentiment, replies to toxic comments with a maintainer-designated reply and a link to the repository’s Code of Conduct. Use this app to help prevent toxic interactions from getting the best of your issue comments.

Sentiment Bot can alert your project’s maintainers to the situation, giving you the opportunity to determine next steps. You can even customize the threshold of toxicity at which the app will take action in order to best manage your community.

Welcome

Welcome app screenshot

Welcome is a simple way to welcome new users to your community when they take their first actions in your project, such as their first issue, first pull request, or first successful merge.

Welcome allows you to effectively craft messages around what new members of your community need to know at each stage of the process by providing separate configuration options for all three welcome moments.

Stale

Stale app screenshot

Stale automatically closes issues and pull requests that accumulate in a project. This app lifts the burden of determining when work is not progressing.

Stale utilizes GitHub’s updated search qualifier to determine staleness; however, you can easily prevent it from closing issues and pull requests whenever there is an update, like a new comment. It is also highly customizable, enabling you to determine the length of time an issue should remain open until it is considered stale.

WIP

WIP gif

WIP, or Work In Progress, prevents the accidental merging of pull requests by setting pull requests’ status to pending if the title contains “wip” or “WIP”. This will block merging if you require the WIP status.

Installation

Install any of these apps by clicking on their link and then “Add to GitHub”. From there, you will need to determine where you want to install the app and what repositories you want it to act on.

After clicking “Install”, you will see a landing page specific to the app you installed, which may specify some next steps. For example, Stale requires a .github/stale.yml file in your repository before it will take action.

You can check out these apps and many others on probot.github.io/apps or build your own. Have questions? Reach out to us at developer@github.com.

Release Radar · June 2018

Release Radar June 2018 Edition

From code style to Minecraft, we’ve got another round of releases that caught our attention. Here’s a small sample of all the great open source releases that were published on GitHub in June.

PocketMine-MP 3.0

PocketMine-MP is a server for Minecraft Pocket Edition written in PHP. It lets you rule your own Minecraft universe by running multiple worlds, plugins, and gameplay customizations. The latest release features a new dependency aimed at improving performance, and fixes for many gameplay bugs. For example, Minecraft gardeners will be pleased to know that “saplings now take light level into account when trying to grow.” Read the release notes for details.

Did you know? If you search deep enough in our code mines, you’ll discover a treasure chest of Minecraft mods, plugins, and more to do things like generate colonies, disguise yourself as Hubot, and even visualize and manage your Docker containers. View the #minecraft topic to discover more.

OpenLayers 5.0

OpenLayers is a JavaScript library that helps you put maps on the web using tiles, vector data, and markers from any source including OpenStreetMap, Bing, MapBox, and others. The version 5.0 release of OpenLayers has been restructured to remove the Closure Compiler as a dependency, improving compatibility with popular JavaScript module bundlers and fixes a bunch of bugs. Check out the OpenLayers 5.0.0 release notes for more.

Did you know? Null Island is very popular for a place that doesn’t exist. (Get it?)

Neofetch 5.0

Neofetch in action

Want to show off your system’s specs? Then you might want to give Neofetch a try. It’s a command line tool that summarizes your operating system, software, and hardware in a style fit for a screenshot. Neofetch 5.0 had a significant internal rewrite, cleaning up a lot of code along the way. This release also adds support for several new operating systems, adds a new output format (JSON), and improves the performance of image handling. See the release notes on GitHub for a detailed breakdown of what’s changed.

Did you know? The Neofetch source contains an impressive collection of ASCII art operating system logos.

PouchDB 7.0

PouchDB is a database that runs in the browser and syncs with CouchDB. The latest release, version 7.0, trims the library’s size by dropping support for the deprecated Web SQL API and its own Promises polyfill. The release also ships new behavior for determining revisions, reducing the likelihood of conflicts when syncing, and lots of bug fixes. Check out the release announcement for more information.

Did you know? PouchDB is based on Apache CouchDB, an open source NoSQL document database.

ESLint 5.0

ESLint is a static analysis tool that checks your JavaScript source for stylistic errors and suspicious code for the pedant in all of us. ESLint 5.0 adds new rules, improvements to existing rules, and several bug fixes. This release does have some changes that break compatibility with past versions, so you might want to look at the migration guide in addition to the release blog post.

Did you know? The original lint program was invented at Bell Labs in 1978 by Stephen Curtis Johnson.

GitHub for Unity 1.0

GitHub for Unity is joining the 1.0 club with its latest release. GitHub for Unity brings GitHub, Git Large File Storage, and file locking to game developers as a Unity editor extension. The latest release lets you choose your own diffing tools, has a smaller package size, a Git action bar for essential tasks, and numerous bug fixes. Take a look at this blog post for the complete story.

Did you know? The game shown above, and in the Unity for GitHub website, uses a game called Throwback created by @Gipzo for last year’s Game Off competition.

Neural Network Libraries 1.0

Congratulations are in order to Neural Network Libraries, which also joined the 1.0 club in June! Living up to its name, Neural Network Libraries make it easier to work with neural networks. The latest release improves compatibility with different operating systems and Python versions. What’s more, the project has improved performance and has added support for Nvidia Tensor Cores. See the project’s release announcement for a summary of what’s changed.

That’s just a handful of releases you shipped last month. If you’ve got a release that should be on our radar, send us a note.

Show your projects in motion with animated GIFs

Is it a GIF? Or is it, you know, a GIF? While there is no shortage of opinions on how to pronounce it, there is one simple truth most of us can agree on: These perpetually looping frames warm a special place in our collective hearts.

Forged in Angelfire around the dawn of peanut-butter-jelly time and field-tested in various Geocities, animated GIFs continue to thrive across the internet. These days, they are far more than just an efficient format for rendering rug-cutting infants or marking semi-permanent construction zones on webpages. They’ve evolved into an art form, a helpful way to express tone online, and, for the purposes of this post, a powerful tool for showing people the things your software can do in their hands.

At GitHub, we get to create a lot of GIFs that showcase our work. There are many tools, tricks, and techniques that can help you produce high quality animations of your projects. These animations can add polish and clarity to your documentation, capture the essence of a new feature, or even demonstrate how to use your software in a way that words aren’t best suited to articulate. Below you’ll find the processes and tools GitHub uses for many GIFs that appear on this blog and across social media.

GIF

Do you really need a GIF?

Creating a high-quality animation takes significant time and energy. Before jumping in and capturing any footage of your screen, taking the time to assess your needs can save you lots of heartache. There are a handful of visual aids that can help you demonstrate your software, including annotated still images, diagrams, video walkthroughs, and yes, animated GIFs—each with its own benefits and drawbacks. Like so many other decisions in software development, it’s about choosing the right tool for the job.

Composition

If an animated GIF is the perfect fit, it’s time to start planning. A good first step is deciding where you want people to see it. Different social media platforms have different constraints that you can use to your advantage, or at least be aware of, when creating your animation. For instance, GIFs on the GitHub blog will often have different dimensions and compression settings than GIFs for the same feature on Twitter. These differences can affect the content and overall flow of an animation, so it’s helpful to consider them up front.

As you plan your animation, think of it in terms of telling a story about your software. Software demonstration and screencasting have a long history, so it’s easy to only think in terms of full-screen images and single shot animations. Instead, challenge yourself to break the story for your animation apart into separate shots and plan out each one separately. When should the viewer see the entire screen? What action should they see up close? In addition to making your GIF more movie-like, it helps modularize your animation and prevents the stress of having to choreograph everything into one long take. Capturing the same footage multiple times will come in handy when editing everything, so it’s helpful to optimize for modularity and repeatability.

Recording

There are lots of great tools for recording screen footage. We use a combination of commercial and open source software, including QuickTime Player, ScreenFlow, Kap, and LICEcap. Each has advantages in certain areas depending on the type of animation you need. Capturing your project at its best, however, is less about the software recording your screen and more about presenting a rich and engaging user experience.

Taking time to dress your UI before recording can create a much more realistic backdrop for your animation. In filmmaking, this is called mise-en-scène, and it can refer to things like scenery and props. For an animated GIF, this might mean seeding your app with content that reinforces the scenario you are demonstrating, but even random, realistic content is better than pasting in lorem ipsum text or names like “example for demo.”

In our GIFs, we’ll often use live content and then modify it to refine things, simplify the color palette, or remove identifying information. This type of DOM-hacking is possible with the help of the developer tools packaged with your browser. Manual changes to a rendered web page can be time-consuming, but you can take advantage of augmented browsing tools like Greasemonkey or Tampermonkey to program DOM changes into a script. This approach removes a lot of the friction when you need to repeat a recording.

When the cameras are rolling, be intentional with your actions. Plan each click. Move the mouse in a direct path to its destination. Make editing easier for yourself by knowing in advance what keystrokes you’ll make.

Editing

As with screen-capture software, tools for editing your footage abound. For this task, the best tool for the job is often the one you’re most comfortable with. The most effective animations are usually 7-10 seconds and highly focused, so the editing process is an opportunity to really fine-tune your footage. In an iterative approach, the first pass assembles all of the shots. Subsequent passes clean up typos, adjust speed, and remove extraneous content. There is a final pass to add motion that directs the viewer’s attention and transitional adjustments that help create a more seamless loop for the GIF.

Exporting

Depending on the software you’ve used to record and edit your footage, there may be an option for exporting your animation directly to GIF. Sometimes this is all you need to do. Exporting is often a careful balancing act between image quality and file size, however, so this approach may not always yield the result you need for the platform where you’re sharing the animation. There are lots of great dedicated tools for GIF creation, including open-source projects like Gifsicle and Gifify, as well as proprietary products like GIF Brewery.

Many of the GIFs featured on the GitHub blog and social media begin as 24fps video files. This frame rate, combined with a bit of motion blur, helps give the action in the animation a more cinematic feel. Those videos get imported into Adobe Photoshop, where they can be tweaked frame-by-frame. There are a variety of helpful tutorials about this process available online. From Photoshop, it’s possible to compare the resulting file size and image quality of multiple export settings combinations at once. This helps show you where you have room for a bit of extra dithering or how a more limited color palette will hold up.

If you find yourself wanting to squeeze down the file size of your animation, some helpful levers tend to be (in no particular order):

  • Reducing its dimensions
  • Shortening its duration
  • Simplifying its color palette
  • Reducing the amount of dithering during export
  • Eliminating superfluous motion in the animation

Try one out

High-quality animations can really let people connect with your software project by showing them what it’s like to interact with it. That connection, however, is as much about the engaging experience you paint for them as it is about the price or complexity of your GIF-creation tools. You may already have the makings of a pretty solid GIF studio on your workstation already. If you’re missing something or need a particular functionality, take a look at some of the GIF-related projects linked from this post or browse the screen-recorder topic on GitHub.

Whether you’re looking to help people learn something in a GIFfy or create the GIF that keeps on GIFing, there are lots of great tools to help you tell your story.

Archive cards on project boards

Cleaning up your project boards just got a lot simpler. You can now hide a card from your project board without deleting it. Archive any issue, pull request, or note to maintain a cleaner project board without losing the removed card’s history.

Archive card in project board GIF

To archive a card, click on the ... icon and select Archive. This action will send the archived card to a separate archived view, which is accessible from your project board’s menu. To access all archived cards, open the project board’s menu, click ... and select View archive. Restoring a card from the archived view will automatically move it into the last known column it belonged to prior to being archived. The search functionality in project boards does not include archived cards.

To learn more about using project boards, check out the documentation

Changelog

Subscribe

Discover new ways to build better

Try Marketplace apps free for 14 days

Learn more