FlowTree
Make complex code changes faster & more reliably with automatic working memory support
Details
Installs
- Total 319
- Win 162
- Mac 91
- Linux 66
Nov 21 | Nov 20 | Nov 19 | Nov 18 | Nov 17 | Nov 16 | Nov 15 | Nov 14 | Nov 13 | Nov 12 | Nov 11 | Nov 10 | Nov 9 | Nov 8 | Nov 7 | Nov 6 | Nov 5 | Nov 4 | Nov 3 | Nov 2 | Nov 1 | Oct 31 | Oct 30 | Oct 29 | Oct 28 | Oct 27 | Oct 26 | Oct 25 | Oct 24 | Oct 23 | Oct 22 | Oct 21 | Oct 20 | Oct 19 | Oct 18 | Oct 17 | Oct 16 | Oct 15 | Oct 14 | Oct 13 | Oct 12 | Oct 11 | Oct 10 | Oct 9 | Oct 8 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Mac | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
Readme
- Source
- raw.githubusercontent.com
FlowTree
Cognitive science research shows that humans can only store a few things in our working memory at once. So what happens when programmers do tasks that are too big to fit in our working memory? You're debugging the frobnitz, and midway through you realize that the simplest fix involves refactoring the widget, which in turn requires reworking the widget factory. By the time you're back at the frobnitz, the frobnitz-related info that was in your working memory has been replaced. You waste time recovering that lost context, and you may introduce bugs if you misremember what's been done or forget something that needs to be done.
FlowTree is a Sublime Text 3 plugin designed to help with this problem. By automatically building a diagram of the files you open and why you open them, it can help you make complicated code changes faster and more reliably.
Installation
To install via Package Control, run the Package Control: Install Package
command and choose the FlowTree package. (If you aren't able to find it, maybe try updating Sublime Text to the latest version.)
To install manually, e.g. if you want to do development, clone the repository into the Packages directory in your Sublime Text 3 settings folder.
Usage
Open a file from a codebase you're working on and run the FlowTree: Show FlowTree
command. You should get a new buffer titled Your FlowTree
that tracks your editing workflow.
In this example, you're fixing a frobnitz-related bug that requires making changes to the frobnitz model, the frobnitz view, and the frobnitz controller. Because frobnitz.py
was the file that was open immediately before each of frobnitz_controller.py
, frobnitz_model.py
, and frobnitz_view.py
were opened, they are each displayed as children of frobnitz.py
. Midway through fixing frobnitz_model.py
, you realize the widget needs a refactor and search the repository for the string “widget”. Partway through editing widget.py
, you open widget_factory.py
to make some changes there. At each stage, it's possible to see where you are in the task as a whole and what still needs to be done.
As buffers get closed, the empty box ☐ turns into a checked box to indicate completion of that part of the task. In the above screenshot, you finished making modifications to frobnitz_controller.py
and closed the file, causing its box to become checked. When the top buffer gets closed, the entire FlowTree diagram disappears to get ready for the next task.
To provide further reminders about where you are in your editing workflow, if you leave text selected in a buffer, that text gets displayed next to the buffer in the FlowTree diagram. This can be used to leave hints for yourself about what you were doing.
Bugs
I made this for a hackathon and there might be bugs. Please report issues here.
Versioning
SemVer is used for versioning. For the versions available, see the tags on this repository.
Authors
John Maxwell - maxwelljohn