2024-03-18 Meeting notes



Discussion items

1 minScribeAll

Maccabee Levine is next, followed by Craig McNally

Reminder:  Please copy/paste the Zoom chat into the notes.  If you miss it, this is saved along with the meeting recording, but having it here has benefits.

5-10 minLiaison Updates
  • CC: Maccabee Levine
    • No meeting this week
  • PC: Tod Olson
    • Discussion about Roadmap and Prioritization process.  Writing how requirements are written.  WOLFcon topic ideas.
    • TC should discuss its own topic suggestions (future dedicated discussion).
  • RMS Group: Jakub Skoczen 
    • Jakub not available
  • Security Team: Craig McNally 
    • Craig not available
  • Tri-council Application Formalization: Jenn Colt 
    • Jenn will post the questions for the week as usual.
5 minUpcoming MeetingsAll
  •  - Dedicated Discussion - Static Code Analysis (maybe)
  •  - Regular TC meeting
  •  - Dedicated Discussion - Topic TBD
  •  - Regular TC meeting
  •  - Dedicated Discussion - Topic TBD
  •  - Regular TC meeting
  •  - Dedicated Discussion - Topic TBD
10-15 min

Technical Council Sub Groups Updates


Quick updates only.  If we can't find volunteers for groups, we'll need to add the topic to our backlog and address it during dedicated discussion sessions


  • Subgroup is over, not in draft refinement anymore.

Distributed vs. Centralized Config RFC

  • Subgroup is over, not in draft refinement anymore.

TCR Process Improvements

  • Language recommendation communicated to RSMG this morning.

App Formalization RFC

  • Subgroup is over, not in draft refinement anymore.
10 minRFCs


  • Public review update
    • Application Formalization RFC
    • Go Programming Language for Backend Development RFC
    • Distributed vs Centralized Configuration RFC - is in public Review
1 minDecision LogAll

Standing agenda item... is there anything in the decision log requiring attention? 

30minTCR Board ReviewAll, Maccabee Levine and Ingolf Kuss

TCR-40 MOD-Serials Ingolf Kuss:

  • Present Evaluation Continued
    • https://github.com/folio-org/tech-council/pull/70/files/
    • Most criteria passed.  Two did not.
      • Grails 6.  Module is on Grails 5.  True for all Groovy/Grails modules.  Team has committed to Grails 6 when Quesnelia is out.  Would not prevent Ingolf from preventing module; issue is larger than this module.
      • Test coverage up to 64%.  Brought down because of Grails dynamic code generation.
    • Recommend approving module.
  • Technical Council Review
    • Dev team and TC agree it will be Grails 6 by Quesnelia release.  Components have to upgrade to Grails 6 before the modules.  Working on mod-agreements upgrade first before mod-serials-management.  Goal to resolve all upgrades by end of week.
    • Jeremy Huff concerned about setting a precedent about static code analysis.  Need discussion to evolve process so a module can demonstrate the quality in an effective way, but not allow modules that don't.  Test coverage is a poor proxy for quality, but it is a common & useful one, so good to have in place.  Agree with explanation about generated code, not interested in coverage for that, but interested in coverage on original code.
      • Ingolf Kuss entire notion of unit tests doesn't apply here, using integration tests.  Then what tool, Jacoco.
      • Jeremy Huff 80% coverage of original code in automated testing is what is important to me.  Not unit vs integration.
      • Tod Olson specific requirements because we're trying to be objective.  Run into trouble with edge cases.  More important to meet the purpose of the requirements vs rigid boundaries.
      • Marc Johnson we agreed last week to disregard the language thing.  Issue of whether we accept coverage of real code.
      • Jeremy Huff agree.  TC does care about test coverage.  In this case we do have that coverage.
      • Owen Stephens we can see that we have written tests that coverage all major functionality of the module.  No line count but clear.
      • Maccabee Levine this doesn't violate criteria.  We're agreeing that criteria should be tweaked to look at only generated code.  Suggest provisional acceptance based on Grails upgrade.
    • Ingolf Kuss Never used jacoco on groovy/grails modules before.
      • Marc Johnson same tooling used before, just not integrated with sonarqube before.
    • No other support for provisional acceptance pending Groovy upgrade.
    • Six votes in favor of full acceptance.  Module approved.

