Christopher Lenz wrote:
> Hey Christian,
>
Hello Chris,
Nice to see we had many points of convergence here, so I'll skip over
those and go straight to the parts that need a follow-up.
But before doing that, I would suggest that you could perhaps sum up the
position on which we mainly agreed, about the guidelines for what should
rather be done as a plugin and what should rather be contributed as a
patch to Trac proper. This would be an useful addition to the
TracDev/PluginDevelopment page for example, answering the "what"
question in addition to the "how", and you have more authority than I
have to speak on this topic.
> On 30.05.2008, at 11:00, Christian Boos wrote:
>
>> Now to answer the question "why has the Trac team avoided
>> implementation
>> of such essential feature (#31) for 4 years", it's quite simple: the
>> TracCrossReferences effort which was started (3 years ago) to address
>> that issue, among other things, didn't get any "traction", quite to
>> the
>> contrary, so it ended up in a branch which I stopped maintaining
>> after a
>> while.
>>
>
> You make it sound like the xref approach was the only way to get
> ticket dependencies into Trac. From my point of view, it was a very
> broad design ("among other things") bordering on over-engineering.
>
Well, it only explains why I didn't get any further. Also, the xref
branch should have focused on xrefs and relations should have been kept
separate, I guess.
>> People here at one hand are striving for "perfection", so any
>> incremental approach is considered very suspiciously,
>>
>
> I don't understand how striving for perfection conflicts with
> incremental development. Surely, a patchwork of incremental
> enhancements and fixes done without a common vision or design is not a
> good approach, and leads to an increasingly convoluted code base. I'm
> all for the evolutionary development of software, but it needs to be
> guided by design goals and quality standards in terms of API evolution.
>
We agree in principle. However with Trac, the problem space is kind of
big, and sometimes having a partial, less optimal solution, is better
than no solution at all. As for the design goals, I think I had them,
well exposed and documented, only they were not shared. As for the
quality standards in terms of API evolution, well, we can learn from the
mistakes of the past, can we? Some times ago, I even proposed a few
guidelines for 0.12 and beyond (see
http://groups.google.com/group/trac-dev/msg/4207c000d7c8be9c, more or
less what you're already doing for Genshi, adapted to the idea of
intermediate "reference points").
>> Well, as you might have guessed by now, I've grown tired of this, and
>> 0.11 will likely be my last Trac release, while I'm looking for ways
>> to
>> build an enhanced, more cohesive solution, in line with my ideas (this
>> might succeed or not, but at least I won't have the feeling to bump
>> into
>> walls).
>>
>
> I find this part somewhat misleading.
>
> By closing #31 and referencing this thread for dramatic effect or some
> kind of PR stunt, you make it look like the Trac team does not
> actually want to add ticket dependencies, but you do, so you want to
> fork. The thing is, there has AFAIK never been consensus that Trac
> should *not* have ticket dependencies in core. Noah suggested the
> ticket *could* be closed with reference to MasterTickets, but he
> didn't actually close it. You did.
>
In accordance with what I've said in an earlier discussion on Trac-dev
about this topic, a few months ago. Please read
http://groups.google.com/group/trac-dev/msg/eabd326df35d3eaa
But linking from #31 to this thread was indeed for dramatic effect, as I
think that the Trac project presents a high risk of becoming misguided
by the repeated "write a plugin!" stance, and IMO a kind of "wake up"
call was necessary.
> While I suppose there's some level of conflict between your preference
> to have more things in core, and the preference of some others to keep
> the core lean and simple, this is IMHO far overshadowed by the
> conflict over the long-term design (xref, GenericTrac, etc).
>
Well, it is somewhat related. If you have read my numerous e-mails and
wiki pages on the topic, you'd know that I've always defended the idea
that a /rationalization/ of Trac core would not only enable us to have
more features but also to have a much leaner and simpler code base,
instead of N different data models, N different ways of solving the same
problem over and over again. So yes, those are the real reasons where we
differ on the longer term vision.
> Any disagreements on core vs plugin can really be sorted out on a case-
> by-case basis,
>
The problem is not really plugin or not plugin, it's rather about the
foundation on which the plugins should be based. For example, should a
ticket relation feature introduce its own special purpose tables or
should that be based on some higher-level relationship feature? The same
when a plugin wants to introduce some new kind of resource, does it have
to start from scratch or be able to reuse a default storage mechanism
and some base functionalities? I'm even OK to have lots of nice little
plugins (preferably in a kind of standard plugin library), as long as
they don't each re-invent the wheel for base services (and admittedly,
we probably differ in what we see as base service - for me it's anything
related to linking between resources and the ability to trace changes).
> as long as we can all agree on the basic mantra that
> got Trac so popular in the first place. The following sentences have
> been on the homepage of the Trac project pretty much since day one:
>
> "Trac uses a minimalistic approach to web-based software project
> management. Our mission is to help developers write great software
> while staying out of the way. Trac should impose as little as possible
> on a team's established development process and policies."
>
The problem here is with the "minimalistic" approach. Does a
minimalistic approach really always "help developers to write great
software while staying out of the way"? Trac should indeed not impose
too much on a team's established development process and policies, but
it should help those teams to /improve/ their own process and policies.
As such, it has to offer efficient, rich and flexible ways to share and
work on the project-related information. And sometimes a minimalistic
approach can be at odds with this, if you have to fight your way in the
software instead of finding there the adequate support.
I must admit that I always thought that even if Trac's main strength was
in the integration of the base sub-systems (Wiki, BTS and VCS browser),
we should strive to make each of those sub-system a "best-of-breed" one.
Hence my tendency to expect the most of each of those sub-systems.
That's probably naive, sure, but well, this make things go forward ;-)
> That mantra does *not* mean Trac should not have ticket dependencies,
> or any other feature in particular. It just means that by default, we
> want to avoid ending up with a system that is too complex for people
> to use comfortably. And we certainly want to avoid imposing too much
> process on software projects.
>
Yes, exactly.
> A conflict in the long-term goals or the design approach is much
> harder to live with. At some point one side has to give in or give up.
> You say you've reached the point where you want to give up and take
> your ideas elsewhere.
>
> Seeing how much work and time you've poured into the project in the
> past years, that would certainly cause a very difficult time for Trac.
>
Well, I've not suddenly become "hostile" to Trac and even if we diverge
on some major design issues, that doesn't mean there aren't a lot of
areas where we can keep working together, even after a fork. A change of
name will probably make cross-project sharing of changes a bit more
inconvenient than a simple branching, but not by much. And whenever
possible, I intend to backport fixes (well, actually make them first in
Trac, then propagate those to the other project, in the same spirit we
now fix bugs first in 0.11-stable before porting them to trunk/0.12). So
in the end, I don't think my intention to do a "fast-forward" by taking
an alternate path will be detrimental to the project, and we could
eventually always merge later on, in parts or in whole, if that makes sense.
I need multiple project support, multiple relationships from tickets to
versions and milestones, and have milestones, versions and components as
first-class resources, etc. etc.
I need that /now/, not after some hypothetical 1.0 release, not after an
even more hypothetical time when we would reach an agreement on the design.
Wrong, I actually needed that 2 years ago. So I only hope I'll be able
to catch up the time lost.
> The developer community around the project is IMHO not in a
> particulary good shape, with the other "veterans" like Jonas and
> myself devoting less and less time to the project, and relatively few
> new people coming on board to fill the void. And developer
> communication could probably not get any worse than it is right now.
> Some of this is probably the result of a lack of a shared vision among
> the team and the resulting friction. Some of it may be due to the
> project growing beyond our ability to keep up. Etc.
>
Yes, I share that analysis, but I don't really see a way out,
unfortunately. I'll try to step out of the less technical discussions if
this can help, as I realize I'm not always the coolest tempered voice on
this mailing list.
-- 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
-~----------~----~----~----~------~----~------~--~---