Contributors wanted!

As it's the case with many open source projects, FreeMarker doesn't have and never had a payed staff, nor a backing corporate entity who finances it otherwise. It's ran by volunteers since it started in 1999. So we are always looking for people to help FreeMarker to advance!

How do I contribute?

Contributions are preferably done with pull requests on GitHub. Be sure that you are working on the correct branch! See the repositories and branches here!

Note that by sending a pull request you grant the Apache Software Foundation sufficient rights to use and release the submitted work under the Apache license. You grant the same rights (copyright license, patent license, etc.) to the Apache Software Foundation as if you have signed a Contributor License Agreement. For contributions that are judged to be non-trivial, you will be asked to actually signing a Contributor License Agreement.

For substantial new features or deeper changes, first you should subscribe to the developer mailing list to discuss your plans.

See the README file in the project root for more information about building and IDE setup.

For more generic guidelines, see how to contribute to Apache projects.

What should I contribute?

Usually, contributors come because they want to fix/improve a certain thing. But if you just want to help in general, here are some topics that are not (that) hard to jump into and are considered to be important:

  • Improve tooling:

    • Eclipse plugin. Either help improving the JBoss Tools "FreeMarker IDE" (see open issues), or if you have serious ambitions, even start your own!

    • IntelliJ plugin. Check how well it works (like support for recent FreeMarker features), try to find a way to contribute where needed.

    • Plugin or syntax highlighter for you favorite editor (Notepad++, jEdit, VIM, etc.) that actually covers FTL reasonably well, and is legally properly contributed to the project.

    • Online editor, syntax highlighter. This might means FreeMarker support for CodeMirror. This, among others, would be useful in the online template tester.

  • Improve framework integration:

    • FreeMarker Spring MVC integration. Someone who knows both well should keep an eye on this, improving it where necessary.

    • FreeMarker Struts integration. Same as with Spring MVC.

  • Android support. This is related to the next two points too

  • Bean introspection without javax.bean.Introspector (or in additionally to it). FreeMarker relies on this class for maximum conformance to the JavaBeans specs., however, its limitations start to hurt too much: It doesn't work on Android, it doesn't support Java 8 default methods, and it's not lenient enough in many cases (Boolean isXxx doesn't work, xFoo is not a possible property name of getXFoo, etc.), it doesn't work with static methods (BeansWrapper.staticModels).

  • Support for Java 8 date/time API-s (this is actually certainly a difficult one). Note that there's a 3rd party solution for this, https://github.com/amedia/freemarker-java-8, but it's not as seamless as a native solution could be.

  • javax.script (JSR-223) support

  • Write TemplateLoader that loads from database (DataSource)

  • Migrate build from Ant to Gradle. Or for Docgen an Site, Maven is certainly a good fit.

  • Performance tests, to spot performance regressions.

Continuous activities that are always welcome:

  • Spotting mistakes in commits; more eyes see more

  • Trying to break new features before they are released (finding bugs)

  • Improve JUnit coverage where it's due

  • Fixing typos in the documentation (includes JavaDoc!)

  • Help users. This mostly means monitoring FreeMarker related questions on Stack Overflow.

  • Pick a bug from the bug tracker, and squash it.

  • Recommend using FreeMarker to others when there's a fitting task

Last but not least, FreeMarker needs long standing/returning contributors who tackle deeper issues.