Glen Mazza's Weblog

Main | Next page » Wednesday August 31, 2016

TightBlog: August 2016 update

I'm back to work, my summer sabbatical is now complete, so I won't have nearly as much time to spend on TightBlog. The release of TightBlog 1.0 was a mission accomplished for me (similar to my prior time off, which I spent releasing Roller 5.1.) I did get a few simplifications in this month though, removing four more Java source files and 2 JSPs.

I advertised the release of TightBlog 1.0 on the Apache Roller users mailing list and got some more traffic from Roller users who did not yet know of my fork.

I said last month that "talk is cheap" and refrained from mentioning what I'd like to get done. But cheap talk is sometimes still useful: For TightBlog 2.0, I'd like to finish up the REST API for the application, a few more screens still rely on server-side screen generation. Once done, so little Struts code will be remaining that I plan on pulling out the Struts library and replacing it with Struts MVC, whose libraries are already being used for the REST controllers. I hope to get a tag management page in for deleting, renaming, and adding tags. Thymeleaf in addition to or replacing Velocity for the blog templates may also be a good idea. I might remove the Planet functionality as it was seldom used in Roller and the effort spent maintaining it can perhaps better be spent enhancing the rest. Finally, a package renaming and restructuring, replacing the legacy org.apache.roller.* naming with a new org.tightblog.* or similar.

