TightBlog is a bottom-to-top rewrite of Apache Roller with much lesser-used functionality removed and new functionality added in (see below for details). Its goal is to satisfy the needs of 70-80% of bloggers while serving as a reliable starting point for other developers to fork and add additional customized features.
After contributing for about 2 1/2 years on Roller, I forked the codebase in May 2015 after I was unable to get team approval for simplifications I felt vital for the long-term growth of the project. As of 22 March 2020, Release 3.7.2 is available.
Screen shots for the TightBlog UI are here, the twelve-table database model is here, see also my blog for an example of a TightBlog-powered blog. TightBlog ships with three blog themes, for which bloggers may use directly, modify them per-blog, or create their own themes from scratch.
The table below shows the streamlining TightBlog has gone through in its first three releases since forking. Eliminating little-used functionality while switching to Gradle, Spring Boot, Spring REST API, Vue.js, etc. has made the code significantly easier to work with and a much more reliable starting point for forking and adding your own enhancements.
Product | Released | Database Tables | Java Source Files (non-test) | JSP Files | Lines Of Code (including tests) |
---|---|---|---|---|---|
Apache Roller 5.1.2 | 1 Mar 2015 | 33 | 493 | 96 | 95.7K |
TightBlog 1.0 | 17 July 2016 | 17 | 187 | 55 | 48.5K |
TightBlog 2.0 | 4 June 2017 | 14 | 151 | 37 | 43.7K |
TightBlog 3.0 | 23 June 2018 | 12 | 119 | 37 | 35.8K |
TightBlog 3.5 | 16 June 2019 | 12 | 122 | 38 | 32.5K |
Lines of code (LOC) above were based on OpenHub stats. The
droppage would be even more significant were it not for increased test code coverage.
CodeTabs provides a
real-time comparator allowing one to see how much
more streamlined TightBlog is over its predecessor:
(TightBlog)
(Roller) (allow each link a minute or so to return.)
Some changes and new functionality added to TightBlog post-fork:
To obtain the source code:
To build the application (build/libs/tightblog-x.y.z.war) with Gradle and Java 11+:
./gradlew clean build
from the TightBlog root.
Deployment information:
Be sure to first build the application as stated above. See Install pages for general installation instructions.
Deploy as a WAR on standalone Tomcat: covered in above installation instructions.
Deploy as a JAR using an in-memory database (non-production, demoing only). Modify the resources/application.properties to provide a Java keystore to support TightBlog's SSL (the file contains instructions for same.) Then run "gradle bootRun" from a command-line and TightBlog will be available at https://localhost:8443/tightblog. Note the in-memory database is deleted at each app shut-down.
Deploy as a Docker container. Modify the docker/web/application-tbcustom.properties to add your keystore configuration and then from the docker folder run "docker-compose build" followed by "docker-compose up". The application will be at https://localhost/tightblog. Note that while tested locally, I have not used the Docker setup in production so it is perhaps best considered of Beta quality.