This week we interviewed the creator of Jasper, an Electron-based tool for managing GitHub notifications.
I’m Ryo Maruyama, a software developer in Japan. I am developing Jasper and ESDoc.
Jasper is a flexible and powerful issue reader for GitHub. It supports issues and pull requests on github.com and GitHub Enterprise.
When people use GitHub in their job or OSS activities, they tend to receive many notifications on a daily basis. As a way to subscribe to the notifications, GitHub provides email and web notifications. I used these for a couple of years, but I faced the following problems:
I was spending a lot of time and energy trying to prevent those problems, so I decided to make an issue reader for GitHub to solve these problems efficiently, and started developing Jasper.
Jasper is used by developers, designers, and managers in several companies that are using GitHub. Of course, some OSS developers also are using it. And it is also used by some people at GitHub!
Once Jasper is configured, the following screen appears. From left to right, you can see “streams list”, “issues list” and “issue body”.
This “stream” is the core feature of Jasper. For example, if you want to see “issues that are assigned to @zeke in the electron/electron repository”, you create the following stream:
repo:electron/electron assignee:zeke is:issue
After creating the stream and waiting for a few seconds, you can see the issues that meet the conditions.
I will introduce what kind of conditions can be used for stream.
Stream | Issues |
---|---|
mentions:cat mentions:dog |
Issues that mention user cat or dog |
author:cat author:dog |
Issues created by user cat or dog |
assignee:cat assignee:dog |
Issues assigned to cat or dog |
commenter:cat commenter:dog |
Issues that cat or dog commented on |
involves:cat involves:dog |
Issues that “involve” cat or bob |
team:animal/white-cat team:animal/black-dog |
Issues that animal/white-cat or animal/black-dog are mentioned in |
involves
means mention
, author
, assignee
or commenter
Stream | Issues |
---|---|
repo:cat/jump repo:dog/run |
Issues in cat/jump or dog/run |
org:electron user:cat user:dog |
Issues in electron , cat or dog |
org
is same as user
Stream | Issues |
---|---|
repo:cat/jump milestone:v1.0.0 milestone:v1.0.1 |
Issues that are attached to v1.0.0 or v1.0.1 in cat/jump |
repo:cat/jump label:bug label:blocker |
Issues that are attached bug and blocker in cat/jump |
electron OR atomshell |
Issues that include electron or atomshell |
Stream | Issues |
---|---|
is:pr review:required |
Issues that are required review in cat/jump |
is:pr review-requested:cat |
Issues that are requested review by cat . But these are not reviewed yet. |
is:pr reviewed-by:cat |
Issues that are reviewed by cat |
As you may have noticed by looking at these, streams can use GitHub’s search queries. For details on how to use streams and search queries, see the following URLs.
Jasper also has features for unread issue management, unread comment management, marking stars, notification updating, filtering issues, keyboard shortcuts, etc.
Jasper is $12. However you can use the free trial edition for 30 days.
I like the following aspects of Electron:
These features enable rapid and simple desktop application development. It is awesome! If you have any product idea, you should consider using Electron by all means.
I had a hard time figuring out the “stream” concept. At first I considered using GitHub’s Notifications API. However I noticed that it does not support certain use cases. After that I considered using the Issues API and Pull Requests API, in addition to the Notification API. But it never became what I wanted. Then while thinking about various methods, I realized that polling GitHub’s Search API would offer the most flexibility. It took about a month of experimentation to get to this point, then I implemented a prototype of Jasper with the stream concept in two days.
Note: The polling is limited to once every 10 seconds at most. This is acceptable enough for the restriction of GitHub API.
I have a plan to develop the following features:
Follow @jasperappio on Twitter for updates.
Have feedback on this post? Let @ElectronJS know on Twitter.
Need help or found a bug? Contact us.