Trac encourages using plugins by providing an ever growing number of ExtensionPoints, where custom code could get hooked in to change/improve almost any aspect of the system.
You hardly could setup a custom feature-rich Trac application without using one or more of the Trac plugins from Trac-Hacks.org (t-h.o).
It helped me a lot, when I started configuring and customizing Trac.
It took a lot of my spare time to scan and test a great share of the plugins provided there to sort out the best suited for my applications.
Thanks to open-minded developers I finally became a developer myself. Even if it's sucking almost every minute of my spare time right now, I'm glad to know and have it arround, especially for the kind, skilled coders joining there.
When I took the challenge of working with Mercurial at Subversion repositories earlier this year, I looked at several candidates.
While hgsvn in general was in a working state, it was practically unusable for me. cloning the whole SVN repo from Trac-Hacks.org project (~8500 commits at that time) process time per commit seemed to increase between linear and exponential with every commit added to the local clone.
What seemed to become a true hybrid repo took twice the space of the svn-only or hg-only repo too.
And finally I had to restart the cloning every ~500 commits manually, after purging traces of latest failed transactions on both, the SVN and HG part.
All this was truly cumbersome and after ~20 hours and 2 retries starting from zero distributed over three or four successive days I finally gave up - almost finished.
hgsubversion did the whole cloning in less than 4 hours and only required 3 restarts. The rest is a different story.
This is actually the continuation of my recent hgsvn review.
While hgsvn and another solution where able to help Mercurial work at Subversions repos too, hgsubversion outperformed them by far when cloning the Trac-Hacks.org repo (~8500 commits at that time) within less than 4 hours.
I'm running it over the last 5-6 months now on an almost daily base. All in all it's really a setup-and-forget tool, working transparently in both directions.
Only bug that I've encountered repeatedly so far is, that I'm unable to commit more than one successive changeset in a row. Every time I tried to commit two or more at once, the process got stuck always right after pushing the first commit out.
I figured out from the issue tracker that this is a known bug, but I've not seen progress on this lately.
So all in all this is a great product and I give kudos to it's developers for saving me a lot of hassle when working with SVN at the backend. Vote would be 'almost perfect', if not the issue found had so tremendous effect on my work-flow. Enabling the pushing of multiple changesets at once is a must-have, and I really hope to see activity regarding this.
Recently I did a research in available extensions to the new-user-registration process for AccountManager, another Trac plugin.
This code seems elaborated and tidy, modular and easy to extend, like Trac itself. And the site, that hosts the code is using it too. Excellent.
Expect the initial setup to be simplistic, very basic, and just work(tm).
This is a solid base for project management, with multiple languages and solid timezone support out-of-the-box.
But when you need more and get a decent selection of Trac plugins, you'll notice how this framework shines in terms of customization and extensibility. Not all the nice bells-n-whistles, just professional low-fuss functions: intuitive and tidy web-UI, clever content cross-references by ubiquitous wikification, and more.