ast 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[1] 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
ledgersmb.org 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 [2] 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 [3],
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 [4] 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!
[1]
https://vector.im/beta/#/room/#ledgersmb:matrix.org[2]
https://www.openhub.net/p/ledger-smb[3]
https://github.com/ledgersmb/PGObject [4]
https://github.com/perl-weasel/weasel--
Bye,
Erik.
Robust and Flexible. No vendor lock-in.