Abstract
Freemarker is a "template engine", i.e. a generic tool to generate text output based on templates. Freemarker is implemented in Java as a class library for programmers.
Freemarker is a mature, widely used template engine. We propose to make Freemarker a top level project of the Apache Software Foundation, primarily so that it can build a stronger developer community, which provides more safety, stability and support to the large user base, and also helps evolving the engine and its integration with other projects (many of which are Apache projects).
Proposal
Freemarker is a "template engine"; a generic tool that generates text output (HTML web pages, e-mails, configuration files, source code, etc.) based on templates and changing data. It's not an application for end-users in itself, but a Java library, a component that programmers can embed into their products.
Freemarker was originally created for generating HTML Web pages, particularly in servlet-based applications following the MVC pattern. It’s not bound to servlets or HTML, however.
The Freemarker Template Language (FTL) is not a full-blown programming language like PHP. It’s a simple, specialized language (although among template languages it’s quite flexible). You meant to prepare the data to display in a real programming language, like issue database queries and do business calculations, and then the template displays that already prepared data.
Freemarker 1.x was initially released under the LGPL license. Later, by community consensus, we have switched over to a BSD-style license. As of Freemarker 2.2pre1 (2003), the original author, Benjamin Geer, has relinquished the copyright in behalf of Visigoth Software Society, a nonprofit organization started by Jonathan Revusky. With Freemarker 2.3.21 (2014) the license has changed to Apache License, Version 2.0, and the owner has changed from Visigoth Software Society to three of the Freemarker 2.x developers, Attila Szegedi, Daniel Dekany, and Jonathan Revusky. Apache License, Version 2.0, is the current license.
Freemarker is a mature, widely used template engine. While it continues to have a large user base, the active developer community has become rather small at this point, and we think that the "Apache Way" governance model and being part of the ASF (together with other projects that are already using Freemarker) would help to bring new life and energy to the project to better support the maintenance and improvements of the Freemarker codebase. A larger community may also help to improve tooling (such as IDE plugins) and integration with popular frameworks (such as Spring MVC, Struts, etc.), which could foster the adoption of Freemarker. Last but not least, being under the Apache umbrella would put the project into a more trustworthy legal context, which also helps adoption, particularly among bigger corporate users.
We believe that Freemarker should become a Top Level Project as opposed to a subproject because it has a long history and already a large feature set, codebase and documentation and there is a lot of room for innovation and improvement that would involve more community management; governance and autonomy to make its own direction and manage its own community may be important long term factors for the success of the project.
Background
A template engine is a template language with the basic infrastructure around it (configuring, caching, etc.). A template language is a language specialized on generating text based on changing data. Template languages like Freemarker Template Language are by design much simpler than general purpose languages, while providing convenient specialized language devices for tasks that are frequent during text generation.
Template engines, like Freemarker, play an important role in applications that leverage the MVC (Model View Controller) pattern; for example, several web applications and web application framework implement the MVC pattern in the user interface layer: the appearance of a page can be changed without programmers having to change or recompile code, because the application logic (for example a Java program or a Groovy script) and page design (for example a Freemarker template) are separated. Freemarker is used to implement the View (V) component of the MVC pattern.
Freemarker is also used for generating e-mail, configuration files, and pretty much anything that’s text. The same governing MVC principles apply there too, which helps to split the problem to more manageable pieces.
Rationale
Freemarker is a mature, stable, proven and feature rich template engine.
While there are multiple alternative template engines for Java, after more than 15 years of life, Freemarker is still one of the most featureful and most widely used product in the category of templating engines for the Java platform. Despite its age, Freemarker still has potential to improve its functionality without breaking out-of-the-box backward compatibility, like fixing historical design mishaps, adopting proven ideas from template languages of other platforms, or to innovate with novel solutions to common templating problems.
Freemarker is integrated in several proprietary and open source products such as Apache Struts, Apache OFBiz, Apache Camel, Liferay, Alfresco, Magnolia, and new open source frameworks such as Moqui. Some popular IDEs, including IntelliJ and Eclipse, have plugins for the development of Freemarker templates.
With Freemarker joining the ASF, we hope that more developers would be able to join the effort and help improve and maintain the codebase, build new features and tools that could foster the long-term future of the product.
Current Status
Freemarker is a mature product created and maintained by a small open source community for more than 15 years.
Currently Freemarker provides a fully functional implementation licensed under ALv2. The project home is at http://freemarker.org/ and the majority of development is coordinated via Sourceforge (https://sourceforge.net/projects/freemarker/) and GitHub (https://github.com/freemarker/freemarker).
The project sports detailed documentation and a big ecosystem of projects leveraging it. In fact, quite a few existing ASF project have various integrations with Freemarker (OFBiz, Struts, Camel etc.).
Meritocracy
Freemarker has been run by a few core project members with a few contributions coming from a wide community of participants in the project. In the past, core project members have emerged because of their activity and merits as contributors. The Freemarker community is open to new ideas and to revisit old ones.
The committers and contributors that were actively involved in the project will be encouraged to join the new incubating community.
We want to expand our developer and user community and run the Freemarker project in the "Apache Way" clearly signaling not only the licensing, but also the governance choice.
Users and new contributors will be treated with respect and welcomed; they will earn merit in the project by providing quality patches and support that move the project forward. Those with a proven support and quality patch track record will be encouraged to become committers. Committers that will work for the growth and health of the community will be invited to become PMC members.
Community
There are currently just a few active core team members in the project and a small group of occasional contributors. The user base is quite large and composed by end users (developers using Freemarker for their job) and other open source projects.
Core Developers
Core developers are used to work in the openly governed communities. The core developers are not currently affiliated with the ASF.
Alignment
The Freemarker product is already licensed under ALv2 and has been created and maintained by an open source community for more than a decade. Freemarker has been integrated into Apache OFBiz, Apache Struts, Apache Camel, Apache Tiles and other projects. Becoming part of the ASF family can strengthen the collaboration with these and other projects.
Known Risks
While the Freemarker product is stable and very widely used, in the recent years the active core developer community practically has shrunk to one person (Daniel Dekany). The core group should grow by attracting new contributors in order to ensure continued maintenance in the future, and to win resources that helps Freemarker to evolve faster next to the maintenance burden.
In fact, if Freemarker will be accepted in the Incubator, the main goal during the incubation phase will be attracting new contributors and growing the community with an "Apache Way" governance model.
Orphaned products
The Freemarker project is backed up by an open source community that has created and maintained the product for more than 15 years.
Inexperience with Open Source
The proposers are experienced open source developers. Freemarker to date has been developed as an open source project.
Homogeneous Developers
The Freemarker community is not backed up by any corporation and is diverse in terms of geography and backgrounds of developers.
Reliance on Salaried Developers
The Freemarker contributors are volunteers that are not paid for their contributions to the project.
Relationships with Other Apache Products
Freemarker is an independent product but there are some relationships with other Apache products. Freemarker currently uses some Apache products, mostly in its build process (for example Apache Ant, Apache Ivy, Apache Xalan). Freemarker has been integrated into other Apache products such as Apache OFBiz, Apache Struts, Apache Camel, Apache Tiles. Becoming part of the ASF family could strengthen the collaboration with these and other projects. Apache Velocity is similar in purpose to Freemarker and both address similar needs for a template language in text generating applications. However Freemarker and Apache Velocity have a very different philosophy, design and implementation and there is a sufficient user base and history for both projects to justify their independent existence.
An Excessive Fascination with the Apache Brand
While we intend to leverage the Apache ‘branding’ when talking to other projects as testament of our project’s ‘neutrality’, we have no plans for making use of Apache brand in press releases nor posting billboards advertising acceptance of Freemarker into Apache Incubator.
Documentation
A mature project website is available at freemarker.org. In the website a complete manual is available: http://freemarker.org/docs/index.html
Initial Source
Initial source is available on GitHub under the ALv2:
- https://github.com/freemarker/freemarker: The template engine itself
- https://github.com/freemarker/site: Generates the freemarker.org Web site
- https://github.com/freemarker/docgen: Transforms an XDocBook subset to HTML; used for the Freemarker Manual. (Also for the Web site in the future.)
Source and Intellectual Property Submission Plan
We know of no legal encumberments in the way of transfer of source to Apache. The copyright holders are the three main contributors in the history of the project, of which one is the current maintainer and main actor in this incubation process. The other two have been contacted to sign the Software License Agreement.
External Dependencies
The dependencies all have Apache compatible licenses.
Required Resources
Mailing lists
- private@freemarker.incubator.apache.org (moderated subscriptions)
- dev@freemarker.incubator.apache.org
- notifications@freemarker.incubator.apache.org (commits, CI reports)
Git Repository
- https://git-wip-us.apache.org/repos/asf/incubator-freemarker.git: the template engine itself
- https://git-wip-us.apache.org/repos/asf/incubator-freemarker-site.git: generates the freemarker.org Web site
- https://git-wip-us.apache.org/repos/asf/incubator-freemarker-docgen.git: transforms an XDocBook subset to HTML; used for the Freemarker Manual (also for the Web site in the future).
Issue Tracking
JIRA Freemarker (FREEMARKER)
Initial Committers
- Dániel Dékány, ddekany at freemail.hu
- Evangelia Dendramis, evangeliad at gmail.com
Affiliations
- Independent: Dániel Dékány
- Independent: Evangelia Dendramis
Sponsors
Champion
Jacopo Cappellato
Nominated Mentors
- David E. Jones - Apache Member
- Jacopo Cappellato - Apache Member
- Jean-Frederic Clere - Incubator PMC
- Ralph Goers - Incubator PMC
- Sergio Fernández - Incubator PMC
Sponsoring Entity
We would like to propose Apache Incubator to sponsor this project.