44 comments

[ 2.7 ms ] story [ 84.4 ms ] thread
It would be handy if github, gitlab, vs baked this kind of solution directly into their tooling to help expose todos in open source software
Oh that's a cool idea - Maybe there's an opportunity extend this into a github/gitlab/etc plugin. I'll look into that!
Actually, if you did that you could create your own "open source todos" site that had links to todos in source code for popular projects
We used something like this on the teams I lead at Dropbox to (what I felt) was great effect. We had a script that would regularly run and sync with Phabricator, our bug tracking tool of choice.

One thing that we did differently, however, was to "assign" TODOs based on project or team rather than individual people. This way we could triage issues more flexibly to people according to their workloads and also build in more immunity to organizational change (when I was around we still had TODOs for the founders -- ten years in!).

Very cool! Assigning to teams definitely makes sense. I built this to help organization at a 4 person company so hopefully we'll grow enough to one day exercise that strategy :)
> One thing that we did differently, however, was to "assign" TODOs based on project or team rather than individual people.

If this works for your team, that’s awesome, but beware, I think you’d need a very disciplined team with good communication for this to work. I’ve found on some teams, if a task is not assigned to a single individual, nobody feels “on the hook” to do it. Things assigned to a group can tend to pile up un-looked-at, because everyone thinks someone else will take care of them. You can fix this by having some kind of rotating duty, where people pick up ownership of issues on some schedule but if you’re going that far might as well just assign directly from the start.

Right, we would triage these TODOs as part of a larger cadence once every week (or maybe every other?... it was a while ago). If a given TODO was both important and urgent, someone would be specifically assigned to address it.
* differentiate between backlog and ready for development: (bi)weekly triage * bugs first, then code reviews, then features * order features by priority; PM? Triage as well? * work ready for development list top to bottom

Looks like the tags and keyvals could cover some of that. Maybe a bit hard to express priority (or change it).

Would be neat if changes in the dashboard would update the todos in your code (bit scary though)

Priority does get encapsulated via the special p=INT key val.

Also the edits you make in the UI actually are applied to the code! :D

My work flow is running a toodles server in a copy of our repo they we reserve for toodles, and commit the changes after planning meetings or similar.

What? Your team doesn't pick up unassigned tasks when they are done with their work? What's the alternative? When I'm done with a story I look in the backlog which is roughly ordered by priority and find a story that's in an area I know and start working on it.
Off topic, I'm looking for a solution to embed SVG diagrams directly in my code as comments, with the ability to edit them as in inkscape.
This sounds ambitious, but I imagine emacs can do it. Is that a feasible approach for you?
Neat! We use a TODO.md, but this solution can keep track of the exact position. Looks very useful.

If there's a way that the developers can run it without installing the Haskell suite (maybe binary releases for Windows, Linux, macOS), we will try it.

Does it ignore paths like node_modules/ and others or support command line arguments for that?

> If there's a way that the developers can run it without installing the Haskell suite (maybe binary releases for Windows, Linux, macOS), we will try it.

Great, I was waiting for someone to ask for a binary distribution before actually going ahead and setting it up. I'll go ahead and do that then.

> Does it ignore paths like node_modules/ and others or support command line arguments for that?

Yes, you set a list of regexes per project for toodles to ignore.

Yes, I'm halfway through installing on my Mac, it'd be much easier to use a docker container or pre-built binary :)

I created an issue suggesting a docker container, hope that's not annoying!

PS in case it helps others: for macOS10.12 + brew, I had to add:

    extra-deps: 
    - MissingH-1.4.0.1
to `~/.stack/global-project/stack.yaml`
Just curious, which stack resolver are you using?
Whatever `brew install stack` installed...

   $ stack --version
   Version 1.7.1 x86_64
   ...lots more output, skipped...
That's all I know :)
Also not at all, I think a docker container is a good idea :D

I'll probably just upload some binaries to start, but that's a good next step

Looks interesting! I'm looking forward to trying it.

The annotation syntax looks powerful but do people really edit thier code to adjust priorities and assignees?

On a related note, I review `TODO` in PRs and consider whether to allow them in the codebase; and `DEBUG` to indicate code that shouldn't even be checked in. Does anyone else have a codetag for this? DEBUG doesn't seem to be a well-known codetag, and I'd prefer to use something other people use.

> Does anyone else have a codetag for this? DEBUG doesn't seem to be a well-known codetag, and I'd prefer to use something other people use.

My team now uses `TODO(#pr)`. The #pr tag meaning it should be taken care of in this pull request, but I don't think that's common. Though maybe if toodles gets some use it will become more common :)

Do you open PR's before you start writing code? How do you know what number to fill in?
Ah sorry that was a little confusing. "#" signifies a tag / label in toodles, so #pr means adding the literal "pr" tag to the todo. So we're not adding a PR number.
We used FIXME to denote temporary changes that shouldn't be checked in, or sections which hadn't been written yet, and had a Git hook which stopped code being committed with that tag. (It also looked for 'console.log' and 'debugger' statements in our JS and blocked those, too.)
FIXME is definitely a recognizable codetag, I'm glad to hear other people have found a similar use.
FWIW I have seen tag NOCOMMIT used to indicate that a commit should be rejected by a pre-commit hook.

Useful when you're putting in debug logging statements you want to remove later, or hard-coding your own credentials during development with the intent on making them configurable later, etc.

Exactly! Thank you
(comment deleted)
Neat idea! I might throw something like this together for myself in awk for command line use.
Just an fyi, toodles has a CLI command if you pass the `no_server` flag, might save you some coding.
I made the very same thing years ago. I remember ending up removing the web-interface and use the CLI and vim-wrapper instead. I still think the syntax of the comments etc was pretty good http://hkjels.github.io/ntask/
TODO FIXME write an insightful comment here
This is great. Aaaaand here’s a Microsoft patent covering it: http://patft.uspto.gov/netacgi/nph-Parser?patentnumber=6,748...
Seems like it only covers live updates to tasks during "interactive coding sessions". So I don't think it would apply to offline source processing.
Wow... Out of curiosity, how did you find this?
Someone left it as a comment on my blog 10 years ago when I talk about Todo driven programming. I remembered this happening.