Year overview 2016

Submitted by ehu on

Last year around this time I wrote an overview of the community activity for 2015 looked forward to 2016. Now the time has come to look back on that outlook and look forward on 2017!

== Community interest ==

This year, the team added a Matrix channel to the well known Freenode IRC channel, bridging traffic both ways. The benefit of Matrix is that - once registered - a user can retrieve the full backlog of channel traffic, contrary to IRC.
Through the Matrix functionality, the #ledgersmb IRC/Matrix channel is now seeing active contributors around the clock nearly every day. The channel is highly active with both developers and users frequenting the channel for discussion or looking for help. David Godfrey, Yves Lavoie, Jigme Datse: thanks for your contributions there!
Yet the traditional medium of mailing lists takes its share in community communication, with over 300 mails on the users list and almost 800 on the developers list in 2016. 
Although the downloads from Sourceforge are up when compared to 2015, by ca 10%, traffic from has dropped by 10% when compared to 2015.
During 2016, we were able to get contributions from 4 new contributors - next to the project regulars - with two (David Godfrey and Yves Lavoie) already having been accepted as "regulars" in the project and have taken on the role of "Project Guardian" by accepting a position in the project's "Core committee". As such, we were able to do a *lot* better than last year, where we were able to find 1 new contributor.

== Releases ==

On the brink of 2017, the project succeeded to push out the start of a new maintenance release series: 1.5.0. Even though plans had formed in 2015 already to release 1.5.0, the project contributors didn't accept anything but a great release. And so it has become!
The project worked closely together to make sure this is the best 1.x.0 release so far; this release has:
 * Better automated testing than any release before (25% code coverage; with only 11% for 1.4)
 * More manual testing than the 1.3 or 1.4 releases -- tests of real-world use-cases
 * Better documentation at .0 release, with all of quickstart guide, detailed installation instructions and upgrade instructions in place before release
Not to mention all the technical and user experience focussed improvements!
Other than this major milestone, there were
 * 15 releases for 1.4 (1.4.22 through 1.4.36)
 * 4 pre-releases (1.5.0-beta5, 1.5.0-rc1 through rc3)
With 20 releases, 2016 surpasses the success of 2015 of 16 releases.

== Packaging and installation ==

Many of our releases have been packaged for the Debian Stretch release and Debian's Jessie Backports. Jame (Robert James Clay) has contributed further work on Debian packaging to allow users to plan minor version migration -- similarly to PostgreSQL which has postgresql-9.4 and postgresql-9.5 packages. We're expecting ledgersmb-1.4 and ledgersmb-1.5 packages show up in Debian's repositories, allowing backports for 1.4.x and 1.5.x to happen independently.
In 2016, the LedgerSMB 1.5 docker images were moved from "EXPERIMENTAL" to production status. John Locke was able to remove the experimental status due to the fact that printed document templates have now fully moved to the database for document storage.

== Development progress ==

The project has been marked as "Very High Activity" project all year on OpenHUB meaning we have been among the 0.3 to 0.4% most active projects! It's great to see we have been able to maintain this high level of activity that was started in the third quarter of 2015.
Taking into account that GitHub has been configured to scan only the master branch, we can conclude that actual activity is much higher as we have the following additional branches being maintained:
 * 1.4
 * 1.4-mc
 * 1.5 (as of the branch point sometime during summer)
 * 1.5-mc (same)
 * master-mc
During 2015, 358 pull requests were created on the main LedgerSMB repository. During 2016, that number more than doubled with over 780 pull requests. Issues show a similar trend.

Even though development activity on the project's main repository has been maintained at very high levels, project contributors have found time to factor out tools to be used for the wider Perl community (or re-use efforts of others in our project):
 * Chris Travers further expanded on the development of the PGObject toolchain, factoring common code patterns out of LedgerSMB into a separate library

 * Erik Huelsmann worked with the Pherkin (Test::BDD::Cucumber) project (Peter Sergeant) to extend it with a plugin framework, for use with the LedgerSMB project

 * Erik Huelsmann founded the Weasel project to build a web application testing framework like PHP's Mink
 * Yves Lavoie found the excellent pgTAP framework for better integration of our SQL tests into perl's "prove" testing utility
 * Yves Lavoie reworked many of our tests to become suitable for parallelization driven by "prove"

== New functionality and improvements ==

2016 and Yves Lavoie brought us a tremendously improved migration from SQL Ledger 3.0. A major step forward for anybody wanting to transition to a recent version of LedgerSMB.
Yves also rewrote the framework for testing functionality in the database (stored procedures) from our custom testing routines to pgTAP, a framework for integration with Perl's 'prove' testing utility.
The developers reached out to other projects to report bugs, contribute fixes or even build completely new infrastructure in other projects for functionalities our project needs: Erik Huelsmann reached out to Test::Dependencies (and adopted it) and started the Weasel project for web application testing. Peter Sergeant from the Test::BDD::Cucumber project implemented the concept of extensions, for LedgerSMB to hook into and has further improvements in progress for integration in 'prove'.
A number of BDD tests were implemented, more than doubling the amount of code executed during our test cycle, with further work pending.

== Looking forward to 2017 ==

For 2017, we hope and expect to keep up the current speed of development: now that more and more tests are in place, changing the code base becomes easier each step on the way.
Additionally, the development team discussed the best way forward with respect to backporting new features. We settled on backporting fixes as much as possible, but backporting only those changes which do not jeopardize the stability of the stable branch. Any features which do not satisfy those criteria, will go into 1.6 - which may be released early, if these features are compelling enough.
With fewer regressions to fix, we expect to spend more time on the UI -- there are numerous areas where we want to improve the UX (User eXperience).
As for new contributors: we hope to find a _javascript_ developer/user interface developer to help out on the client side of things, now that more and more functionality is at least partially depending on it.
Let me finish by expressing that we'll find a fitting task for everybody who wants to join our efforts! Be it in development, testing, translating, documenting or helping others!