Hello,

As you must have noticed, 0.12 is now behind us. It's the conclusion of the past two years of tremendous activity, with my fellow Trac'er Remy gradually taking "control" over the whole Trac code base (139 tickets vs. "only" 88 tickets for me, congrats rblank ;-) ). We had lots of valuable contributions from the rest of Trac community. There are 28 people who "own" one ticket, as they have proposed a patch that got integrated and 13 more who got attributed at least two tickets: Erik, Eli, Felix, Jan, John, Jun, Jeroen, Mark, Mikael, Oren, Ryan, Anatoly, and Vaclav. We also received lots of help from our translators (I still owe a virtual beer to Mikael for helping me to fix #8588, and another to Jun for finally adding i18n support to our Javascript code), and most of the regular translators are also now maintaining their respective translations on their own, with commit privilege (15^H^H18 people! 3 more since I started to draft this mail ;-) ). Special thanks also go to Christopher, Jonas, Jeroen and Pedro, whose contributions to Babel and Genshi made the i18n work on Trac possible in the first place.

That was a good and productive time, I enjoyed it a lot; so, now what's next on our plate? ;-)

First and foremost, we will try to build on the increased activity we've seen these past months, and we'll do our best to motivate our contributors. Several people have started to contribute high quality patches already (Mikael, Jun and Itamar) and we sincerely hope they keep on doing this, eventually joining us as part of the "core" team. We will try to improve our development workflow in several ways: - shorter development cycles so that the new big features reach our users earlier;
 - improved SCM tools;
- more clarity for the features we want and don't want, improved ticket triage rules and well defined "conceptual" milestones.

About the tools, we're going to keep Subversion for now, but we'll also start to actively support git and hg mirrors, as this will make it easier for everyone to share topic branches, create patches and keep them in sync with "upstream" changes. Instead of having to do their own mirroring (which eventually will end up putting a lot of demand on our svn server), we'll propose ready to use git and hg mirrors. We can already announce a Git mirror on Github (http://github.com/edgewall/trac), and a Mercurial mirror at bitbucket.org will be usable soon (wait until we announce it).

Then, before even talking about 0.13, let's mention what we plan to do for the 0.12.x maintenance branch. First, we will drastically limit ourselves to not add new features there, only doing the important bug fixes. This is mainly because experience has proven that otherwise, there's less incentive to really focus on the next major release. The second point is that we will try to cut out regular releases, something like every two months. We need to have people regularly testing and using the tip of the stable branch in production, so that we can be confident to package the 0.12-stable branch anytime we want.

We also have a last 0.11 release to make (0.11.7.1), after which the 0.11-stable branch will be closed.

Releasing 0.12.1 doesn't seem to be very urgent, as 0.12 proves to be quite solid. We have #9439, which is a bug happening if the install sequence is Trac first, followed by Babel second, something we obviously didn't test much ;-) The workaround is simple (remove the Trac .egg, re-install), so fixing this is also not so pressing.

We need to spend a bit of time doing some ticket triage:
- most urgent is to move enhancements requests out of 0.12.1/ 0.12.x; (done yesterday) - keep only what really needs to be kept on the radar in "next-major-0.1", as guidelines of what we want to achieve in the future versions; - move to "unscheduled" what we're not convinced of, close as wontfix what we don't want to have;

The "triage", "next-major-0.1X" and "unscheduled" milestones all have Maintenainer Notes which explain how the triaging should be done. We still have 468 tickets to triage, a lot but doable. This breaks down into 30 unseen (report:20), 198 in "triaging" and 240 tickets that need to be re-validated for next-major-0.1X (the query:milestone=next-major-0.1X&changetime=..05/01/10 ones).

Like already stated in a previous mail, we're going to be quite conservative about what we assign to 0.13, basically only the things we really want to have done *and* we're reasonably sure we can achieve. The idea is really to keep the current major milestone as a "working set", and have the "next-major-0.1X" milestone as a kind of staging pool where a feature can be discussed, accumulate ideas and patches and when mature enough, be brought to 0.13 (or whichever milestone is "current", as this procedure will probably stay for 0.14, 0.15 etc.). There, the priority serves as a rough indicator of when we think this will move from the pool to a concrete milestone, and the severity gives an indication of the importance of the ticket. This means for example that the low prio / critical severity tickets are important long term goals.

Now let me get to the content of 0.13, as we see it...

