Flapjack v2.0.0b1 released

126 views
Skip to first unread message

Ali Graham

unread,
Dec 10, 2015, 5:52:12 PM12/10/15
to flapjack

Hello!

I've recently tagged Flapjack v2.0.0b1 (and flapjack-diner 2.0.0b1) and pushed the relevant gems as well.

What's changed?
---------------

  * No more Eventmachine (now uses Ruby threads)

    When exceptions were raised from inside Eventmachine (especially from within the 'blather' XMPP gem), they were impossible to capture anywhere except at the very outside of the EM event loop. This change made it possible to run Flapjack safely under JRuby as well.

  * Data access now done via full model abstraction

    https://github.com/flapjack/zermelo has been extracted from the WIP Flapjack v2 code; it provides an ActiveModel-based ORM which should make it easier in the future to decouple Flapjack from its use of Redis for, e.g. long-term historical data storage. All data objects are now identified by UUIDs, which repairs one of the cardinal sins of Flapjack v1's data storage (using business values as identifiers in some parts of the data model). (There's once place left using direct Redis access in Flapjack, I aim to clean that up before the final release.)

  * JSONAPI v1.0 & Swagger 2.0 compliant

    This took a while, as I was tracking a moving target in the JSONAPI spec, but the Zermelo changes allow for the API to support things like sorting, pagination, filtering, returning data across relationships, etc. Flapjack also emits Swagger documentation of its API, which you can hook up to swagger-ui; it's also used to aid in autogeneration of the documentation at http://flapjack.io/docs/2.0/jsonapi .

  * No more Javascript-based editing UI

    This sort of work is better done as an external API client; the Flapjack web component in v2 is actually an API proxy now as well, it makes no direct Redis accesses.

  * Uses puma rather than thin for the API/Web components

    Side-effect of the change to threads; for a while at first this was using Webrick (as part of the Ruby standard library), but that is pretty well unmaintained these days.

  * No more entities

    Entities were effectively a special-cased grouping and namespacing for Checks; the first is now offered by a Tag data model class, while the second is probably better left to either tags or check names themselves.

  * Changes to rule structure

    Mainly aimed at making application of rules a problem more reducible to simple set theory, and thus more the domain of database operations (well, except for the time windows). See http://flapjack.io/docs/2.0/usage/Notification-Routing for more details.

  * Jabber command changes

    The syntax of these has changed, with the entity removal, and to allow for consistent ways of applying them to different checks (or sets of checks).

  * Not tested against Ruby 1.9

    No syntax-incompatible changes have been made, but we only test on MRI 2.0+ and recent JRuby due to 1.9's EOL: https://www.ruby-lang.org/en/news/2014/01/10/ruby-1-9-3-will-end-on-2015/ .


  The documentation at http://flapjack.io/docs/2.0 has been updated for the new version (E&OE).


Testing
-------

  There haven't (as far as I know) been any production deployments of the WIP Flapjack v2. Some basic testing has been done, but bugs may still lurk, especially in the gateways that needed major rewrites to fit the new architecture (e.g. Jabber, Pagerduty).

  There's a data migration subcommand (use "flapjack help migrate to_v2" for details) to move Flapjack v1 data to v2; while it's not great (takes a while on large data sets, the rule changes don't really map that cleanly), it's as good as I can make it given what it's doing. People may wish to use it as inspiration to write something better suited for their own circumstances.

  While we've endeavoured to ensure that all fixes and changes were ported forward from the maintenance branch as they happened, it's possible that a few may have been inadvertently skipped. Please let us know if you see any missing.

Release
-------

  I'd like to move fairly quickly to release candidates, and, indeed, a final release, but will hold off if anyone feels strongly about any of the above. Technical or other discussions welcome! If people feel that this departs too much from what makes Flapjack Flapjack, I can always rename it as a separate project and leave the field open for an evolution of Flapjack v1, rather than the revolution.

Future
------

  The Flapjack team had hoped to work on improving the experience for people developing message gateways as the main focus for the next major release. A couple of other requested features (store historical data externally, arbitrary numbers and names of failure/success states) wouldn't be too hard to add once v2 is stable. We'll talk more about this before embarking on any major feature work.

  No-one currently working on Flapjack itself is being paid to do so, so development may not move with any great speed in the near future. (All credit to Bulletproof Networks for their support up until now -- I'm not sure if they'll be providing anyone else's time going forward, if they do their priorities may well be different).

  <commercial>
  In a not totally unrelated development, I'm currently looking for remote work, preferably involving some level of contribution to Flapjack's ongoing development and maintenance -- please send me an email to ali.g...@gmail.com if this sounds interesting to you.
  </commercial>

Thanks for listening :),

Regards,

Ali.

Ali Graham

unread,
Dec 11, 2015, 12:04:34 AM12/11/15
to flapjack...@googlegroups.com
All document links in the last email should start with the path http://flapjack.io/docs/2.x , not http://flapjack.io/docs/2.0 ; sorry about that. We're trying to future-proof things so that 2.1, 2.2 etc. docs don't have a misleading URL. :)

Ali.
Reply all
Reply to author
Forward
0 new messages