My experience in two recent projects using Gantt charts as part of timelining has left me with a bitter taste for how they relate to actual concrete programming tasks.
A key failure a number of our developers identified is code doesn't translate well to a linear scale. It's nearly meaningless for me to tell my software lead that a component is 80% "done" after a week, when the 80-90% gap could take a month, and 90%-100% might not even be attainable. (I have a nearly impossible time ever considering something 100% "done".)
Coupled with dependencies and "Waiting For" or "Requires", it feels entirely like it's not an appropriate or truly representative model. This has led to intense frustration and tensions. Most of the developers on my current project dread the weekly Gantt chart update.
I most often find myself simply saying, "whatever I said component A was at last week, add 1%". It leads to a massive disjoint as one moves further up the management chain.
I realize this is a mini-railing against something you might not even be intending to use them for. I also realize that our software company may not be getting maximum utility out of the style of project management we use. I only speak from a developer's perspective who has been frustrated time and again when faced with something so horribly artificial-feeling.
edit For what it's worth, we use Microsoft Project. I've also used dotproject for non-work related coding I've done, but never learned it fully enough to speak to its capabilities or strengths and weakenesses.