2025-07-30 Evaluate Existing Modules

2025-07-30 Evaluate Existing Modules

Date

Jul 30, 2025 

Attendees 

  • @Kevin Day

  • @Olamide Kolawole

  • @Maccabee Levine

  • @Jenn Colt

  • @Julian Ladisch

  • @Matt Weaver

  • @Christie Thomas

  • @Shelley Doljack

  • @Tod Olson

  • @Wayne Schneider

  • @Zak_Burke

  • @Marc Johnson

Time

Item

Who

Notes

Time

Item

Who

Notes

1 min

Scribe

@Kevin Day

@Shelley Doljack is next, followed by @Jeff Gerhard

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.

*

Evaluating Existing Modules

ALL

Discuss extending the module evaluation to existing modules.

Last discussion on 2025-06-25 Evaluating Existing Modules including notes on all the work up to that point.

Slack discussion on 2025-06-27:

Maccabee Levine: TC wanted to identify some potential modules to pilot an existing module evaluation process.  Sounded like fun with jq for a Friday afternoon.  I've pulled together a list of modules, with the repo creation date, dev team, first flower release, and TCR date.
From the notes we wanted

Criteria Summary: 2 modules - front end and back end, from different teams and orgs, newer modules but predating the eval process, ones likely to fail, and something we can all walk away with a positive result.

So the spreadsheet makes pretty clear which modules slightly pre-dated the TCR process -- around lines 220-270 -- and the dev teams are well spread out.  TC can discuss which are likely to have issues, I don't have that context.

Julian Ladisch: FOLIO' sonar dashboard allows to pick the projects with the most room for improvement for each sonar category: reliability, security, test coverage, code duplication.
https://sonarcloud.io/organizations/folio-org/projects
FOLIO's semgrep dashboard allows to list projects that have dependencies with blocked licenses.
https://semgrep.dev/orgs/semgrep_folio_org/supply-chain/dependencies?licensePolicySetting=license+policy+setting+block

 

 

Notes

 

  • Identify some modules to start off the evaluation process of existing modules.

    • Pick some items that are timelined in the middle (neither too old nor too new).

  • We are explicitly not going to access for a self evaluation for these existing modules.

  • Questions are brought up on why we should spend the time going back on these.

    • The consensus is that we will ask module developers if they want to be part of this pilot group to review an existing module.

    • There is no threat of removing a module from a flower release.

      • We expect professional courtesy by developers or project owners to handle any issues brought up by the review.

    • The pilot should ideally select modules that are likely to have any discovered problems resolved.

      • Some argue that we should not base this on what is running in production.

        • Some modules may want to be picked up by new teams and it needs to be in a good state.

        • Is the module maintainable and written in a language we support is hidden from production but matters to this process.

  • Modules being selected (ideally different teams, back-end and front-end):

    • mod-search (Spitfire)

    • ui-export-manager (Firebird)

  • A question is brought up if we should choose the same team across different time spans.

    • One main reason to avoid doing multiple modules for the same team during the pilot is to avoid the burden this would impose.

      • We should have no problems if the team is willing to have multiple modules reviewed.

  • As a reminder, we should separate the new module review process from the existing module review process (different documents, etc…).

  • @Olamide Kolawole will select who will be responsible for the review of the modules.

    • As a reminder, this process is exploratory but we should not loose track of time.

  • We should reach out to the community for those interested in being part of the pilot before this process becomes ready.

    • The piloted process is suggested to be described more formally, beyond meeting notes, to make this process easier to present to and work with the community.

      • It is important to note that the process for new modules is different because with existing modules the TC has to contact the responsible parties (this is the opposite to that of new modules where they contact the TC). This changes how we need to approach this process.

        • Example First step: Whomever is assigned to review the existing module must reach out to somebody (we do not currently know who that somebody is).

        • This process is being created as we go.

      • It would be more curteous to reach out and let them know that we are reaching out by being more wholestic in what we are doing (should not just be a Jira ticket).

        • We should expect the teams to know what their own tech-debt is, but we should also stay clear from the tech-debt terminology.

        • Be sure to leave the request open and ask how interested they are in this optional pilot process (use soft language to emphasize how this is only a request and is optional).

      • We should have some, possibly simple, list on how we should approach inquiring the team to be part of the pilot process for one or more of their modules.

        • @Maccabee Levine volunteered to write this list.

      • We should remember that while teams are forced to perform the new module evaluation, the existing module evaluation are not forced.

      • We might want to allow adapting to the method of reporting this process to favor the teams to make this process easier and more appealing to these teams.

        • One team might like Jira.

        • Another team might have problems with Jira and instead prefer the wiki.

      • This will be a living process.

        • The purpose of the pilot is to establish this process.

  • We should have an explicit step to talk to the team and get their feedback at the end of the process.

