2024-01-10 - Officially Supported Technologies



Discussion items

1 minScribeAll

Jenn Colt  is next, followed by Florian Gleixner, then Jeremy Huff 

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 minDistributed vs Centralized Configuration

Present abstract for RFC:  https://github.com/folio-org/rfcs/pull/23

Florian Gleixner : This RFC is about configuration options in FOLIO. It describes where to put configurations. The goal is to drop mod configuration due to security. It proposes favoring distributed configuration over the centralized configuration. It proposes that mod-configuration should not be used until the R release. The RFC suggests that a some exceptions might be made for centralized configuration. The RFC lays out a timing for migration. 

Tod Olson: Central configuration could be used in cases where modules do not have storage. E.G. z39.50 or other edge modules.

Craig McNally : That is a good point, and the UI consumes these configurations.

Florian Gleixner : There is no module that could be the parent of these settings, so these can be placed in a centralized configuration module. 

Tod Olson : will there be guidelines to promote consistency in how settings are expressed.

Florian Gleixner : this was discussed with Julian Ladisch and they decided that this was out of scope.

Tod Olson : So these changes are considered to be near-term

Florian Gleixner : This is true because of the security concerns. Maybe in a future RFC guidance could be given for best practices for designing settings.

Craig McNally : put forward a question from the chat, from Marc Johnson: How is the scope near-term, he thought this was intended to be a long term strategic decision.

Florian Gleixner : Dropping mod configuration is near term, but the use of distributed configuration is a more long term strategic decision. 

There were no objections and the RFC moved forward

5-10 min

Go programming language for backend development

Present abstract for RFC:  https://github.com/folio-org/rfcs/pull/25 

Jakub Skoczen : This RFC proposes that GO be added to the officially supported technology list for backend development. Go is a good language for building web micro services. It is a simple language and they feel it is a good fit. The timing sections suggests that a pilot module be created to determine the long term suitability of the language. If it is not successful GO will be dropped from the officially supported technologies list.

Ingolf Kuss : Is there already a plan for a pilot module

Jakub Skoczen : Yes there is a plan for a a pilot module. He imagines the module would be a fairly fringe module.

Marc Johnson : He has thoughts that this will have a big president  setting effect, in terms of the polyglot nature of FOLIO

Jakub Skoczen : They had the thought that this discussion might have a more general component, rather than just being about the specifics of Go.

Jeremy Huff : How much will this RFC dive into containerization?

Jakub Skoczen : That could be a direction that the conversation could take. He feels that containerization would be a less controversial aspect of the conversation, and that maintenance of a new code base would be a more robust topic.

Craig McNally : He cautions us against adding the language to the officially approved technology list provisionally.

There were no objections and the RFC moved forward

*Officially Supported Technologies UpkeepAll

Some items on this page are accompanied by specific versions or version ranges, while others are not.  Discuss whether or not we want to make this more consistent, or at least make it more clear when a version should be specified.  The primary concern likely has to do with how these pages are expected to be used.  There are at least a few different use cases includes, but not limited to:  

  • During the TCR process to verify that the module under review isn't introducing new technologies, or incompatible versions of technologies already on the list.
  • To track/plan upgrades of dependencies to ensure we're using supported versions (security implications)
  • ...

Marc Johnson : There could be timing issues with our discussion of the Officially Approved Technology list and the two previously proposed RFCs

Jeremy Huff : Do we need this list to be so granular, for instance would both the spring module core and spring way need to be enumerated on the list

Craig McNally : This is most likely out of scope, but it seems like if they both use the same version of spring, would this ok

Marc Johnson : There are historical issues with this that are worth talking about

Craig McNally : That is true, and this should be added to the topic backlog. Todays discussion is about versioning. Should these pages maintain versioning?

Jeremy Huff : This list was created for module evaluations. Its use in support periods was added later. He is of the opinion that it should not be used for both purposes. 

Marc Johnson : If we divided these into multiple lists, they would necessarily be related. How would we handle dividing it into multiple lists

Jeremy Huff : We should remove versions from the Officially Approved Technology list and maintain supported versions in another document

Marc Johnson : There are issues with these lists going out of sync and presenting logical contradictions. For the things that are shared (i.e. stripes), the versions mater. 

Jakub Skoczen : The team that is using  software that is out of support is on the hook for making the changes. We want the version to be as high as is possible.