TCR-39 UI Serials management Maccabee Levine:

  • Present Evaluation Continued
    • https://github.com/folio-org/tech-council/pull/69/files
    • Most criteria passed.  Five did not.  Several trivial.
      • Licensing issues are not a problem with this module in particular; upstream.  So a TC process issue.
      • The only provided interface not already accepted was mod-serials-management.  Now that is approved.
      • WCAG only two issues are upstream issues at Stripes framework issue.  Dev team agreed to fix either in application or work with Stripes team.  So not a blocker.
    • Two things left
      • Unit test coverage at 56.6%.  Dev team working to improve actively.
      • Sonarqube no more security or duplication issues.  Still code smells, 15 major + 2 critical a couple hours ago.
  • Technical Council Review
    • Jeremy Huff approval timeline?  Marc Johnson need by today.
    • Jeremy Huff if we did provisional acceptance, what timeline does dev team expect?
      • Owen Stephens test can definitely be increased to 80% coverage by end of week.  Critical code smells are trivial to fix (nesting too deep).  Have not looked at the other code smells.
      • Ethan Freestone lots of quick wins to get test coverage up.  Can get number above 80 easily.  Trade-off with testing the larger, more complex components.  Can work in parallel.  Code smells should not be an issue, all pretty simple to fix.
      • Jeremy Huff looking at how 'major' code smells relate to 'critical'.  Maccabee Levine demoed.
      • Owen Stephens sonarqube does give maintainability an A rating.  Not sure about criteria.  Expect to fix major & critical ones.  Medium severity = major code smells.
      • Ethan Freestone most of the smells are simple to do.  Refactors not hard to do, can get through the list quickly.
      • Marc Johnson why is the number important.  Can we talk about giving a provisional grace period?
    • Maccabee Levine dev team is on board with fixing code smells and code coverage.  suggest provisional acceptance with dev team addressing those items.  dev team suggested two weeks.
      • Tod Olson agree.  Just allow dev team to work on the things that give the most value first, vs. coverage %.
      • Jeremy Huff other failing criteria are outside the scope of this module.
      • Owen Stephens provisional acceptance is reasonable.  Guidance on what tests to prioritize helpful.  Two week timeframe is a good starting point.
    • Seven votes in favor of provisional acceptance.  Major/critical code smells and test coverage to be fixed.
  • Ingolf Kuss and Maccabee Levine will write up statements on why the modules were accepted despite failing criteria.

Time Permitting

Officially Supported Technologies (OST)


Standing agenda item to review/discuss any requested or required changes to officially supported technology lists

Time Permitting

Topic Backlog Grooming


Review the topics on our Topic Backlog to remove those that are no longer relevant, modify those that require change, and add topics that might be missing.

NAZoom Chat


Ingolf Kuss  to  Everyone 11:16 AM

You  to  Everyone 11:22 AM
"If TC and Submitter unanimously agree on module changes that would resolve any failures, the TC may decide to provisionally accept the module with an agreed-upon timeline for the changes to be completed. When Submitter notifies TC that the changes are complete, the reviewer(s) may update the evaluation and TC may adjust its decision."

Owen Stephens  to  Everyone 11:24 AM
I hate to ask this question, but since it’s been an issue before. Are we quorate for TC vote?

Tod Olson 11:25 AM
I count seven voting members.

Marc Johnson 11:25 AM
We have 7 I believe and in the past that was considered enough (IIRC we even accepted 6 once)

Owen Stephens 11:25 AM
Thanks both 🙂

Marc Johnson  to  Everyone 11:28 AM
Jacoco is what _every_ backend module build in FOLIO uses

Marc Johnson  to  Everyone 11:29 AM
We agreed last week that the unit vs. integration distinction was irrelevant and misunderstanding of the language in the criteria

Ian Ibbotson  to  Everyone 11:29 AM
Jacoc seems not to be honouring the @generated annotation - which should allow coverage against only original written code - as soon as it does the coverage should leap significantly https://github.com/jacoco/jacoco/issues/831

Ingolf Kuss  to  Everyone 11:31 AM
> Jacoco is what _every_ backend module build in FOLIO uses
That surprises me, becaue for mod-circulation-item, e.g., I took the Code Coverage from the sonarqube page.

Marc Johnson 11:31 AM
Sonar doesn’t calculate the coverage, it just interprets the jacoco report

Ingolf Kuss 11:32 AM
ok, I was not aware of this.

You  to  Everyone 11:33 AM

  • We should alter the criteria to require 80% coverage on non-generated code.  And then "If the TC determines that some failed criteria would be resolved by non-controversial changes to the criteria themselves (or referenced requirements like the Officially Supported Technologies), TC may decide to accept the module and make the agreed-upon changes."

