Over the past month I’ve started working on Bike 2.0.
I’m calling it 2.0 because it will have significant changes and new features. Licensing is the same as for any Bike release–It will be a free update if you purchased Bike within the last year.
Bike 2.0 will take a while to be ready. I’ve been working on it for a month, and I’m still at least another month+ away from a first preview. Then likely at least another few months until it’s ready to replace 1.x. Also, my estimates are always wrong.
I expect to continue smaller 1.x releases, but I’m unlikely to add new big features.
Why is a 2.0 needed?
Bike 2.0 started as I was adding outline styling and filtering to the current 1.x codebase. The coding was difficult. I decided to step back and figure out how to make these and other future features easier to implement.
I have a design now that I think works, but it’s a big change to Bike’s internals. It requires that I touch every corner of the codebase and then put everything back together again. At some point I realized this wasn’t just a big update, but a version 2.0, and it would take a while to finish.
What to expect?
I expect the 2.0 release cycle to go similar to 1.0 release cycle. I’ll release a rough and limited preview release. Then iterate quickly over a few months as I add features and polish until it’s ready for release.
I have a design now that I think works, but it’s a big change to Bike’s internals. It requires that I touch every corner of the codebase and then put everything back together again.
Tested with a million rows. Loading is slow, and scaling to that size isn’t all that useful, but it’s a good test that basic structures and algorithms aren’t to bad. Once loaded scrolling and editing are fast as can be.
Have a system for filtering. That’s what the yellow region is, filtered rows. TaskPaper had filtered rows, but it either showed the row or did not. In Bike I will devote space to indicate that sibling rows are filtered, and make it proportional to the number of rows filtered. I hope this will make filtered outlines more understandable.
Building the filtering system with smooth animations in mind. I’m imagining that as you type your query rows will slide smoothly into the filtered area, again to make it all more understandable. And pretty darn fun, at least I’m imagining it will be.
The layers used for displaying rows are more structured. In Bike 1.x there is no layer hierarchy used when showing rows. This was an easy path to making things fast, but added a lot of complication later when implementing features like folding and focusing. In Bike 2 the layer hierarchy matches the outline hiearchy. It’s fast and I “think” it will simplify a bunch of the animation code… still not to that point yet though to be sure.
So that’s where I am today. I think next step is to get selection working, so that I can implement basic fold and focus commands.
Embedded files still very much on list, but not a focus of 2.0. Generally they can be added whenever I have “time”, file formats don’t depend too much on Bike’s internals.
I expect I will be adding additional file format options for iOS version of Bike, which should start soon after 2.0. That will be good time for file attachment design too.
What is exciting is that those styles are computed by matching generic Bike outline paths. Still a lot of work to build UI to edit stylesheets, but core logic for running generic stylesheets is now in place.
They allow attaching styles to existing text runs. In this example I’m actually styling existing inline styles, bold, italic, strikethrough… etc, but just applying colors. You could style your own custom text run attributes as well.
For performance (and intelligence… because I can’t figure out proper transformations to turn absolute path into efficient relative path ) reasons I only allow relative paths when matching for styles. So for example the path to match bold text is:
Finally got filtering search working today! Still a long way to go, but making progress. I think the next hardest thing that I need to work on is 2.0 animations.
No much on animation front yet, instead I decided to work on editing. Moving rows, typing text. It’s making Bike 2.0 feel more real. Then I hit the delete key (not yet implemented) and boom… feels like still have a lot of work to go.
Time keeps flying. Still messing with animation. Then get stuck and port over some easier features. Just got undo working again! Wishing I had something that could become the public beta now, but still not ready.