How do you keep track of your programming TODOs? [closed] - task-management

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm one of those people who can't get anything done without a to-do list. If it isn't on the list it doesn't exist.
Notepad Method:
When I'm programming I've been keeping notepad open with a list of to-do's for my current project. I'll constantly re-arrange these based off priority and I cross them off and move them to the completed section when I'm finished with that particular task.
Code Comments:
Some programmers pepper their projects source code with:
// TODO: Fix this completely atrocious code before anyone sees it
Plus, I know that there are some tools that show you a list of all TODOs in your code as well.
Website Task Tracker:
Remember The Milk
Backpack
Manymoon
Voo2do
Gmail Tasks
TeuxDeux
TodoDodo
Ta-da lists
... and many more
What have you found to be the best method of keeping track of your to-do lists for multiple projects?

Like others, I pepper them about my code, but I use the warning directive to generate a compiler warning too:
#warning TODO: Implement foobar
This way I can still search for "TODO" but they also shout at me whenever I build.

Pen and paper.
Combined with the genious PocketMod, it's totally perfect.
Striking TODOs is soooo satisfying!

I can't speak for other IDE's, but Eclipse will search your project's source files for TODO comments (as well as FIXME and XXX by default) and create tasks for you in the tasks view.
This leads to intriguing situations where you check the tasks view, double-click on a TODO task, and read the comment:
// TODO: Add this functionality.
Eclipse will also add TODO comments when generating certain code blocks, like method implementations, catch blocks for exceptions, etc.

TODO (and other) comments are great with Visual Studio and ReSharper installed:
(source: jetbrains.com)

Although I didn't try it I really like the idea of tests as todos. What else should get you going if not a failed test?

NextAction, from TimeSnapper

Personal Abstract Todos
I use Tomboy Notes or paper to make a quick list of abstract high level tasks. Often when I'm on the phone with my manager, I just need to get things written down.
Source Code Specfic Todos
I use the inline TODO: / #todo comment marker in my code and then use the Netbeans plugins that give me a running list of todos throughout the project. Since Netbeans can aggregate todo markers from multiple projects, it does not make a difference how many different projects I'm running.
Multiperson Tasks / Todos
Once I have to keep track of todos for more than myself, I move to project management software like OpenProj, MS Project, etc. Also, if the todos involve bugs or feature requests, I use our bugtracker. Other todos, can be manged by a helpdesk system as well.

I use ToDoList from AbstractSpoon. It lets you divide your ToDo list into projects and can even be used by a number of users for larger projects using a shared network drive.

For every task in a project i create a new entry in the issue tracker (Bugzilla for me).
A big advantage is that you can track back every changes made by the issue ID.
You can report customers or project members the status of your task.
You can create a new bug type like "task", "todo" or "feature-request".
It's a central solution. No local stuff...
I our development team there is a rule which says: "Do never change any code without a corresponding entry in the issue tracker. Never!"

