Modularity in FOLIO: Principles, Techniques and Tools

Versions

pdf
Received 2021-09-27
Accepted 2021-12-06
Published 2022-01-05
Bookmark and Share

Abstract

From its earliest inception, FOLIO was conceived not as an ILS (Integrated Library System), but as a true Services Platform, composed of many independent but interdependent modules, and forming a foundation on which an ILS or other library software could be built out of relevant modules. This vision of modularity is crucial to FOLIO’s appeal to the library community, because it lowers the bar to participation: individual libraries may create modules that meet their needs, or hire developers to do so, or contribute to funding modules that will be of use to a broader community — all without needing “permission” from a central authority. The technical design of FOLIO is deeply influenced by the requirements of modularity, with the establishment of standard specifications and an emphasis on machine-readable API descriptions. While FOLIO’s modular design has proved advantageous, it also introduces difficulties, including cross-module searching and data consistency. Some conventions have been established to address these difficulties, and others are in the process of crystallizing. As the ILS built on FOLIO’s platform grows and matures, and as other application suites are built on it, it remains crucial to resist the shortcuts that monolithic systems can benefit from, and retain the vision of modularity that has so successfully brought FOLIO this far.

https://doi.org/10.23974/ijol.2021.vol6.2.208
pdf

References

Anonymous. 2020. About npm. https://docs.npmjs.com/about-npm accessed 2021-09-13.

Breeding, Marshall. 2015. Library Services Platforms: a maturing genre of products. Library Technology Reports 51(4):1–37. https://journals.ala.org/index.php/ltr/issue/download/509/259

Dickmeiss, Adam, David Crossley, Hongwei Ji, Julian Ladisch, Heikki Levanto, Craig McNally, Jakub Skoczen and Michael P. Taylor. 2016. Okapi Guide and Reference. https://github.com/folio-org/okapi/blob/master/doc/guide.md accessed 2021-08-24.

Facebook. 2018. GraphQL, June 2018 Edition. https://spec.graphql.org/June2018/ accessed 2021-08-27.

Fielding, Roy Thomas. 2000. Chapter 5: Representational State Transfer (REST). In: Architectural Styles and the Design of Network-based Software Architectures. Ph.D dissertation, University of California, Irvine.

FOLIO. 2021. Our community. https://www.folio.org/community/ accessed 2021-09-14.

Heidenreich, Christian, and 15 other contributors. 2016. RAML Version 1.0: RESTful API Modeling Language. https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/ accessed 2021-08-26.

Hunt, Pete. 2013. Why did we build React? https://reactjs.org/blog/2013/06/05/why-react.html accessed 2021-09-13.

Hutton, Ben, Austin Wright, Henry Andrews and Greg Dennis. 2020. JSON Schema: A Media Type for Describing JSON Documents, draft-bhutton-json-schema-00. https://json-schema.org/draft/2020-12/json-schema-core.html accessed 2021-08-26.

Miller, Darrel, and 32 other contributors. OpenAPI Specification, version 3.1.0. 2020. https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md accessed 2021-08-26.

Taylor, Michael P., Zak Burke, David Crossley, Mark Deutsch and Jason Skomorowski. 2017. The Stripes Module Developer's Guide. https://github.com/folio-org/stripes/blob/master/doc/dev-guide.md accessed 2021-08-24.

Creative Commons License

This work is licensed under a Creative Commons Attribution 4.0 International License.

Downloads

Download data is not yet available.