本周我们会见了 Jasper的创建者，这是一个基于 Electron 的 管理GitHub 通知的工具。
Hello! Who are you?
I'm Ryo Maruyama, a software developer in Japan. I am developing Jasper and ESDoc.
What is Jasper?
Jasper 是 GitHub 灵活而强大的问题阅读器。 It supports issues and pull requests on github.com and GitHub Enterprise.
Why did you make it?
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:
- It's easy to overlook issues where I was mentioned, I commented, or I am watching.
- I put some issues in a corner of my head to check later, but I sometimes forget about them.
- To not forget issues, I keep many tabs open in my browser.
- It's hard to check all issues that are related to me.
- It's hard to grasp all of my team's activity.
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.
Who's using 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!
How does Jasper work?
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.
What can we do with streams?
I will introduce what kind of conditions can be used for stream.
Users and Teams
|Issues that mention user |
|Issues created by user |
|Issues assigned to |
|Issues that |
|Issues that "involve" |
|Issues that |
Repositories and Organizations
|Issues in |
|Issues in |
org is same as
|Issues that are attached to |
|Issues that are attached |
|Issues that include |
|Issues that are required review in |
|Issues that are requested review by |
But these are not reviewed yet.
|Issues that are reviewed by |
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.
Is Jasper a paid product? How much does it cost?
Jasper is $12. However you can use the free trial edition for 30 days.
Why did you choose to build Jasper on Electron?
I like the following aspects of Electron:
- Apps can be built for Windows, Mac, and Linux platforms.
- Electron is actively developed and has a large community.
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.
What are some challenges you've faced while developing Jasper?
I had a hard time figuring out the "stream" concept. 首先，我考虑使用 GitHub 的 通知 API。 However I noticed that it does not support certain use cases. 此后，除了通知API外，我考虑使用 问题 API 和 合并请求 API。 But it never became what I wanted. 然后在思考各种方法时，我认识到轮询GitHub的 搜索 API 将提供最大的灵活性。 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.
What's coming next?
I have a plan to develop the following features:
- A filtered stream: A stream has some filtered stream that filter issues in the stream. It is like as view of SQL.
- Multiple accounts: you will be able to use both github.com and GHE
- Improve performance: For now the loading a issue in WebView is low speed than normal browser.
Follow @jasperappio on Twitter for updates.