I use Pen and Paper to jot down notes. I also use TODO/FIXME tags in code that gets highlighted yellow in Vim and tracked by the TODO extension in Komodo.
One of the most useful additions for me has been using Samurize to embed a plain text file onto my desktop (http://lifehacker.com/software/plain-text/geek-to-live--incorporate-text-files-onto-your-desktop-213280.php). I have 3 virtual desktops and it lives on my email desktop which is where I wind up first thing every morning. It contains a text file with the items that I need to do and it rarely runs more than a week ahead.
Wednesday 2/11/2009
- Item 1
- Item 2
Thursday 2/12/2009
- Item 3
I use Executor that has a keyword "todo" that automatically opens gvim with this file when I want to edit/add/remove items. This makes it about 3 keystrokes to get it open and ready to modify. It helps me remember the Monday morning production moves before I get buried in email and meetings. As soon as I edit, it's reflected on the desktop.
Obviously for longer and more detailed things, I rely on Roundup, Outlook reminders, etc. but this has been a handy way to jot things down so they won't get lost in the shuffle.

I use inline TODO: comments as Visual Studio will track these for me, of course I still have to look at the task list to see them. I cannot count the number of times I have found a TODO: comments whilst reviewing some code I thought was complete.

I would make a clear difference between FIXME and TODO. FIXME is a critical and must be fixed before commit/release. TODO can live a bit longer but should be cleaned away eventually.

A simple plain text file (TODO) in the top level of the project's cvs/svn area works for me for simple projects.

Like others have mentioned, I use the standard FIXME/TODO/XXX in my code comments, and then can find the list of tasks within my IDE using their various tools. I also use hudson's task scanner plugin to keep track of everything, since I'm a sucker for graphs.

I created a build task that picks out //TODO: lines from my code files and generates a report I include in team city. It gives you a quick way of see any outstandings on a project without having to check it out.
you can also use the CodeTagsPlugin with Trac

When programming Java in Eclipse, I find it really useful to, as you say "pepper my source code with // TODO: comments - mainly because Eclipse looks up each one in the project and compiles a task list for me =) In Visual Studio, there is a Task List panel, which I use sometimes, but I don't find it as streamlined as just having the comments in Eclipse.

I use eclipse as IDE, which collects all TODO's to a list and shows it in an outline. Very easy and usable.

I use emacs org-mode to keep track of not only code TODOs, but my whole life. It works as an extremely powerful outliner with some spreadsheet and calendar features as well. I use mercurial for lightweight version handling and simple replication between different machings.
It works surprisingly well.

Having done an extensive search for a suitable "to do list" application I settled on mylyn - the one that comes supplied with Eclipse.
It is easy to create and manage tasks. Tasks can be imported and linked to Bugzilla or a number of other different task repositories. It also has a "task context" which enables files that are relevant to a task to be highlighted and those that are irrelevant to be hidden (which is far more useful than I anticipated it would be).

Eclipse tracks your TODO and list them in a proper windows automatically. I find it powerful enough if you don't need advanced features.

I'm quite fond of tracks. It has the flavour of GTD without getting too regimented about it.
I can quickly whack stuff in there as I think of it, and then not have to worry about forgetting after that.

Wow, I just had this question yesterday. After some searching, I settled on the ReminderFox Firefox extension. It's completely integrated into the browser and has pop ups to remind you every time you open your browser when a task is due.

I like Mylyn a lot: integrated into Eclipse, works with many trackers as well as without (local tasks) and realizes new concepts like the focused UI.

There is also Task Scanner Plugin for Hudson (in case it fits in your environment). With that you can track number of TODOs/FIXMEs on your continuous integration build reports.

alt text http://www.86th.org/hudson.jpg
We use the "Open Tasks Trend" feature in Hudson, this works for a slew of languages. For our C# project we have 3 levels of tasks and this is accomplished by different TODO: style comments.
High Priority
Matches on FIXME:, HARDCODED: or HACK:
Medium Priority
Matches on TODO:
Low Priority
Matches on MEH: or CODEREVIEW:
Hudson will then take this list and trend graph it as shown in the picture, as well as have a sortable, filterable list of the tasks and it will display the messages on the web page with links that will take you right to the line in the source code on Hudson.
Plus we can easily setup points of interest for code reviews with CODEREVIEW: and have a nice concise list to print out.

I use Sandglaz and place my todos in 3 columns now, next and later (a little like their blog, but only one row)...and its easy and fast to use. I'm a freelancer so I work on several projects at a time so it works for me
I use pending tests only to remind myself to write tests. I use Rspec, so it has that build it.

For C++ projects (native/ATL):
#ifndef _TODO_H_
#define _TODO_H_
#pragma once
// from atldef.h:
#ifndef _ATL_STRINGIZE
#define __ATL_STRINGIZE(_Value) #_Value
#define _ATL_STRINGIZE(_Value) __ATL_STRINGIZE(_Value)
#endif
// put x in quotes, no need to use #pragma!
#define __TODO(x) __pragma(message(__FILE__"("_ATL_STRINGIZE(__LINE__)") : TODO: "x))
#define __WTF(x) __pragma(message(__FILE__"("_ATL_STRINGIZE(__LINE__)") : WTF?! "x))
// prefer to use ISO-formatted date
#define __BUGFIX(date, x) __pragma(message(__FILE__"("_ATL_STRINGIZE(__LINE__)") : BUGFIX: "#date" "x))
#define __CHANGE(date, x) __pragma(message(__FILE__"("_ATL_STRINGIZE(__LINE__)") : CHANGE: "#date" "x))
#endif _TODO_H_
Looking for something like that for C#.

doxygen can track such issues

One of our source code modules is absolutely littered with inline #pragma todo lines. The build output is polluted so we never can really tell when there are any new compiler warnings. Some of the todos have been there for years and the original developer has long since left the company.

When I have many many todos I discovered that it is useless to track them. You end up with hundreds of todos that can't be done.
Only write what you are asked (boss ) and do what bring the biggest benefits everyday.
I however have a next list. I wrote what I'm currently doing at the top and things I need to fix to complete it. My next list can be done in hours or days usually.

Related

Xcode 4 Tips and Tricks for Xcode 3 users [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
As most of you have probably seen, Xcode 4 has been released officially today. Now I know that plenty of devs out there have been using the preview versions, and it'd be great if people could post any great tips, tricks, or keyboard shortcuts they've learned using those version now they're no longer under NDA. This could be especially useful for those upgrading from Xcode 3 (like me, downloading right now).
Note: Apple have released a 'transition guide' that has plenty of stuff in about getting from version 3 to version 4, but I bet there are loads of great tricks people out there have learned that aren't in there.
I liked reading this Blog: Pilky.me - Xcode 4: the super mega awesome review.
It presents a good comparison, I especially liked his conclusion near the end.
Currently I have only one tip for Xcode 3 users - don't use xcode 4 unless you have free time to start learning again and/or are willing to report lots of bugs. Wait at least until 4.1. There are still lots of bugs unresolved. Nothing is stable. Also Xcode 4 advertises as having single window ui which is nice, but is unstable as U238. Also - it's probably single thing that is good about new Xcode 4. So here are some of my headaches currently:
There is no possibility to commit whole project (except for separately selected modified files);
There is no possibility to push (if SMC is git). At least I haven't found that;
Since symbol indexing is broken you cannot:
see normal syntax highlight;
jump to certain symbol definitions;
Jump bar is just one big misunderstanding:
Previously comfortable Ctrl+2 shortcut from Xcode 3 which lists method names and pragma marks has now become finger breaking Ctrl+6 (emacs user's rejoice</flamewar>).
There is no direct button to switch between interface and implementation files.
If you have 13.3" macbook[pro] - don't even try to use navigators with utilities (inspectors or libraries).
Also transition guide is made for working Xcode 4 which it is far from.
Update 1:
There is no such thing as "Build & Run". Only build, build for running, build for testing, build for profiling, build for archiving. Then just run without building and run without profiling. AFAIK it supposed to be easier so summa summarum - 8 actions instead of 1. Go figure.
So these are only few of my instantly found glitches for Xcode 4.
P.S. probably will be updating this in upcoming few days.
#Ohmu: The 3-finger up/down trackpad/magic mouse swipe gesture for switching between header (.h) and implementation (.m) files still works a treat.
XCode 4 has a lot of awesome new features. I'd recommend starting to adjust to it by watching last year's WWDC2010 videos - they dedicated a lot of time to going through some of the new stuff.
I love the new assistant mode - it makes it really easy to navigate through your interface/implementation files. This mode also allows you to create your user interfaces alongside your controller classes, which makes development both easier and more effective than doing it in two completely separate programs!
The jump bar (found along the top of your source code) is a really fast way to leap about your project, making it really easy to get exactly to the place in your code that you're interested in.
The version control viewer makes it really easy to track changes. I now use SVN for all my projects, even the ones I work on alone because it really makes it clear to see how the project has evolved over time.
There are settings to set how your layout changes and what's displayed when you build, when you run, when you end a run etc. etc. which I'm also finding really useful because you want to see different things when you'e debugging to when you're back in your code. It's really nice that Xcode helps you easily arrange your layout to exactly how you want for different scenarios.
The code templates (which can be found in the toggleable right-hand-side toolbar) are also really useful, and you can create your own in order to quickly get code you often write down.
Some more subtle things that I've grown to like:
The 'Fix It' feature works really well for quickly replacing typos. I find I don't even have to read the correction Fix It will make because the fix is so natural.
Control-I short cut for re-indenting code. This is really useful if you add a new pair of braces round your code and you want to quickly reformat. I don't think there was a nice shortcut for this in Xcode 3.
Hitting the escape key to bring up autocomplete suggestions seems to bring up much more helpful suggestions in C++, and looks a lot more beautiful all round!
On reliability, I've been using a combination of Xcode 4 and Xcode 3 since Xcode 4 first entered beta. Whenever Xcode 4 packed in for me or wouldn't let me continue with what I wanted to do then I'd just switch over to Xcode 3 as the two are completely compatible. What I got was a really nice transition period and now I'm completly using the latest build (first week of March) so I think it's very stable.
For people that don't like change, this update is going to be hard. It'll be particularly challenging as a lot of the keyboard shortcuts have changed to make new for a lot of new features. The most obvious difference that people are going to oppose is the new all-in-one window layout. I'm sure people will get used to it over time and realize that this way of viewing everything to do with your project is much more effective both in real estate and in navigation terms.
Enjoy using Xcode 4, it really is an amazing improvement over the last version, and it continues to add to the awesome time I'm having writing Mac and iOS applications. :D
More shortcuts than you can shake a stick at here:
http://cocoasamurai.blogspot.com/2011/03/xcode-4-keyboard-shortcuts-now.html
However, completeness is obscuring clarity. For example, I can't straightaway see the shortcut for toggling between a header file and its associated method file. so I recommend one shortcut per answer, and the votes will filter out the best ones.
If you need to open plist files when you are not coding you should keep a copy of XCode3/Applications/Utilities/Property List Editor.
Property List Editor opens within the blink of an eye. But XCode4 takes minutes until it finally shows the plist file.
I guess Apple wants me to replace my 2008 MBPro
NB: Apple's official transition guide has moved/been updated (they didn't update the URL, sigh). It's now at:
http://developer.apple.com/library/mac/documentation/IDEs/Conceptual/Xcode4TransitionGuide/Xcode4TransitionGuide.pdf
The only way for me to like XCode4 is thinking it as a different product.
There's NO evolution over XCode3, just lots of drawbacks for the way I use it.
Who changes (almost all) shortcuts between version of the same software?
Why do I have to learn back from zero how to use and configure my projects? Sounds like punishment, not evolution.
How good is XCode4 for multiple monitors usage? It was clearly designed for a single monitor user, but unlike Xcode3, its UI cannot be as easily (and persistently) changed.
Although it can be disabled (and must), auto code check for errors... So we're back on VB6 now?
I'm a BIG Apple fan, though XCode4 falls short on developer satisfaction due to its lack of customization (compared to XCode3).
Not using XCode3 as a comparison, it is indeed a good IDE.
A frustrated developer,
Cheers.
Risky business: Moving to Xcode 4 will introduce you to a whole new level of strange behaviour, bugs, and pain. E.g. having third-party frameworks (like Three20) in your app, means that you won't be able to build a proper archive, without jumping through various levels of hoops. Don't move to Xcode 4 yet, if you can. If you do, there are some tips below.
Keep your archives safe: ...prior to installing Xcode 4 (from 3). You will lose them (most likely) and with them lose your ability to symbolicate your crash logs.
Adding frameworks: It took me a while to figure this out, and it's nowhere in the docs. You cannot simply do this by right-clicking on the project or a group (like in Xcode 3). You need to go to the project view, select your target and go to "Build Phases" tab. Frameworks can be managed under the "Link Binary with Libraries" section.
Setting target dependencies: Similar to the above, in the "Target Dependencies" section of the "Build Phases" tab.
Delete action-BEWARE: "Delete" (instead of "Remove Reference Only") directly erases the file from your drive. It doesn't go into the Trash, so you cannot recover it.
Text Editor: Here a couple of good ones:
Cmd-clicking on a class name will take you to the implementation (or header) file of that class, cmd-clicking on an object will take you to where the object is declared.
Alt-clicking will open a documenation popup for the object you clicked on.
3-finger sideways gesture to left is the Back button, and goes to your previous file. Gesture to right goes to your next file in the stack. (not sure if this was true in XCode3)
http://pragmaticstudio.com/screencast-tags/xcode4
After watching these great little videos, I instantly warmed to XCode4
They have really sorted it out big-time in so many different places, making conceptual changes such as:
one window = NICE
TextWrap
removed annoying 'stop running + rerun' dialog
good color scheme facility
CMD SHIFT O to locate a header file
The auto completion is sorted out beautifully
clear console button
search & replace NICE
new keybindings NICE
On-the-fly error checking - love it!
As you can see, I made notes over the first 2 days of using it; every time I liked something, or every time something went wrong I would jot it down.
So far I have listed 16 problems, but these are all glitches, such as the colouring system going wrong in certain situations etc... ie all minor things that will get patched up pretty soon in updates.
With the occasional crash, I am not going back to 3.x unless I absolutely have to.
The only thing which really gets my goat is that Apple STILL refuse to support incremental updates. it is totally crazy, and I hope everyone makes a lot of noise about it until they sort it out.
I wondered where per-file compiler flags had gotten to.
Spoiler: Select project, select target, select Build Phases tab, expand Compile Sources phase and rejoice.

TODO/FIXME plugin for Eclipse

In my project there are large no. of FIXME / TODO which are to addressed at some point of time. Actually there about 480 which can be seen from 'TASKS' list but not organised.
I googled and found the Task Tag Decorator plugin.
But unfortunately this is not working.
Can anyone suggest a plugin for FIXME/TODO
apart from this.
I would also wanted to hear from all how these situations are usually managed
What you don't want to hear is that how these situations are usually managed is by not letting them grow so big. But I'm afraid that is the case.
The Pragmatic Programmers advise us Don't live with broken windows. The point being, that if we leave something broken instead of fixing it then other things will be left and before we know it we have 480 items on our TODO list. Plus, there is a danger that some part of our application will come to rely on the "broken" behaviour, so when we address the TODO item we also have fix that as well.
Not everybody can live up to the Pragmatic Programmers' high standards. An alternative approach is to have a list of stuff which needs to be worked on (sometimes known as the Kaizen list). People who are blocked on their assigned work can pick up one of those tasks.
As for your current situation....
I have a rule of thumb which states that nothing can be done in less than half-a-day: not once you include source control, documentation, discussing the change with Bob, etc. Of course, my rule of thumb doesn't apply to truly trivial tasks, but if these tasks were truly trivial they would have been fixed on the spot, not marked as TODO, right?
So you're looking down the barrel of 240 days of effort. If lots of those tasks can be combined into a single fix then you can reduce the per task overhead. But first you've got a chunk of work just to sift through the tasks, categorising and prioritising them. This is why thay call it "technical debt": the longer we leave it the more it costs to fix, and it has the compound interest rate of the average doorstep loanshark.
Unless you have a very understanding project manager/paying customer I think you will have to accept that you aren't going to be able to clear all these items. So you need a brief triaging exercise: assign each TODO into one of three categories:
Stuff that is intolerable and needs
to be fixed right now
Stuff that ought to be fixed as and
when there is an opportunity
Stuff that you're just going to have
to live with
Good luck!
Just wanted to chime in and say that I was able to get the Task Tags Decorator working in eclipse 3.5.0. Here's how.
Install from the update site : Task Tags Decorator Update Site
In preferences: General->Appearance->Label Decorators->Task Tag Decorators
Set up your decorators there.
Then go to: General->Appearance->Label Decorators and check the "Task Tag Decorator" box and Apply
I found this very frustrating to figure out and I hope it helps others. I really like the plugin and have found it helpful for me to visually keep track of TODOs. I think it also helps me keep the TODO list short since it's not out-of-sight-out-of-mind.
In what way do you want them to be organised? More specifically what doesn't the Task View do that you want to do?
For information you can do the following with the standard tasks view:
Click each column header in the task view to sort by that column ascending/descending.
Select the View Menu (downward triangle in top right of view) and
Group tasks by type
Show only a particular task type
Select Configure Contents... then :
Select a Scope to restrict the tasks shown to your desired scope (I find On selected element and its children particularly handy).
Filter tasks by description text (using contains or does not contain)
Filter based on Priority and/or Completed status and Task Type
There are also a few other options you may find useful if you dig through the View Menu.
You might want to look into Mylyn.
It might also be worth considering what it means to use one of these tags.
The trouble is that if you have almost five hundred of these things it doesn't seem likely that you are going to be able to delete them as 'stuff to do' at any point soon. Thus, the impact of using the tag and the process implied therein is diminished, and you end up with the problem you are citing, that the data set has become unmanageable.
The point is that the code is the truth, not the comments, whether they are marked up with task tags or not. You have to have something measurable by which you improve the code.
As an example, when I do code reviews I use these tags in a first pass before the code review pairing begins. The aim is that by the time the code review is complete the tags do not exist.

Eclipse: stack or pile for cut & copy & paste?

im just wondering as I couldn't find an answer on google (well, maybe Ive been trying the wrong keywords here >.< )...
A thing I've always dreamt about was a stack/pile cut feature which remembers the - uhm, lets say - 10 last things I've cut out or copied for pasting... Is there such a feature and if so, what is it called?
furthermore - is there a possibility to include your own suggestions for autocompletion? I'm not asking for much, just e.g. a while(true) suggestion instead of or extending the default ones...
Probably this should be migrated to superuser, but Im quite uncertain as this is somehow more programming related...
Thanks ever so much :-)
OK, the first part of the question I could answer myself:
there are templates (Prefs -> Java (or whatever) -> Editor -> Templates) where you can add your custom tags :-) quite fancy this one! (always wanted to type "forever" and get a for(;;) loop)...
so, I did some digging and found that some people refer to that kind of feature as a paste stack...
for windows users clipX will do the trick for general use (as well as in an IDE). for the use in eclipse only the best I could come up with is ViPlugIn which enables a Vim-styled cut, copy & paste feature which gives you some registers where you can store your "pastries" :-)
unfortunately this doesn't come for free (it's 20USD) - will work (AFAIK) without a license but you will be prompted a "missing license" each time you start up eclipse...
The first feature you've meantioned is often called "Multiple Clipboards." I've found two plugins that do the job, but didn't like either. (IIRC neither could interact both ways with the system clipboard.)

