On 6/27/2010 11:03 PM, Felix Schwarz wrote:

Hi,

after all I'm quite pleased with trac 0.12 and I'm absolutely on your side when it comes to more frequent releases and your approach to planning 0.13.

I have four concerns/issues that I'd like to voice (even if you dismiss them in the end, I want to make sure that they don't go unnoticed):
1. Python 2.4 support. RHEL 5 ships 2.4 and is one of the major Linux
   distributions out there (especially for shared hosting). Currently I
   have problems installing 0.12 on some production servers as they are
   still running RHEL 4 (Python 2.3!) which will change in 2012.
   RHEL 5 will be supported until 2014 and I'd like to make a point of
   supporting it for a couple of years more.

We certainly don't want to make things unnecessarily difficult for our users, but not at the cost of freezing the set of language features we can use or by targeting systematically the lowest common denominator. For that reason, I think it's not unreasonable to require a Python version which by the time Trac 0.13 becomes available, will be more than 4 years old.

Out of the many features 2.5 will bring, I already cited the "with" keyword which we badly need for our automatic transaction management, but other things (ternary op, unified try/except/finally) will contribute to make the code more robust and cleaner.


2. Completely denormalized databases: I don't know if
   http://trac.edgewall.org/wiki/GenericTrac is a precondition to multi-
   project support and the current state but I have to say that I
   really feel that SQLAlchemy could help with a couple of issues and I
   think that going completely denormalized contradicts my gut feel of
   a good architecture.

I'm not sure if I understand what you mean by "denormalized database". Are you refering to the duplication of data in ticket related tables, as discussed in #1890, or to the fact we don't use yet surrogate keys except for the new repository table? Or the fact that relationships between tables rely on "implicit" foreign keys (e.g. ticket -> milestone)?

The ideas exposed in GenericTrac will certainly help in those aspects, but in general this is somehow orthogonal to the other enhancements and multiproject support. Nevertheless, at the occasion of introducing new tables (e.g. project), we'll certainly go with something in this direction, a bit like we did with the repository table.

On the topic of SQLAlchemy, I'm personally very reluctant to consider adding such an important 3rd party dependency which will require some pervasive rewrites, when the benefits are not clearly demonstrated. I'm not asking for the list of SQLAlchemy features here, which I'm aware of, I'd rather see some answers to my recurring questions on this topic which were never answered by SQLA proponents, see e.g. http://trac.edgewall.org/wiki/TracSprint?version=16#SQLAlchemy or ... the numerous threads on this topic on Trac-dev.


3. Long-term support for certain releases.
   Currently Fedora EPEL 4/5 (RHEL 5) are shipping trac 0.10, Fedora
   EPEL 6 (RHEL 6) will ship 0.11 because of Genshi 0.5. There is
   interest from the Fedora/Red Hat side to fix security issues in
   these versions. Can you think of a process of doing so?
   My main point is that I want to avoid having a couple of custom
   patches that every distribution need to maintain themself. I'd like
   to gather at least all produced patches in one place (even if they
   don't fix all issues). From experience the best place for this is
   upstream svn.

I can't say for Fedora people, as they never contacted us directly AFAICT. We once had a contact from an Ubuntu developer which was basically going like this: "Hi, would you mind sending me the patches for those CVEs? (list of CVEs)". All issues that were long time fixed by us upstream, but that they didn't have in their shipped versions (0.9.3 + patches, 0.10.4 + patches, 0.11 + patches). I personally have doubts concerning the supposed greater stability of such patched releases, compared to one of our regularly tested 0.11.x bugfix release. It's however true that if we add at the same time a lot of minor enhancements, I understand they can be reluctant to upgrade the package wholesale as part of a security update.

So this is another reason on insisting to have only the important bug fixes in our stable branches. And this is essentially the way I see for improving the situation for every party, in the future. We have to get the package maintainers to realize that our 0.12.x releases will be bug fixes / security releases and that when aiming for greater stability, the best solution for them is to just pick the most recent 0.12.x version. Or put it differently, if they'd like to cherry pick the important fixes by themselves, they'll end up with "something like" 0.12.x, so they could as well use the official and recommended version.

Ideally the package maintainers should also be playing directly a role in the maintenance of a stable branch, for example by monitoring the activity on 0.12.1 and next-minor-0.12.x tickets and providing feedback.


4. Evolution of the ticket system.
   Of course I'm biased here but I really like to see some evolution in
   trac's ticketing capabilities. So far I did not attempt any action
   to improve the situation as I was under the impression that my
   patches would be rejected anyway. Major topics for me:
   1. Ticket linking (think 'duplicate of'), possible with semantics
      defined by additional plugins.
   2. Different fields by type (e.g. an enhancement has no 'version'
      field. Further steps could be also different field contents by
      condition 'X' (e.g. 'Project A' has different components than
      'Project B')
   3. Fine-grained security: Enable policies to hide certain elements
      (e.g. some milestone values) for some users (e.g. an anonymous
      user can not plan something for 'next-minor-0.12.x').
   So my main question here is if you would include patches that enable
   some of these features (even if it is just the infrastructure so
   that a plugin can do this without horrible monkey-patching)?

We're willing to see improvements in the ticket system, yes, especially based on concrete contributions. For example, Steffen Hoffmann has started to work on support for custom date and time field, he has a proposal and some code already, see http://trac.edgewall.org/wiki/TracTicketsCustomTimeFields. I can't make any promise about "when" integrating this work will happen, but it will certainly be possible during early 0.13dev.

So for the 3 points above, it can make sense to start your own experimental branches, document how you see those features could be implemented. In particular, explaining in some details how this would solve or mesh with other issues, e.g. #1395 for point 1, #2464 for point 2, http://trac.edgewall.org/wiki/TracDev/Proposals/EvenFinerGrainedPermissions for point 3.

Note also that for your point 2, some different approaches can be envisioned.

First, in the scope of MultiProject, it's quite clear that /in general/, components shouldn't be shared. Components are currently enums rather than resources on their own, but that's an implementation detail, be it resources or enums, we need a way to specify that a component is specific to a project. If that project is the root project or a parent project common to A and B, then the component might be shared and used in both A and B.

For ticket types, we can imagine having actual "types" with common base behavior, but specialization possible. For example, the list of default fields could differ. Note this is something that fits well in the GenericTrac approach with the lightweight schema.

-- 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