Contributors wanted!

As it's the case with many opens 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?

First you should subsrcribe to the developer mailing list to discuss what you plan to do.

Then, fork the project on Github, and start working on the appropriate branch (see the repositories and branches here). See the README file in it for more information about building and IDE setup. When your contribution is ready, send a pull request on Github. Then we can still iterate over it until it becomes good enough for merging.

Note that you will need an Individual Contributor License Agreement (ICLA) or Corporate CLA at the Apache Software Foundation, or else we can't merge in your contribution.

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 know 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)

  • 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.