The GitHub Marketplace
Many tools extend or integrate with GitHub. A good way to find tools to use with GitHub is the GitHub Marketplace. The GitHub Marketplace is a directory of tools and apps grouped in the following categories:
- Code quality
- Code review
- Continuous integration
- Dependency management
- Project management
- Recently added
The Marketplace is a great way to find an app for every situation on GitHub. Purchasing or installing apps through the Marketplace has two key benefits: ease of billing and installation and the vetting process.
Billing made easy in the GitHub Marketplace
For apps in the GitHub Marketplace that require payment, installing the app through the Marketplace is a streamlined flow because you can use your GitHub payment info. That way, you’re not dealing with five different payment providers when purchasing five different apps to use with GitHub.
If you have a free GitHub account, you may not have setup your payment information in GitHub. To set up a payment method, click your avatar in the top right corner of GitHub.com and click Settings. From this page, click Billing from the list on the left side. Here you can click the Add payment method, as shown.
The GitHub Marketplace vetting process
One of the benefits of installing an application from the Marketplace is that these apps must meet certain requirements before GitHub will list them in the Marketplace. The requirements help ensure a higher standard of quality and security with the apps; helping ensure that these apps are useful (no Fart apps) and are secure.
At the moment, a GitHub Action doesn’t require any review to be listed in the GitHub Marketplace, which means installing an action from someone you don’t know may be a bit riskier.
An app must meet four main categories of requirements before being listed in the Marketplace:
- User experience: This brief set of nine requirements includes things like the app must have a certain number of users and installs already. It also includes some requirements around the behavior of the app, such as the app must include links to documentation, it can’t actively persuade users away from GitHub, and it must provide value to customers.
- Brand and listing: This set of guidelines and recommendations center around the branding of your app and your app’s listing. Every app must include its own logo. If the app makes use of GitHub’s logo, it must follow GitHub’s Logos and Usages guidelines. The brand and listing section on the Requirements page has links to further logo and description guidelines. As you can see, GitHub takes listing apps in the Marketplace seriously.
- Security: GitHub will conduct a security review of apps before listing them in the marketplace. A separate document with security best practices and more details on the security review is available.
- Billing flows: Every app in the Marketplace must integrate billing flows using the GitHub Marketplace webhook event. This requirement ensures that people can purchase a subscription to your app and cancel that subscription with the payment info they already have on file with GitHub. It also ensures that any changes made through GitHub are reflected immediately on the app’s own website.
How to list your app on the GitHub Marketplace
Getting your own app listed in the Marketplace may increase the potential audience for your application. However, listing your app requires that it meets GitHub’s requirements and receives approval.
To start the process of listing an app, click the Submit your tool for review link at the bottom of the Marketplace landing page or navigate to the New page of the GitHub Marketplace in your browser.
This page lists your applications that you can turn into Marketplace listings, as shown in the following figure.
Click Create draft listing next to the app you want to list on the Marketplace to start the process. This takes you to a page where you can enter a name for the listing and choose one of the marketplace categories for your app, as shown.
If you save the draft of your listing but happen to close your browser, you can get back to your listing in your browser.
After you fill in these details, click Save and add more details to save a draft of your listing and move on to the next set of steps, as shown.
These steps include
- Add your contact info.
This info is a set of three email addresses: Technical lead, marketing lead, and finance lead.
- Fill out your listing description.
This area is where you fill out more details, such as a product description, logo, and screenshots. The information here will be displayed on the Marketplace page for your application.
- Set up plans and pricing.
This is where you can set up one or more pricing plans, including the option to create a free plan, a monthly plan, or a monthly per user plan. You can also specify whether a plan includes a 14-day free trial.
- Set up webhook.
This step allows you to specify a URL where Marketplace events will be sent via an HTTP POST request. The webhook will send you information about events, such as purchases, cancellations, and changes like upgrades and downgrades.
- Accept the Marketplace Developer Agreement.
In order to list your app in the marketplace, you have to accept the Marketplace Developer Agreement.
- Click the Submit for review button.
GitHub employees will review your submission to make sure it meets the requirements to be listed in the Marketplace.
Consider common apps to install
Here are some of the most common and useful GitHub apps that you may want to consider installing.
Continuous integration (CI) apps automatically build and test your code every time you push it to GitHub. If you have a CI app, such as AppVeyor, installed on your repository, you will see the status of the check at the bottom of each pull request, as shown.
If you’re the owner of the repository, you can also specify whether checks have to pass before the branch can be merged into the master branch. Just head into the Settings tab. If you have any rules on the master branch already, click edit; otherwise, click Add Rule. From there, you can scroll down and select Require status checks to pass before merging.
Code quality apps automatically review your code with style, quality, security, and test-coverages checks. These apps can be really useful for ensuring your code is kept to a high standard. With well-styled and quality code, you’re less likely to introduce or miss bugs. For example, if you require that all curly braces are on new lines and indented with one tab per nested brace, you’re likely to be able to spot when something is incorrect. For example, Rubocop checks the style of your Ruby code while it’s building and provides you with style feedback, such as casing for method names.
Another useful type of code quality apps is the code coverage apps, such as Codecov. Shown in the following figure, Codecov and apps like it comment on pull requests with how much of the code is covered by test scenarios, helping to ensure your code remains well tested.
Localization apps can make publishing your app in many languages easier. For example, the Crowdin app will link your repository to a Crowdin account where people from around the world can help you translate your documentation and any written words in your software (for example, on buttons or in menus). With more than 20,000 people contributing to translations, the Crowdin app will automatically open a pull request on your repository with new translations when it’s reached a threshold of accuracy, still giving you a chance to review and merge. For open source projects, Crowdin is free!
Modern app development today is heavily dependent on public package managers for pulling in and managing dependencies. A typical app may have dozens, if not hundreds, of dependencies. Tracking which of these dependencies are up-to-date can be difficult. Github apps like Dependabot check to make sure your dependencies are up-to-date and submit pull requests to update the ones that are not.
Sometimes you don’t want all your dependencies on a public package registry. For example, if you work in an enterprise, you may have internal packages that should remain private. A private package registry tool, such as MyGet, is useful in this case. MyGet works with NuGet packages and lets you set up a policy where pushes to a particular branch will initiate a build and the branch will be deployed to a custom NuGet feed hosted on MyGet.
Testing software is an important part of the software development lifecycle. Good testers develop test plans to ensure that testers do a good job of testing each release. Managing test plans and keeping track of the status of test runs is an important part of quality assurance. The TestQuality app integrates with GitHub to helping developers and testers create, run, coordinate, and monitor software testing tasks.
A great way to learn GitHub is to install the GitHub Learning Lab from the Marketplace. Installing Learning Lab install a bot that walks you through interactive lessons on how to use GitHub through a set of tasks that you complete. The lab is free and lets you take as many courses as you like at your own pace.