Diff/Compare Tool That Lets Me Write Comments On Differing Lines

I'm looking for a diff/compare tool that shows differing lines from two text files, and gives me a space to comment on those files. Ideally this application would have three panes, pane one would be file A, pane two would file B and pane three would be a comment I can enter to on why the files are different.
We're going to be using this diff tool to compare test and production environments. Sometimes it'll be justifiable that the two files are different but we need to have a space to explain why. I'd rather not write those comments in the files themselves.
I've used TortosieMerge, WinDiff and Beyond Compare. I like beyond compare the most because it lets me see the whole file, just the differing lines or the differing lines in context.
Tools that sit inside Visual Studio or eclipse are fine too.
It sounds to me like you might want to use a code review tool for this (even if you're not really performing code reviews). They record diffs in a database and allow comments on those diffs.
A couple free ones are:
CodeStriker - I've used this and it works pretty well, but required more tweaking and mucking around in Perl that I'd have liked (that was a while ago, though)
Review Board - never used this, but it sure looks nice. I'm trying to get it installed at my current place of work.
I would like to suggest a high-efficiency software CodeGen to you. It's not only include TextCompare tools, but another Codec/Database tools is supported as well.
For more detail, please kindly access the Github repository.
https://github.com/work7z/CodeGen

How to highlight the differences between two versions of a text in .NET web app?

I have been supporting a web application at work for our Call Center unit for about 2 years now. The app is written in ASP.NET 3.5 with SQL server 2005 database. I’ve been asked to expand the call detail section to allow agents to edit the current call note with the ability to revert back to its previous version. Now, that’s all cool but now the manager wants to be able to click on any particular note and see all edits with changes highlighted in yellow (and if something was deleted, he wants to SEE the deleted text crossed out). Actually, what I need is very similar to how Stackoverflow handles edits on their questions. I’ve been thinking about how to go about this and after doing research and Google-ing of course, I am still unsure which route to take. I am fairly new to .NET development. Any ideas on the best technique for highlighting the changes in UI? I am afraid I am going to have to store a copy of the entire note each time they make a change because the manager wants to be able to easily review notes and revert back to ANY version (not just the most recent one) before sending the monthly call report off to our VIP customers. Since this department OFTEN changes their mind on things, I want to make sure the new functionality is scalable and easy to maintain. Any ideas would be greatly appreciated. I am really just looking for someone to point me in the right direction; maybe there are some tools out there that can be useful, recommended keywords in Google lookup, etc.
This will be difficult do to.
You'll need a "text editor" control that can not only edit the text, but which can also tell you what changes were made.
You then need to store not only the final text string, but also the list of changes
You'll then need to be able to display the text plus changes, using strike-outs, and different colors for inserts vs. changes
You'll need to do this not only for the changes of a single user, but you'll need to store each users' changes in the database, and will need to be able to display all the changes, all at once.
Your manager should be really sure he needs this.
Some tools for doing the diff for you can be found at Any decent text diff/merge engine for .NET?.
This would entail storing every version like you say. This should allow you to implement it similarly to SO. I seem to recall reading or hearing Jeff mention it, but wasn't able to find it, likely in one of the SO podcasts.
Easiest would be to store the text for each revision, then when the user wants to see the diff use a diff tool to generate the highlighted text.
Here is some Javascript diff code:
http://ejohn.org/projects/javascript-diff-algorithm/
If all the computers have Word installed you may be able to use a Word control to accomplish this. TortoiseSVN has scripts in its program directory which can take two word documents and produce a document with changes highlighted. To see this create c:\aaa.doc and bbb.doc, then install TortoiseSVN and run:
wscript.exe "C:\program files\tortoisesvn\Diff-Scripts\diff-doc.js" c:\aaa.doc c:\bbb.doc //E:javascript
I think you should see http://en.wikipedia.org/wiki/Revision_control