We have some very nasty bugs to fix, namely #9111 which is symptomatic of a weakness in the database connection cache. You can experience this nearly daily with t.e.o freezing for a while, sometimes even until we manually restart the lighty server. Fixing this is high prio, but due to the relatively obscure nature of the bug, this could still take some more months...

One of the major task I'd like to achieve for 0.13 is an overhaul of the wiki engine. Over the years, I've become quite familiar over the strengths and weaknesses of our "wiki formatter", and I think I can try (again) a rewrite. The main idea is to build some kind of parse tree (WikiDom) which can later be formatted or analyzed in various ways. See http://trac.edgewall.org/wiki/WikiEngine for an overview of the ideas and tickets (no code yet).

Some related enhancements are improvements to the Wiki user interface itself, most prominently the "Section Editing" feature (see TracDev/Proposals/AdvancedWikiOperations for an overview).

The next major topic for 0.13 will be the introduction of Multiple Project Support. This is not only something our users badly need, I need it badly myself as well... As for multiple repository support (which was a prerequisite for the general case of multiple project support), we'll introduce this feature in a way that will be transparent to the people not needing it. This means that a single project Trac instance will continue to work as before, maybe with the exception of a new project summary module (#1!). The support for multiple projects should be flexible enough so that it accommodates all kinds of situations: several completely separate projects, a master project and sub-projects, a complex tree of projects, with shared wikis or not, which shared or separate milestones, etc. There's still a lot to do to even figure out what we should do, but we've been postponing that for too long already and it's about time we start working on a solution. See http://trac.edgewall.org/wiki/MultipleProjectSupport (also not much to see yet).

The last main topic is about some general improvements to the repository browser and the support for distributed version control systems. As we're going to use more and more hg and git, the support for these systems in Trac should also gradually improve (for example a better support for branch history, #1492).

Now this may already sound "too much" for a single release, especially one for which we want to go back to a shorter release cycle (months instead of years ;-) ). Well, we'll see. And if not everything is ready by the time we want to release 0.13 (end of 2010), these features will be in 0.14, 0.15 ... much better to have *something* already sooner that to have to wait again for another 2 years for getting all the major features at once.

The corollary to a faster release cycle is that we need to improve the way we interact with the community of plugin developers. If we have more frequent major releases, this means there are also more occasions to break the plugins. Of course, we can try to minimize the backward incompatible changes (we already do), but that's not always possible. So we need to better communicate about the changes we make. We already maintain the http://trac.edgewall.org/wiki/TracDev/ApiChanges pages, but we'll need to improve upon that. One way will be to add an "api-change" wiki custom field to tickets, where we'll summarize the changes introduced at the occasion of this ticket that developers need to be aware of. Note that in the same spirit, we'll have admin-change and user-change fields. The other way will be to have at last an API guide (make apidoc - no don't try it yet ;-) ). We'll also try to make some early alpha releases, as a way to promote testing and getting feedback on known stable points of the trunk version, but with no commitment on the stability of the API or on the feature completeness of such versions. Those release points will however make it easier to talk about changes in the API /during/ the development period (as in "we changed that since alpha2"). Lastly, plugin developers will be encouraged to have a development process with branches matching the ones of Trac. Trying to support multiple major versions of Trac in one branch of the plugin is already difficult and prone to introduce bugs in the plugin even when used together with an older version of Trac (e.g. breaking a 0.11 version when introducing support for 0.12). It can only get worse if we ship major releases more often (say 0.13-0.16 in the same time span that saw 0.11 and 0.12). With all the facilities that modern SCM tools provide to port fixes made in the oldest supported branch by cascading it to the newer branches, this shouldn't be that problematic. Also, with rumors of TracHacks migrating to 0.12, the support of svn:mergeinfo in Trac via the eligible links could prove useful (if performance is adequate... we'll see).

Speaking about backward incompatible change, we'd like to move to Python 2.5 as the minimum required version of Python, mainly for being able to use the 'with' keyword. Most Linux distributions ship Python 2.6 since some time already and Python 2.7 final will be out soon, so we're in line with our usual practice of supporting the last 3 stable versions of Python.

Now I realize this mail is perhaps a bit long, so thanks a lot for having read that far ;-)

-- Christian


--
You received this message because you are subscribed to the Google Groups "Trac 
Development" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/trac-dev?hl=en.

Reply via email to