Lazyweb, I want something for Christmas.  You gave me nothing except cute dog pics, which I appreciate, but would like something more.

I want a simple way to share knowledge picked up in quick chats and code reviews.  Consolidate all the comments and ideas.

I don’t know if this kind of thing exists, but its been bouncing around my brain for the last couple months.  Our team all works in the same place, most of the time anyway.  Sharing best practices and ideas happens pretty efficiently compared to large, dispersed teams, but there’s still plenty we’re missing.  Bringing on new people tends to start the cycle all over again.  Its fairly passive.

We’ve been building a nice little wiki database of lessons learned, but its slow and nobody really likes doing it.  More than that, we need to discuss topics and make a decision about what to write and how to organize it.  For big topics, this works OK.  For little things, like “AsyncTask is single-threaded in 4.0+”, it tends to need a bigger “threading” topic.  It works, but its clunky.

On the other end, code reviews seem like the perfect place.  Github has pretty fantastic web-based code review functionality.  You can leave comments right in the diff.  Pretty easy to add, but its too far on the other end.  Tedious to review in any meaningful way.  You’d need to assign old code reviews to new devs, which would be tedious, disorganized, and time consuming.  You’d probably get tired of reading “don’t eat exceptions” over and over.  Plus, the ideas aren’t logically organized by concepts.  They’re organized by time and file.

What I want is sort of a “Knowledge Base”.  Something in between code review and “wiki lessons”.  Loop through code review comments, search the KB to see if the concept exists, add if not with link(s) to specific examples.  Tag the concept (‘threading’, ‘ux’, ‘performance’, etc).  Vote on them.  Group and assign “blocks” of concepts to developers to review.  Let them comment and edit.

Some language processing would be HUGE to help on the intake of new concepts, but I can live without that.

For now I’m going to model a basic version in our issue tracker, youtrack.  Slightly custom workflow (never really “complete”. Just loop back to “unassigned”).  You can only assign to one person at a time, but it has voting and easy linking, commenting, editing, etc.

Thoughts?  I’m expecting somebody to link me to some fancy startup doing this, but I haven’t found it yet.