Marc Johnson : He disagrees that we always want to be on the highest version of everything. Even if the goal is to get to the latest we still have to describe the steps as to how we get there.

Tod Olson : We started this list, and then it became apparent that in some cases versions matter. He agrees that some of the things that are shared (like postgres) are different, but the versions do need to be tied to a FOLIO version. He feels that he is broadly supporting what Marc Johnson is suggesting, and feels that it would be awkward separating these into multiple documents.

Jakub Skoczen : He agrees with Tod Olson , we should probably express somewhere that we want versions to progress as quickly as is possible. We should not optimize for situations that are holding us back, but instead embrace the goal that we are using the most recent dependencies.

Craig McNally : We are all agreeing that we want to be moving forward, and avoid using deprecated software. We are running out of time, but it does sound like it is worth capturing the idea that we only specify versions "where they matter", as in instances that are cross-cutting.

Marc Johnson : These are dependencies that are shared between multiple dev teams, or where the system won't work if these elements are not aligned.

NAZoom Chat

10:05:00 From Jenn Colt to Everyone:
    I can take over notes, sorry about that
10:12:02 From Craig McNally to Everyone:
    Jeremy is taking notes - I'll leave it up to you two to sort it out if you want to switch
10:12:53 From Jenn Colt to Everyone:
    I see him typing away, I’ll let him keep going
10:13:04 From Craig McNally to Everyone:
    Reacted to "I see him typing awa..." with 👍
10:13:20 From Marc Johnson to Everyone:
    How is the scope near term?
    My understanding was this was intended to be a long term strategic decision
10:14:06 From Marc Johnson to Everyone:
    We already decided to replace mod-configuration with mod-settings previously
10:16:11 From Tod Olson to Everyone:
    Scope seems good.
10:25:37 From Marc Johnson to Everyone:
    The architecture was designed to support it
    However practicalities tended to supersede that from early on in the project
10:25:59 From Marc Johnson to Everyone:
    Containers aren’t an official distribution mechanism for modules in FOLIO
10:26:10 From Taras to Everyone:
    Reacted to "Containers aren’t an..." with 👍
10:26:38 From Marc Johnson to Everyone:
    It’s really important folks consider whether this is a thin end of the wedge
10:26:47 From Tod Olson to Everyone:
    Yes, there have been a number of people who have wanted to see Python added, for example. But no one has actually come forward with a real proposal and offer for a sample module for that language.
10:27:53 From Marc Johnson to Everyone:
    Replying to "Yes, there have been…"
    I could make cases for a bunch of languages 
    The case for any of them is less important to me than the general principle of how many / which languages to support
10:29:48 From Marc Johnson to Everyone:
    When to build a PoC is a double-edged sword due to sunk costs
    The FOLIO community has tended to be compelled to adopt PoCs due to the prior investment
10:38:19 From Marc Johnson to Everyone:
    Yes, ongoing support and dev is a theme in these conversations that I think is important 
    Particularly given the reasoning folks has given for previous decisions
10:50:39 From Craig McNally to Everyone:
    @Jakub Skoczen is your hand still up, or up again?
10:50:56 From Jakub Skoczen to Everyone:
    Again, but I can lower it if we want to move on
10:51:07 From Craig McNally to Everyone:
    no that's fine.  You're up next
10:52:02 From Maccabee Levine to Everyone:
    If we want to make any decisions in the next 7 minutes, we should have a concrete proposal soon.
10:52:27 From Marc Johnson to Everyone:
    It’s not only development effort 
    For infrastructure, it’s also operational effort
10:52:31 From Marc Johnson to Everyone:
    Reacted to "If we want to make a…" with 👍
10:52:36 From Craig McNally to Everyone:
    I don't think that's going to happen @Maccabee Levine.  I'll wrap things up after Jakub's comments
10:54:39 From Marc Johnson to Everyone:
    RMB and spring way are a good example of the challenges we’ve had with keeping up with policy decisions
10:56:02 From Marc Johnson to Everyone:
    AWS variants of infrastructure also aren’t officially supported by the community
10:58:08 From Marc Johnson to Everyone:
    It’s not a perfect heuristic. First party libraries are an example

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.

  • Do common libraries used to build in approved frameworks need to be on this list? Such as spring-way and spring-module-core.

Dev Documentation VisibilityAll

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.

Action Items