On Thursday, February 4, 2016 at 5:14:52 PM UTC-8, cboos wrote:
>
> Hello,
>
> Inspired by some recent discussion seen on Trac-Users ("Genshi
> question"), I decided to revisit this old topic and the last 2 weeks I
> tried to get a feel of what it would take to migrate our template engine
> from Genshi to Jinja2.
>
> The results are very encouraging, as we can expect a 5x to 10x speedup.
> I posted some numbers there:
>
> http://trac.edgewall.org/wiki/TracDev/Proposals/Jinja
>
> But the gain in speed and memory usage is only one thing (though a major
> one), other aspects are important as well, like the ease of developing
> the templates, the support for all the features we got used to (i18n in
> particular). Without getting yet in the details, my initial experience
> also makes me very optimistic for these points.
>
> I've pushed the current rough state of my experiment in the jinja2
> branch on t.e.o. It's nowhere near finished, but I hope it's in a state
> which can be interesting for others to play with or simply look at, to
> make up their mind.
>
> I started by migrating an "easy" template, the search page, then
> followed with the report view (#11185 in mind) and then with the browser
> and the changeset views. Oh yes, I actually started with Kajiki, not
> Jinja2, While the speed of the former was more than adequate (seems to
> beat Jinja2 by a narrow margin), it's nowhere near as mature as Jinja2
> is, and the error reporting is very lacking. This, plus other glitches
> (see the commit messages for 7acf61b and 7d4b6f8), and the fact that
> despite the surface similarity with Genshi you needed to adopt the
> Jinja2 approach anyway (extends and blocks), meant that it was worth
> going with the real thing.
>
> And I actually like going away from an all-XML template markup, the
> templates are much more readable this way, I think, at least with the
> Jinja2 notation I picked: use line statements for the most part and
> block statements only exceptionally. I also kept the familiar ${}
> notation for the embedded expressions.
>
> To somewhat compensate for the loss of the well-formedness guarantee
> that Genshi provided for the template and the generated content, I
> developed a little tool (contrib/jinjachecker.py) that will separate the
> Jinja2 markup from the HTML content, and verify both separately (proper
> nesting for the Jinja2 control structures, validation of the HTML using
> lxml).
>
> As for the next steps, besides starting to get feedback, document the
> migration process and advocate that move, I'll continue with a few more
> modules to be sure that all the remaining aspects get covered (the form
> token handling, the late scripts and such little details). Ideally, I
> hope that this could be the big thing for 1.3dev with in sight an
> all-Jinja2 Trac 1.4 ;-)
>
> Feedback welcomed!
>
> -- Christian
>
Hi Christian,
The results look very encouraging. I like the move to a more popular
templating library, which I hope will help at least a little in attracting
new contributors.
Once I finish up a few more tasks I plan to spend some time studying your
code, and will try converting a template or two. If I can manage that, then
the tasks should be more than doable for everyone else involved ;)
I gather from your comment in #11988 that adopting a better functional
testing framework might happen concurrently. It seems like a good idea to
put some regression tests in place as we port the templates.
- Ryan
--
You received this message because you are subscribed to the Google Groups "Trac
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/trac-dev.
For more options, visit https://groups.google.com/d/optout.