FOLIO模块经验
2022年02期【FOLIO专栏】
作者:Michael P. Taylor
编译:周江纯、张春景、胡小菁
本文节选自:Michael P. Taylor《FOLIO中的模块化:原理、技术和工具》
原文来源:Taylor, M. (2021). Modularity in FOLIO: Principles, Techniques and Tools. International Journal of Librarianship, 6(2), 3-12. https://doi.org/10.23974/ijol.2021.vol6.2.174
【导 读】从一开始,FOLIO就被设想为一个由许多独立且相互依赖的模块组成的服务平台,而不是一个传统的ILS。这一设想成了基于相关模块构建ILS或其他图书馆软件的基础。FOLIO的这种模块化的构想降低了参与的门槛,因而对图书馆社区产生了十分强大的吸引力:每个图书馆都可以由自己或者雇佣开发人员来创建满足自己需求的模块,或者资助对广泛社区有用的模块——以上所有方式都不需要从权威机构处获得“许可”。FOLIO的技术设计深受模块化需求的影响,包括标准规范的建立和强调对机器可读API的描述。随着建立于FOLIO平台之上的ILS的发展和成熟,以及其他应用程序套件的创建,不走单体系统快速开发成功的老路和保持模块化的愿景仍然是至关重要的,因为正是模块化成功地让FOLIO走到了今天。
FOLIO开发面临着非常现实的挑战,为什么要坚持使用模块化架构呢?原因在于去中心化方法的优点不仅反映了实际需求,而且还反映了FOLIO项目的基本理念。就像图书馆本身是关于知识获取的民主化一样,模块也是关于图书馆技术的民主化,允许实际用户决定如何开发和在哪里开发,他们想要优先考虑哪些项目,他们想要雇佣或签约哪些技术人员来实现他们的目标,甚至模块之间交互什么能最好地满足它们的需求。
这其中的一个例子就是教学参考书(Course Reserves)模块。这是一个特定的图书馆联盟的需求——芬威图书馆组织(Fenway Library Organization)——一个Index Data公司的客户。但是FOLIO路线图并没有包括教学参考书模块,因为它并不拥有足够高的优先级。在传统的单体ILS中,事情的结局会是这样的:产品供应商的开发团队将遵循技术路线图,而教学参考书模块将不会被添加到ILS中。但在FOLIO中,Index Data公司单独设计和实现一个教学参考书模块(或者更准确地说,是一对模块:UI和后端,一起组成一个应用程序)是一件相对简单的事情。这个模块与现有的FOLIO模块WSAPIs进行交互,尤其是那些由典藏(Inventory)模块提供的单件、馆藏地、借出类型等信息。这样做不需要对典藏模块做任何更改,而只需要使用现有的接口,并声明它对这些接口的依赖。典藏模块甚至不知道教学参考书模块的存在:从它的角度来看,教学参考书模块只是一个普通的客户端。在证明了它的价值之后,教学参考书模块现在已经被接受为FOLIO模块的核心集,这使得任何使用FOLIO的机构都可以轻松地安装使用。
关于FOLIO的模块化如何解决单体ILS难题的一个更重要的例子是ReShare项目,这是一个管理馆际互借(Inter-Library Loan,ILL)的系统。最近,学术图书馆合作与创新伙伴关系(the Partnership for Academic Library Collaboration & Innovation,PALCI)的50多家图书馆和ConnectNY (CNY)的大约15家图书馆成功地实施了这一计划。ReShare是作为一组FOLIO模块实现的,其中第一个用于管理ILL请求,第二个用于管理传入请求的实现,第三个用于目录管理等,所有这些模块都独立于FOLIO ILS模块开发,但都利用了FOLIO平台基础设施。ReShare应用程序套件不仅构建在Stripes框架、Okapi API网关和权限模型上,还构建在应用程序级FOLIO模块上,包括用户管理、租户设置和开发人员设置以及字段。此外,ReShare的联盟配置包括一个共享索引,该索引是通过FOLIO典藏模块实现的。
通过使用FOLIO平台和其他FOLIO模块,ReShare应用程序套件的开发速度得到了大大加快。与此同时,模块化架构意味着ReShare的开发已经能够从FOLIO ILS的开发中分离出来,由一组开发人员驱动,其中只有部分人参与了FOLIO。在此过程中,ReShare开发者对FOLIO工具包的某些部分进行了改进,例如,可重用的React组件间接地帮助充实了ILS应用程序,这是一个意外的收获。
我们计划开发更多的应用程序套件和ReShare:也许是一个内容管理系统,一个机构存储库,一个采购系统,或者其他什么东西。还可以创建应用程序套件以形成与其他系统的桥梁,如ArchivesSpace或Canvas学习管理系统。令人兴奋的是,FOLIO社区的模块化架构和民主的社区氛围意味着这些贡献可以来自任何地方——甚至是目前与FOLIO无关的组织。衡量软件工具的一个标准是它能在多大程度上被应用到创造者没有想到的用途之上。FOLIO的理念都是鼓励这种利用的。
FOLIO项目的每个方面都反映了它的社区起源和民主原则。需要特别指出的是,模块化架构不仅仅是一种战术选择(尽管其采用大大有助于消除单体系统中复杂性的指数增长)。相反,FOLIO的模块系统是项目目标、态度和理念的技术表现。
这一选择是有一定代价的。这让FOLIO ILS的初始版本以一组模块的形式运行需要一些时间,但这些代价已经通过快速设计、原型和开发新添加和扩展的能力得到了充分回报。因此,FOLIO现在实现新功能的速度比其他同等成熟的ILS更快。项目的现有状态只是一个开始,任何人都可以影响它未来的走向。
注:
PALCI(学术图书馆合作与创新伙伴关系)前身为“宾夕法尼亚大学图书馆联盟”。
关于作者:
Michael P. Taylor是Index Data公司软件专家,英国布里斯托尔大学研究员,制定FOLIO技术设计的核心团队工程师。他深入参与了FOLIO的用户界面工具、GraphQL服务、Z39.50服务器以及其他对平台应用程序中ReShare应用程序套件的实现过程。