NA

Zoom Chat

 

Wayne Schneider 10:04 AM
I can access

Julian Ladisch 10:05 AM
Did you login using your GitHub account?

Maccabee Levine 10:06 AM
https://docs.google.com/spreadsheets/d/1_GGccpX4E0UBs1xZbCkxj24BopsUN_uUo9JCPEm8suQ/edit?gid=0#gid=0
https://open-libr-foundation.slack.com/archives/C02HP10PPGB/p1751051325730599

Wayne Schneider 10:29 AM
https://github.com/folio-org/tech-council/pull/98/files

council/pull/98/files

Tod Olson 10:31 AM
This might be a case where consulting with the PO might make sense, something like:
Spitfire, we're thinking of piloting this module review process with one of your back-end modules. Shall we also review the matching UI module so you have a whole package, or would you prefer look to a UI module of another team?

Craig McNally 10:30 AM
"old timers" 😂

Maccabee Levine 10:31 AM
I know that joining TC in 2022 and including myself in that "old timers" reference is also ridiculous compared to some folks here

Wayne Schneider 10:31 AM
I think Olamide's suggestions are good

Wayne Schneider 10:35 AM
And Olamide :-)

Wayne Schneider 10:46 AM
And maybe "how would you like to participate"?

Maccabee Levine 10:51 AM
https://docs.google.com/document/d/15zK4lJ4vo4goj-AzoXMompDbnLWT8uRwWiiQd_llaDY/edit?tab=t.0#heading=h.aw3plt3dr6m8



Topic Backlog

Decision Log Review

All

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

Translation Subgroup

All

Since we're having trouble finding volunteers for a subgroup, maybe we can make progress during a dedicated discussion session?

Communicating Breaking Changes

All

Currently there is a PoC, developed by @Maccabee Levine, of a utility to catalog Github PRs that have been labeled with the "breaking change" label. We would like to get developer feedback on the feasibility of this label being used more often, and the usefulness of this utility. 

Officially Supported Technologies - Upkeep

All

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 Visibility

All

Possible topic/activity for a Wednesday session:

Discuss/brainstorm:

  • 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.

API linting within our backend modules

All

https://folio-project.slack.com/archives/CAQ7L02PP/p1713343461518409



Hello team, I would like to discuss API linting within our backend modules. Some time ago, we transitioned our linting process from Jenkins to GitHub Actions as outlined in https://folio-org.atlassian.net/browse/FOLIO-3678. I am assuming that this move was done via some technical council decision. Please correct me if I'm wrong.
In my observations, I've found two problems:

  1. Schema linting does not occur if the schemas are in YAML format.

  2. There are issues with resolving some deeper references during API linting.

Although I'm unsure about how to improve the existing linting implementations within Folio, I propose to consider an open-source solution that handles OpenAPI linting effectively and allows us to define custom rules. For your reference: https://stoplight.io/open-source/spectral A test of this solution can be found in this PR: https://github.com/folio-org/mod-search/pull/567. The same PR also provides an example of custom rule definition: https://github.com/folio-org/mod-search/pull/567/files#diff-d5da7cb43c444434994b76f3b04aa6e702c09e938de09dbc09d72569d611d9ab.Also, by employing 'Spectral', I discovered AsyncAPI (https://www.asyncapi.com/en), an API design tool similar to OpenAPI but for asynchronous interactions. I suggest that we consider using AsyncAPI in FOLIO to generate documentation for Kafka interactions.



PR Templates

All

https://folio-project.slack.com/archives/CAQ7L02PP/p1713445649504769

Hello team, Small request to consider.
Regarding pr templates.

  1. From my perspective, pr template is not good idea. Even the biggest open source projects that are contributed by many people don't have any pr template. Currently what we have for acq modules https://github.com/folio-org/mod-orders-storage/blob/master/PULL_REQUEST_TEMPLATE.md

  2. These pr template is inconsistent in different teams.

What I suggest is that, pr template shouldn't be any instructions, because most developer who are creating pr have already understand the rules. If we put just two section into template, it will encourage developers to write more about their work and that lead to knowledge  sharing among developers.

Proposed Mod Kafka

All

https://folio-project.slack.com/archives/CAQ7L02PP/p1714471592534689

Mike Taylor

Proposal. If and only if a FOLIO instance is running Kafka, it should insert and enable a module called mod-kafka, which consists entirely of a module descriptor that says it provides the interface kafka. The purpose is so that other modules can use the standard <IfInterface> and similar tools to determine whether they should attempt Kafka operations. Rationale: the FOLIO ILS depends absolutely on Kafka, but other uses of the platform will not. One such example: a dev platform that includes only mod-users, used as a source of change events for Metadb.