> I never knew there was an "original" freemarker project.

See https://freemarker.apache.org/history.html


On Thu, Nov 9, 2023 at 9:00 PM Benjamin Marwell <bmarw...@apache.org> wrote:

> I never knew there was an "original" freemarker project.
> Your web site is down, the documentation on the GitHub project is sparse.
> There is no way to tell whether it really is more advanced or not.
>
> It can never be on Maven central, because the namespace (groupid)
> "freemarker" is already claimed by Apache Freemarker.
>
> - Ben
>
> Am Do., 9. Nov. 2023 um 18:40 Uhr schrieb Taher Alkhateeb
> <ta...@pythys.com.invalid>:
> >
> >
> > I'm a little confused. Why aren't we joining efforts on the apache
> version? Why make it "a pity if a wider group of
> > people never get the benefit of this work"? Am I missing something too
> obvious or too old or something? Is this code base completely incompatible?
> Is this a technical issue?
> >
> > Taher Alkhateeb
> >
> > On Wednesday, November 08, 2023 04:03 +03, Jonathan Revusky <
> revu...@gmail.com> wrote:
> >  Greetings,
> >
> > I thought to let people know that there is a vastly more advanced version
> > of FreeMarker available here: https://github.com/freemarker/freemarker3
> >
> > You can build it via:
> >
> > git clone https://github.com/freemarker/freemarker3.git
> > cd freemarker3
> > ant
> >
> > Or, if you want, there is a prebuilt jarfile you can grab here:
> > https://parsers.org/download/freemarker.jar
> >
> > Though it is actually a rather superficial new feature, I think that one
> > thing that people will enjoy is the new terser syntax. Basically, if a
> > directive starts a line (aside from whitespace) there is no need for any
> > pointy (or square) brackets. So you can just write:
> >
> > #if foo == bar
> > blah blah
> > /#if
> >
> > You can look here for a more complete description:
> > https://github.com/freemarker/freemarker3/wiki/Terse-Syntax and here is
> an
> > example of a template from the old test suite rewritten using the terser
> > syntax:
> >
> https://github.com/freemarker/freemarker3/blob/master/src/freemarker/testcase/template/test-switch.html
> >
> > In this version of FreeMarker, the #assign and #local directives (though
> > they still work in a backward-compatible mode) were replaced with the
> newer
> > #var and #set. This is (IMHO) a significant improvement and is described
> > here: https://github.com/freemarker/freemarker3/wiki/Strict-Vars
> >
> > Just generally speaking though, the biggest changes are really under the
> > hood and would not be so visible to the casual user. This FreeMarker
> > codebase has been refactored so that it largely does away with all of
> those
> > TemplateXXXModel wrappers and mostly just directly uses POJOs. (Plain Old
> > Java Objects.) This is described here:
> > https://github.com/freemarker/freemarker3/wiki/Under-the-Hood
> >
> > Various longstanding annoyances, like not being able to directly use a
> map
> > with non-string keys, have been addressed.
> >
> > Oh, it suddenly occurs to me that many (perhaps most) people on this
> > mailing list do not know who I am. I am effectively the original author
> of
> > FreeMarker. I say "effectively" because there was a FreeMarker 1.x, which
> > was really little more than a weekend hack. The version that 99% of
> > FreeMarker users have used, which is 2.x, was a complete rewrite and is
> > largely my work.
> >
> > As for other questions about what is going on with this, for example,
> why I
> > have put some renewed effort into FreeMarker after all years... well, my
> > main open source efforts have been going into my rewrite of that old
> JavaCC
> > parser generator that FreeMarker 2.x was originally built with. The new
> > version of JavaCC was originally called FreeCC, then when I resuscitated
> it
> > a few years ago, I called it JavaCC 21, but it is now rebranded as
> CongoCC.
> > So, since FreeMarker is a key part of CongoCC, I found myself adding the
> > occasional new feature to FreeMarker (my own version, not Apache
> > FreeMarker). For example, the feature described here
> > https://github.com/freemarker/freemarker3/wiki/Macros-as-Functions was
> > added to support CongoCC development back in 2020, but probably a lot of
> > FreeMarker users would appreciate this.
> >
> > So, at some point, I did rework FreeMarker to use CongoCC instead of the
> > legacy JavaCC. CongoCC is a much, much more powerful parser generator
> than
> > the original JavaCC, so it makes FreeMarker development comparatively a
> > breeze. For example, I quite recently implemented assertions in
> FreeMarker
> > and this is where it is implemented:
> >
> https://github.com/freemarker/freemarker3/blob/master/src/parser/Directives.inc.ccc#L417-L445
> >
> > Or here is where ternary expressions are implemented:
> >
> https://github.com/freemarker/freemarker3/blob/master/src/parser/Expressions.inc.ccc#L98-L118
> > You really should compare the FreeMarker grammar expressed with CongoCC
> to
> > the one that was written with legacy JavaCC, that is here:
> > https://github.com/apache/freemarker/blob/2.3-gae/src/main/javacc/FTL.jj
> >
> > So I rewrote FreeMarker (it is largely a rewrite at this point) to: (a)
> > have a better tool for CongoCC development and (b) to provide a showcase
> > for CongoCC's capabilities.
> >
> > As for my plans, well, I do think it would be a pity if a wider group of
> > people never get the benefit of this work. Whether I intend to call this
> > version of FreeMarker "FreeMarker 3" or rename it to "Congo Templates", I
> > still haven't decided about that. I really only put some serious effort
> > into the FreeMarker codebase starting this summer and the work kind of
> took
> > on a life of its own.
> >
> > In any case, anybody who is interested in getting involved, by all means.
> > Maybe start a discussion here:
> > https://github.com/freemarker/freemarker3/discussions
> >
> > Best Regards and Greetings from Spain,
> >
> > Jonathan Revusky
>


-- 
Best regards,
Daniel Dekany

Reply via email to