Ask Slashdot: How Do You Track Bugs For Personal Software Projects? 221
An anonymous reader writes "One of my personal software projects grows bigger than I thought and the bugs becomes too many to just remember. I looked around for an open source bugs tracking system but found no ideal solutions. Ideally I wanted a simple system that does not need server setup and extra database setup, and can run under Mac OS X. Another option is a cloud service if it's affordable enough. Any suggestions from Slashdot?"
Mantis (Score:5, Informative)
Been using Mantis for years, easy to install, easy to setup, easy to manage.
Re: (Score:2)
Re:Mantis (Score:4, Informative)
Lighthouse (Score:5, Informative)
Re: (Score:2)
Re: (Score:2)
bugs.txt (Score:5, Insightful)
check it in with your code, add and remove bugs as needed. 5 seconds of setup. Search and has a history.
Re:bugs.txt (Score:5, Interesting)
I wrote find-issues.sh, a script that extracts comments of a certain type within the code and then groups them by file. Downside: your code files change when you register a bug. Upside: when done right, your bug description is next to the code that needs fixing.
Obviously won't work for distributed development, but for single-coder projects, it's really been useful to me.
Note some assumptions and grep magic to exclude third-party files and other non-code files.
#!/bin/sh
LASTFILE=""
egrep -ri "(WARNING|HACK|FIXME|TODO|BUG)" . | egrep -vi "(\.git|debug|/third-party|/locale|/prettify|doc/|/jquery-|lib/s3.php|/jwysiwyg/|^./(.*)\.(txt|conf|xml):(.*))" | while read LINE ; do
FILE=`echo "${LINE}" | cut -d":" -f1`
DATA=`echo "${LINE}" | cut -d":" -f2- | cut -d"/" -f3-`
LEVEL=`echo "${DATA}" | cut -d":" -f1`
COMMENT=`echo "${DATA}" | cut -d":" -f2-`
if [ "x${LASTFILE}" != "x${FILE}" ]; then
if [ "x${LASTFILE}" != "x1" ]; then
echo
fi
printf "%s:\n" "${FILE}"
LASTFILE=${FILE}
fi
printf "%5s:%s\n" "${LEVEL}" "${COMMENT}"
done
Re:bugs.txt (Score:4, Interesting)
Cool idea. What do you do when there's a bug but you don't know where in the code that it's caused?
Re: (Score:2)
A similar feature is also built into Textmate, in case OP uses a Mac.
Re: (Score:3)
And Eclipse....
todo.txt (Score:3)
I file mine in my todo.txt, which also includes missing features. Since I don't do a release if there are *any* known outstanding bugs, "bugs" and "incomplete features" are essentially the same for me.
I also log every bug fixed into changelog.txt, which gives a nice history.
Re:todo.txt (Score:5, Funny)
I file mine in my todo.txt, which also includes missing features. Since I don't do a release if there are *any* known outstanding bugs, "bugs" and "incomplete features" are essentially the same for me.
So you never release?
Re: (Score:2)
I file mine in my todo.txt, which also includes missing features. Since I don't do a release if there are *any* known outstanding bugs, "bugs" and "incomplete features" are essentially the same for me.
So you never release?
Or he's bad at finding bugs...
Re: (Score:2)
While it has been nearly a year since I released, that's mostly because I haven't touched the project in over eight months.
Before that, I did actually manage a few releases. The "zero bugs" was never an issue - between the small size of the project, and the smaller size of the testing corps, there just weren't that many known but unresolved bugs.
I should probably start working on that thing again...
Re: (Score:3)
Do you find that surprising?
I think most hobby programmers never release the stuff they develop and even those that do only release ~ 20% at best
Re: (Score:2)
grep TODO (Score:2)
//TODO -- fix fix this
grep TODO *.c
This is enough for the cathedral, which doesn't even have source control. Anything sold in the bazaar should have source control and some kind of bug tracking. Just pick whatever integrates well with the repository. Free sites will probably have a "most popular" bug tracking or integrated tracking. Just use it. A company will impose something. Use that, duh!
Re: (Score:2)
I pretty much do the same thing, but the file is called TODO and does not live in the repository. It gets backed up when my machine gets backed up, which is good enough. I don't want to air my dirty laundry in the source tree. Especially with all the swearing about browser bugs.
Re: (Score:3)
Or clone your repo up to github and use the bug tracker there if you want a bit more structure. Free for open repositories.
Try Trello (Score:5, Interesting)
Try Trello, it is simple enough to use, free and cloud based.
https://trello.com/
Re:Try Trello (Score:4)
Re: (Score:2)
Post a Press Release. (Score:5, Funny)
After every bug in my project you post a press release, discrediting the person who found the bug as some subversive agent, and explaining its uses of the bug in a positive light.
After the press release is done, I like to go into a dark room with a rocking chair, plug my ears and go LA LA LA really loudly until someone else says there is an other bug.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Ah. So you work for a three-letter agency, then?
A text file (Score:4, Insightful)
I've got a few hundreds megs of perl code. I've got five text files of bugs / planned features / quirks.
Not sure what features of a bug tracking system you seek. I need the file name, the function name, and a description. Text files are great, and far more portable and accessible than a spreadsheet.
But I've never been one to like "proper" bug tracking systems. Of course, I'm not working with dozens of other developers.
Re: (Score:2)
How do you triage your bugs?
Re: (Score:2)
I sort the text file, and I have a different text file for all non-critical/non-current bugs.
Re: (Score:2)
Re: (Score:3)
For those like me who don't need a feature packed application like org-mode and who prefer Vim to Emacs, there's VimOutliner [vim.org]. It's basic but very usable, and it comes with nice plugins (e.g. checklists) and scripts to export to various formats.
Re: (Score:2)
Trouble is that it requires more than an internet connection. It requires an application. Nice part about the text file is that I can keep it next to the code -- main.pl can have main.bugs. I can edit it in my favourite code editor, with all of the same features that I've been using all day to manage code.
But yeah, I use tabs to create pseudo-columns by which I can sort.
Re: (Score:2)
Oh I so very much agree. The negative organization effects come in so many ways. Mainly, real bug tracking systems are designed for projects where keeping bugs around is the norm, but tracking those bugs is also necessary. That's just weird for most projects; it's a weight that kills most projects.
Dead project mining. (Score:4, Funny)
Find a dead project online, and hijack their bug tracker. Just as long as it's one where you can register without authorization and close your own bugs it should work brilliantly.
Re:Dead project mining. (Score:5, Interesting)
Unless the project died from improperly managing bugs...
Re: (Score:2)
Just call Orkin
Re:Dead project mining. (Score:4, Insightful)
Re:Dead project mining. (Score:5, Funny)
Use unfuddle.com (Score:5, Informative)
I am not associated with them, nor employed by them. But I've used them for many projects now and been generally happy with the result.
Re:Use unfuddle.com (Score:4, Insightful)
JIRA (Score:3, Informative)
highlighted comments in source (Score:4, Insightful)
You say explicitly this is a personal project. That is why bug trackers aren't going to fit very well. Bug trackers are for teams of people to coordinate their efforts. They are mostly pointless if you're working alone.
Just put your ideas, plans, comments, and bug notes right into the source. Most IDEs will let you easily flag sections so they stand out when desired, for instance Eclipse has the TODO: tag for exactly this purpose.
Now your notes are seen every time you work on that section of code, and they benefit from versioning right along with the rest of the code (assuming you are using some sort of source control).
Re: (Score:3, Informative)
This isn't true at all.
What happens when you have more bugs than you have time to fix? How do you choose which to work on first? How do you remember which ones lead to data loss, and which ones have a workaround? How do you remember how to reproduce each bug? How do you manage patches? How do you remember which patches are compatible with other patches? How do you track the number of reported occurrences of a bug so you can prioritize your fixes more intelligently?
These things may be pointless in a small pr
Re:highlighted comments in source (Score:5, Insightful)
> What happens when you have more bugs than you have time to fix?
You put a quick note in with a TODO tag
> How do you choose which to work on first?
You switch to a view that shows all your TODO tags and take your pick
> How do you remember which ones lead to data loss, and which ones have a workaround?
You type those details into the TODO tag
> How do you remember how to reproduce each bug?
See above
> How do you manage patches?
diff on commit = patch. no big deal.
> How do you remember which patches are compatible with other patches?
whatever man, you are really reaching here. make all patches compatible with all others, or pay the price. this is a personal project.
> How do you track the number of reported occurrences of a bug so you can prioritize your fixes more intelligently?
again, simply add this type of detail to your TODO tag
Re: (Score:2)
Seconded. Though I'd prefer the tag "FIXME" instead of "TODO". TODO is more for things like 'some functionality is still missing here' (button xyz does not do anything yet when pushed) while FIXME indicates 'something is wrong here' (things that might look okay and be overlooked if the tag wasn't there).
Another possibility:
On a former personal project of mine, a compiler, I used a small self-written regression test framework. It consisted of a bunch of sourcefiles to be fed to the compiler with comments ins
TODO tags (Score:2)
Redmine (Score:5, Informative)
When I need to set up a self-hosted project and bug tracker, I normally use Redmine, which is very easy to use. It's written with Ruby on Rails, and so should be relatively easy to get a local SQLite-backed copy running on Mac OS using Rails' built-in mini web server.
This post is overly complicated but some of its information may be useful:
http://www.redmine.org/boards/2/topics/2768 [redmine.org]
Re: (Score:2)
We use Redmine as well, but it has some fairly severe problems. The biggest is the lack of a search function. There's no way to make a query like "find all open bugs assigned to category 'X' where the description contains 'keyword'".
If you make use of subprojects, then the fact that categories aren't shared can be a huge PITA.
Use SourceForce.net (Score:2, Interesting)
Re: (Score:2)
*only applies to us Dvorak users.
Fossil is the way to go. (Score:5, Informative)
Fossil (http://www.fossil-scm.org) is just great: it allows you to manage your code, documentation (wiki) and tickets (bugs).
It's really small and lightweight, offers its own web interface and can be made to run on a central server with a CGI script. Oh, and it's free and open-source.
It also scales very well: for instance the entire NetBSD code base has fossil repositories.
I am currently re-starting some personal projects and I will be using fossil almost exclusively for these. It's simply fantastic.
Fog Bugz (Score:3, Informative)
Re: (Score:2)
Re: (Score:2)
Way Too Complicated (Score:5, Insightful)
Okay, first I'm not given a lot of info about what you are trying to do, so I am forced to make assumptions. First, you are doing this part-time. Second, you have a small amount of users. Third, I assume these users either email you or tell you about problems in person. Fourth, you don't have any need to formally update people on statuses.
I have a great solution for you. It is called a spreadsheet. The positive is that is it free, easy to use and modify to suit your needs. No, it isn't flashy, but I find that folks tend to use software as a replacement for their own brain and creativity. I've used spreadsheets for a lot of different utilities from project management, to bug tracking to help desk support in small environments. Once the user base sees limitations, they can begin to see what they truly need and it helps immensely in determinng what the desired solution really is versus what the Microsoft shill^h^h^h^h^h consultant tells them they need.
So, yes, use a spreadsheet. Heck, in your case it really sounds like a text editor would meet your needs.
Call me old fashioned, but... (Score:4, Interesting)
I get a great personal satisfaction drawing a line through fixed bugs over just deleting a line of text or checking a box.
Possible solution (Score:2)
How about Stickies? [wikipedia.org]
github and bitbucket have issue trackers (Score:3)
For what it's worth, there are issue trackers offered alongside even the free levels of both github and bitbucket.org (which lets you use both git and hg). Bitbucket's free tier even lets you have a private repo if your source needs to be private (issue tracking and wiki instantiation are configurable via admin there, and should be offered as part of project repo creation). This way you get source control for your personal work as well as an issue tracker. ;)
I vaguely recall that Sourceforge also has some sort of bug tracker as well, if you'd rather use cvs/svn. (It's been a long time since I looked in that level of detail at SF though, so ymmv.)
All of these are "cloud" (blech) solutions that don't require any server setup on your part. If you aren't familiar with source control, that's kind of another matter, but there are quality GUI clients for OSX for most of the common protocols and cvs, svn, git, and hg all have reasonably good documentation publicly available in various forms.
what bugs? it works on my machine. (Score:2)
Taskwarrior (Score:2)
As some of my personal projects have gotten bigger, the standard TODO file became cumbersome to manage. I've recently been working with Taskwarrior [taskwarrior.org] an open source command line task management tool that can act as a simple todo manager, but also includes advanced features like projects, tags, filter-able queries -- all from the command line.
Wait a second... (Score:5, Funny)
I'm confused. You actually keep track of problems with your personal projects in the hopes of completing them one day?
I must be doing it wrong because I start a project and as soon as i get to the first major design issue, or meal time, i quit.
so i don't really ever have any bugs, per se. but i do have an svn with a sh*tload of half ass projects that i can let you have real cheap.
Re: (Score:2)
If only I had mod points. Sounds suspiciously like my own life.
SVN (Score:2, Informative)
TortoiseSVN is easy enough to setup to run without a server locally and works great.
Turnkey Redmine (Score:5, Informative)
Re: (Score:2)
Mod up...
We were on Trac for a while, but Redmine pretty much seems to be the heir apparent for a reasonably simple troubleticketing system.
Re: (Score:2)
http://www.redmine.org/ [redmine.org]
Git + Unit Tests (Score:4, Insightful)
Host your project on github or BitBucket, whatever. They all offer a bug tracker. Using an SCM allows to know when a bug has been introduced after writing the proper test.
Speaking of which, and even more importantly: WRITE THOSE F*CKING UNIT TESTS!
I cannot stress the last point enough. If you're introducing bugs in your releases, either you're not writing unit tests, or not writing the ones that count (aka the higher level ones), and not using every tool at your disposal to avoid bugs in the first place (test coverage, static analyzer, etc.). You should always strive for 100% test coverage and zero trivial bugs when releasing.
Re: (Score:3)
Unit tests are hugely important. Getting the code under test early is a lot easier than retrofitting it to existing code.
I will also stress that a good test library/framework/harness should provide you with as much information as possible when a test case fails -- this should help quickly identify the problematic code.
Also, get into the practice of writing test cases for bugs -- especially if you can do that before fixing the bug. This will help avoiding regressions in the future when doing things like refa
Re: (Score:2)
WRITE THOSE F*CKING UNIT TESTS!
Here we design for testability but only test critical stuff and wrote test case when something break down as our metrics told us that our unit test were worthless as they did not exercise code that broke or when the broken code was executed, the test was as broken as the code. Not that the code or the test were generally bad it's just that our bugs are usually at the multisystems interaction level, especially so when the mainframe is involved... Mocking up everything is not an option as experience thought m
Memory (Score:2)
I don't let enough bugs build up that writing them down would make sense. Although my personal projects are generally small.
GitHub (Score:3)
Depends where your code is. If it's hosted on GitHub, they have a simple but decent issue tracker that integrates really well with code commits.
Check out DoneDone (Score:2)
Team Foundation Server (Score:2)
http://www.tfspreview.com/ [tfspreview.com]
Been using it in beta for a lil while now (granted from the PC)... and they say that even after it leaves the preview stage, there will be a free version: http://tfspreview.com/en-us/pricing/information/ [tfspreview.com]
pencil & paper in session, leftovers to TODO.t (Score:2)
For personal projects (involving just me):
if it is fixable immediately and simply, I fix immediately.
Otherwise it goes to pencil & paper, any leftovers at the end of the coding session go to TODO.txt.
Write a bug tracker (Score:2)
org-mode in emacs (Score:4, Informative)
Trac (Score:2)
Not hard to setup a trac server on top of svn (or several other source control systems). I have done this in the past at home.
I have also used a .txt file, comments in main.h, and/or TODO:s in the code.
Re: (Score:2)
I use trac and subversion for personal projects and for work. I use my own setup to enforce my process rules.
If you don't want/need basic processes support for yourself (or small teams) there are a few SVN/trac hosting sites for really cheap.
Lab Book (Score:2)
Teamatic/Elementool/Redmine (Score:2)
I have used, in the past, Teamatic (http://www.teamatic.com) and http://www.elementool.com/ [elementool.com] - their offering may have changed in the last few years so check exactly what you can do for "free".
Also: http://stackoverflow.com/questions/966404/does-anyone-know-of-a-decent-free-online-bug-tracker-for-web-development-purpose [stackoverflow.com]
ditz (Score:2)
if you like commandline-tools and the git workflow, try ditz. It does not need git or a VCS, but it can profit from it, when working with a (small) team.
Check Your IDE (Score:2)
Depending on which IDE you're using, you may already have that functionality. Netbeans, for example, has a "Tasks" tab which will show you all your commented notes that start with "TODO:" or "FIXME:" within your code. It obviates the need for a formal bug tracking system if your objective is to make simple notes about what doesn't work, and to keep those notes attached to the broken code.
How about SourceForge/Github and the like? (Score:2)
There are many open source project management projects out there with various solutions. Check them out.
Re: (Score:2)
Yes, use SourceForge. I put my open source project up on there and my users have BOTH posted a bug report on the project. Easy to find whenever I need to think about maybe checking it out to fix it.
not ideal (Score:2)
But in my case "bugs" usually are just desired features. The couple users I have internally at work just will say "yeah but I really think it should be this way". Basically it goes into the email cloud. If it is easy and gets done before it gets buried by other email than it gets done. If not unless I hear about it again or have nothing better to do I assume it isn't important and don't bother with it. Basically it is prioritization by liberal use of the squeaky wheel method.
Do like Chuck Norris... (Score:3)
TiddlyWiki and unit tests (Score:2)
TiddlyWiki and unit tests.
For plain bugs such as "seg fault when doing x" I just write a test exposing the bug. This way, I won't forget about a bug even if I don't touch the program in six months. It will appear again as soon as I run the full test suite.
For more complex bugs such as design flaws, bugs from user interaction etc I keep them in my to do list in a TiddlyWiki.
TiddlyWiki is the perfect documentation/note taking tool for projects with a single developer since the entire wiki is in a single self
Re: (Score:2)
It's not a bug. It's a feature.
Re: (Score:2)
At least someone has a sense of humor.
That's important in the s/w biz, as the alternative is a rapid descent into insanity.
Re:Why track? (Score:4, Insightful)
In addition, how do you manage multiple contributors? How do you deal with letting your users know when bugs are fixed? How do you deal with issues that only occur in a very small amount of edge cases?
It's one thing to fix some code you fat fingered or to clean up some API calls. It's an entirely different thing to fix bugs in 200k lines of non-deterministic code that runs on 3+ platforms.
Re: (Score:3)
Having a personal project doesn't mean you don't have contributors - It means that you are the only main contributor. You may still receive translations or patches from users or enthusiasts occasionally. In addition, having a public bug tracker helps your users know what to expect when they use your product.
Re: (Score:2)
Knowing how code is structured doesn't automatically mean you know where bugs are.
Didn't say it did. Nothing is automatic. But it does mean you should know the coding style and how the program is organized. You should know the data flow and the processing steps. If you see something wrong, you should have a better idea of where to look than anyone else does.
Having a personal project doesn't mean you don't have contributors - It means that you are the only main contributor.
Oh, sorry. That's a different meaning for the word "personal" than we use on planet Earth.
In addition, having a public bug tracker helps your users know what to expect when they use your product.
Which means it isn't a personal project anymore. Perhaps you're thinking of "hobby"? You can program a publicly usable project as a hobby in
Re: (Score:2)
For my projects, I will typically fix things I find as I find them. Where I use a bug/issue tracker is for bigger things like tracking planned features for a roadmap -- things that will take longer to develop.
You could also have a problem near a release that is not critical, but you need to remember to fix it later on, or a defect that can only be fixed with an architectural change.
A bug tracking system is also useful for other people to report issues or feature requests they find to you/the developers -- t
Then document it as a known issue (Score:2)
What if you're using your program, discover some edge case with a bug, and don't have time or it's not worth it to fix right away?
Then document it as a known issue in the program, and if a user is affected, tough. CronoCloud keeps telling me that some edge cases are not worth serving.
Re: (Score:2)
Effective bug tracking is a useful and valuable skill to have, and for a small/personal project it's pretty good practice because of the relatively low complexity and time commitment needed.
Plus, big projects can start as small ones, and even a personal project can someday include other users as they expand.
Re:Fix them (Score:4, Informative)
Re: (Score:3)
Sounds like M$ Office.
Re: (Score:3)
Hi,
Err, that is very random - we are talking about the same company here, right? Lol.
Atlasssian have been *incredibly* professional in all my emails to them - I use them for Confluence. I honestly can't imagine that happening in an email chain with them. Can you paste any context to this email?
Also, I have a few friends there (Sydney office), and they're all pretty happy with the company - apparently they treat them very well, and staff morale/loyalty seems to be up there with Google so it does seem strange
Re: (Score:2)
I generally think of mantis to be a less clunky bugzilla.