Marc Johnson 11:34 AM
That’s already implicit because the tools in our builds already exclude generated code (when that feature works)

Owen Stephens  to  Everyone 11:36 AM

Owen Stephens  to  Everyone 11:36 AM
Not mod-agreements

You  to  Everyone 11:36 AM
I made a motion that we provisionally accept mod-serials-management.  The only change requested (and unanimously agreed) is the grails 6 upgrade

Tod Olson  to  Everyone 11:47 AM
We've seen nesting too deep in the past in back-end, where the particular limit seems overly constrained in context.

Marc Johnson  to  Everyone 11:50 AM
IIRC in the past, we’ve given a module a whole release cycle’s grace for these kinds of issue

Ian Ibbotson  to  Everyone 11:53 AM
Have to move to next call - thanks all - good meeting.

Marc Johnson  to  Everyone 11:53 AM
The team have already been working on addressing these concerns for the last few weeks

Owen Stephens  to  Everyone 11:55 AM
Final module release for Q is 19th April. These issues can definitely be resolved before then. 2 weeks seems like a good target. But guidance from TC for best value as Tod has just said would be very welcome

Kirstin Kemner-Heek  to  Everyone 11:58 AM
Thanks a lot! Bye :-)

Ingolf Kuss  to  Everyone 11:58 AM
I am happy to assist in writing the explanation.

Tod Olson 11:59 AM
May or may not be able to make it. Good topic, unclear on timeing.

Topic Backlog

Decision Log ReviewAll

Review decisions which are in progress.  Can any of them be accepted?  rejected?

Translation SubgroupAllSince we're having trouble finding volunteers for a subgroup, maybe we can make progress during a dedicated discussion session?
Communicating Breaking ChangesAllSince we're having trouble finding volunteers for a subgroup, maybe we can make progress during a dedicated discussion session?
Officially Supported Technologies - UpkeepAll

Previous Notes:

  • A workflow for these pages. When do they transition from one state to another. Do we even need statuses at all ?

Stripes architecture group has some questions about the Poppy release.

Zak: A handshake between developers, dev ops and the TC. Who makes that decision and how do we pass along that knowledge ? E.g. changes in Nodes and in the UI boxes. How to communicate this ? We have a large number of teams, all have to be aware of it.  TC should be alerted that changes are happening. We have a couple of dedicated channels for that. Most dev ops have subscribed to these channels. How can dev ops folk raise issues to the next level of community awareness ? There hasn't been a specific piece of TC to move that along.

Craig: There is a fourth group, "Capacity Planning" or "Release Planning". Slack is the de facto communication channel.  There are no objections to using Slack. An example is the Java 17 RFC. 

Craig: The TC gets it on the agenda and we will discuss it. The TC gets the final say.

Marc Johnson: We shouldn’t use the DevOps Channel. The dev ops folks have made it clear that it should only be used for support requests made to them.

Jakub: Our responsibility is to avoid piling up technical debt.

Marc: Some set of people have to actually make the call. Who lowers the chequered flag ?

Craig: It needs to ultimately come to the TC at least for awareness. There is a missing piece. Capacity Planning needs to provide input here. 

Marc: Stakeholders / Capacity Planning could make that decision. Who makes the decision ? Is it the government or is it some parts of the body ?

Marc: the developers community, the dev ops community and sys ops are involved. For example the Spring Framework discussion or the Java 17 discussion. But it was completely separate to the TC decision. It is a coordination and communication effort.

Marc: Maybe the TC needs to let go that they are the decision makers so that they be a moderating group.

Jakub: I agree with Marc. But we are not a system operating group. Dependency management should be in the responsibility of Release management. There are structures in the project for that.

Jason Root: I agree with Jakub and with Marc also. Policies should drive operational/release/support aspects of Folio.

Jason Root: If the idea of “support” is that frameworks are supported, then of course the project should meet that.

Marc Johnson
Some group needs to inform OleksAii when a relevant policy event occurs.
These documents effectively ARE the manifestation of the policy.

Craig: This is a topic for the next Monday session.

Craig to see if Oleksii Petrenko could join us to discuss the process for updating the officially supported technologies lists.

Dev Documentation VisibilityAll

Possible topic/activity for a Wednesday session:


  • Ideas for the type of developer-facing documentation we think would be most helpful for new developers
  • How we might bring existing documentation up to date and ensure it's consistent 
  • etc.

Action Items

TC members to review policy guidance in Ramsons OST page and provide feedback