(I still need to convert *this* blog to TightBlog--awaiting the new OpenShift PAAS update before doing so, but maybe I'll switch to Digital Ocean instead...) Sunday July 31, 2016

TightBlog: July 2016 Update

I started a new TightBlog 2.0 branch, with more modernizations and new functionality planned for it. I'd like to list what I have planned, but talk is cheap--let me code and as I am able to complete new features I'll announce them. Just yesterday, for example, I switched to Thymeleaf for email messaging in the 2.0 branch with help from Jose Miguel Samper's article and Daniel Fernandez' sample application. I'm very happy with the results (no more placing HTML tags within Java strings) and expect to see Thymeleaf playing a role in more areas of the application. (A minor retirement, as well--I removed the "all blog" planet as it duplicates the front page theme and can anyway be manually created if desired.)

GitHub is reporting that I'm getting a few more people cloning my work since I announced its release, encouraging to see. TightBlog 1.0 was primarily about getting rid of yesterday's lard (and there was a mountain of it.) While there are still several classes that need refactoring or removal, its foundation is much more solid today, a good base for TightBlog 2.0 to build on. Sunday July 17, 2016

First release - TightBlog v1.0.0 available!

I've found a good point to make my first TightBlog release, and so here it is. I held off on uploading a Java WAR file as TightBlog is primarily for Java enthusiasts who are well acquainted with the concept of mvn clean install and would presumably rely on that instead of any WAR I provided. After the dependencies (Spring, Struts, etc.) are downloaded, TightBlog takes less than a minute to build, and running mvn jetty:run from the app folder afterwards will allow you to quickly demo the application at http://localhost:8080/tightblog.

Some editing enhancements put in over the past week:

  • I pulled out the Xinha rich text editor, last updated in 2010, with the new Quill Editor which I'm downloading to the application via CDN.
  • I added Markdown (specifically CommonMark) as an editing option, giving bloggers now three options (including standard HTML entry) for their blogging pleasure.
  • JSoup was brought in to replace a 2009 script to filter out HTML tags disallowed by the TightBlog admin. Admins are provided six HTML sanitizing options for blog entries (including one option allowing everything), and three for blog comments.

These benefits are in addition to the "Notes" field on the blog edit page (to store metadata about the blog entry) I had added a while back.

Stats: 19 fewer Java source files, dropping me to 187, 62% fewer than the original 493 in the Roller release I forked. 209 issues closed, with eight open for the next release. 85K lines removed, with the removal of Xinha accounting for 15K of that. The GitHub contributors page and the OpenHub stats are indicating that, all told, I managed to drop the code about a third in size, even if I somehow sense I managed more than that. Tuesday July 05, 2016

New user administration functionality in TightBlog

Over the past few days I've added some user administration options to upcoming TightBlog:

  1. Administrators can now require all new account registrants to be approved before they are able to log in. Upon a new registration, TightBlog administrators will be sent emails to either approve or decline the account request, with a subsequent response email sent to the registrant informing them that they can now log in or that their request has been disapproved.

    This option automatically activates email verification--after registration but before the approval routing the registrant will be sent an email to click on to verify ownership of the email account. This provides administrators higher confidence that the person requesting an account with the stated email address is indeed the email address' owner.

  2. Access rights within TightBlog are of two types: Global roles (one per user) and Weblog-specific roles (one for each blog a user has write access to). The former primarily specify whether a user is a regular blogger or a blog server administrator, the latter define the rights a user has for a given weblog: can make drafts but not publish (Contributor), can publish and handle comments and some design configuration (Publisher), or has full ownership of the blog (Owner)--can change the design templates, invite new members, etc.

    I added an additional Blog Creator global role to the Blogger and Admin roles already existing. Admin remains the same while Blog Creator has the former meaning of Blogger. The lone difference between Blogger and Blog Creator is that the latter can create new blogs while the former would need to have someone first invite them to a blog with whichever weblog role the inviter desires. This new option is helpful for administrators who have Contributors or Publishers whom they don't see a need to grant create blog rights, or for blog owners they wish to limit to one, already created, weblog.

    The system administration page allows administrators to choose Blogger or Blog Creator as the default role for new blog registrants, a setting which can be subsequently overridden by an administrator on the User Administration page.

  3. The User Administration page now shows account create date and last logged-in date to help administrators determine dormant accounts that should perhaps be disabled. Friday June 24, 2016

TightBlog: June 2016 Update

Continued work on the TightBlog front-end. While TightBlog is not a single-page app, AngularJS is nonetheless playing more and more of a role on the front end for its two-way binding. Backend, I've updated to Java 8 time as well as upgraded to Struts 2.5. About 60% of the UI is now REST-based. I'm expecting "soonish" to make an testing release that I can place my own blog on while continuing to do front-end enhancements. In particular, I'd like to get the comment management screen more streamlined.

Stats: Eight fewer Java source files, moving me down to 206, 58% less than Roller 5.1.2. 52 JSPs vs. 92 in Roller, but 10-20 more JavaScript files on my side. The simplifications altogether have resulted in about 66.8K lines of source code removed. I'm increasingly running into brick walls in trying to simplify the application further, a good sign that my refactoring work is coming to a close. Nine issues open, with 197 closed. Tuesday May 24, 2016

TightBlog: May 2016 Update

Heavily working on the front-end, moving TightBlog from a server-side rendering with Struts2 & JSPs to a REST-ful architecture. The Spring Framework is doing wonders in allowing me to easily switch to REST API calls, code is nicely melting away in the process. I've mostly finished updating the server admin screens using JQuery and JSRender/JSViews. I'm trying to find a good point right now where I can do a release, deploy my own blog on it, and then continue on with enhancements & refactoring.

Stats: Due to more code auditing and analysis, the issues have jumped up to 20 open vs 177 closed, but most do not need to be done for a first release. Seventeen more Java source files have been removed (actually 20 removed and 3 new ones), dropping me to 214 total. GitHub is reporting I've removed more than 62,000 lines from the project; the OpenHub chart, which sizes the project differently, has noted the project has fallen from about 139K lines of code to 87K since I forked Apache Roller last May. As perhaps a sign of TightBlog's increased modernization, OpenHub is noting the code is 18.9% JavaScript compared to 11% for Roller. Saturday April 23, 2016

TightBlog: April 2016 Update

A satisfyingly productive month. In particular, the blog page rendering system as well as the default blog templates supplied with TightBlog were cleaned out and nicely simplified. At this time, the application is more or less usable as-is, however, I'll be rechecking the data model as well as making an additional pass through the source files to see if I've missed anything.

Stats: Sixteen more Java source files removed, dropping TightBlog to 231 total. From my commit totals, over 55,000 lines removed from the project through 248 non-merge commits. Seven issues open and 157 closed. Wednesday March 30, 2016

TightBlog: March 2016 Update

Did not get as much done the past month due to work constraints, main gain was in upgrading from Log4j to Log4j2. Right now I'm revamping the template customization functionality, once done I have a modest amount of other UI improvements to put in for the first release. Twelve issues open, 140 closed, 5 more Java source files gone (247 for TightBlog vs. 493 for Roller), and inching towards 50,000 lines (49.2K) removed. Wednesday February 24, 2016

TightBlog: February 2016 Update

Still actively working on TightBlog, but due to time constraints could not work much on the project the first couple of weeks of this period. Mainly internal refactoring, including work on simplifying and consolidating the Pager classes that are used to scroll through lists of blog entries, users, comments, weblogs, etc. I also simplified the former to mostly just the common fields that people normally customize (file is now about two-thirds smaller, compare TightBlog's to Roller's). For the many potentially useful but seldom overridden configuration settings, those can now be modified via a Spring XML configuration file placed in the same folder as the user's file. For the rarely overridden settings, using Spring configuration over a property file nicely simplifies the internal code while not placing much of an additional burden on the relative few who will need to override those settings.

Metrics: 14 issues still open, 138 closed, 199 non-merge (i.e, "real") commits with roughly 47,000 more lines removed than added (as shown on the GitHub Contributors tab), and eight more Java source files removed, dropping TightBlog to 252 total. Sunday January 24, 2016

TightBlog: January 2016 Update

Still plugging along, with particular gains in the Spring configuration, page caching, and blog model used by the Velocity rendering. One functional improvement was to pull out the Google Analytics tracker code on blog author previews so they won't show up on GA stats pages. The GitHub Issues List notes 16 issues open and 133 closed. Of the Java source files, 16 more have been removed, dropping TightBlog to 260 classes compared to the 493 in Apache Roller I forked it from. The contributors page notes almost 46,000 lines have been removed from the codebase through 188 commits.

Valid HTML! Valid CSS!

This is a personal weblog, I do not speak for my employer.