Bike and TaskPaper share many of the same goals, but Bike isn’t TaskPaper 4.0. Bike takes a different approach in a number of key areas.
New Editor
TaskPaper is built on the standard macOS text editing component. This provides great utility, but has often limited what I’m able to build.
Bike’s editor is built from the ground up with a focus on performance and fluidity. This is a tradeoff because I no longer get system editing behavior for free, but it gives me the flexibility to build exactly what I want.
Bike’s unique feel and performance are enabled by this custom editor.
File Format
TaskPaper is inseparable from its plain text file format. Bike on the other hand uses a HTML based file format. Rename a .bike file to .html and it’s a web page.
I think the new .bike format will allow for more powerful scripts and plugins.
It’s easy for scripts to read/write .bike files, they don’t need to parse and understand a custom format. It’s just HTML.
It’s also easy for scripts and plugins to store metadata, track items with persistent ids, generally do many things that are difficult when working with plain text files.
Bike also supports reading and writing .txt
and .opml
documents, but when working with .txt
documents metadata, item ids, etc will be lost each time a document is closed.
Framing / Nouns
TaskPaper framed as a todo list. Your document is made up of tasks, projects, and notes. This is good in some ways… I think it makes it easier to explain TaskPaper to new people.
I also think it’s limiting and undersells TaskPaper’s strengths and possibilities. Most of what I want to do in an outliner doesn’t map cleanly in to projects/tasks/comments.
Bike is a more open ended and generic tool. Today everything is just a generic item. In the future I expect other types to begin sneaking in. For example I want to have separator items. Maybe also heading items. Also maybe tasks, etc. The point being again that Bike is more generic and open ended.
Text and Outline Editing modes
TaskPaper works like a text editor with some special outliner commands added in.
In text mode that’s also how Bike works. But Bike also supports a separate outline editing mode. (Use escape key to toggle between these modes).
When in outline mode Bike works like an outliner. Item movement commands work on the entire outline structure and movements are constrained to that structure.
Another important feature of outline mode is that it’s not for text editing. That means all the normal text editing keybindings can be used for other purposes. For example when in outline mode you only need press left arrow to expand an item (in text mode that key moves the cursor left). I expect to add other such shortcuts going forward.
Pure Swift implementation
TaskPaper is implemented in a combination of JavaScript for the model layer and Swift for the UI layer. This is good for some things, but adds complexity to app development.
Bike is simpler, it’s all Swift code. This has made debugging and optimizing code easier and faster.
Long term
I don’t expect Bike to replace TaskPaper. I do hope to eventually implement the next version of TaskPaper using Bike’s editor (keeping TaskPaper file format). But that’s a long way out yet, and I’ve hoped similar things in the past and they didn’t pan out.