Warning: This page has not been updated in over over a year and may be outdated or deprecated.
videos:vufind_9.0_-_what_s_new_what_s_changed
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
videos:vufind_9.0_-_what_s_new_what_s_changed [2023/04/21 16:15] – created demiankatz | videos:vufind_9.0_-_what_s_new_what_s_changed [2023/04/24 19:28] (current) – crhallberg | ||
---|---|---|---|
Line 7: | Line 7: | ||
===== Transcript ===== | ===== Transcript ===== | ||
- | // Coming soon... // | + | Okay. So, welcome, everyone, to the presentation on what's new and what's changed in VuFind 9. |
+ | |||
+ | We'll start with the high-level stuff. We'll get into the nitty-gritty details. And hopefully, most of this will not apply to everyone, but I just want to be sure that we all are aware of what's coming. So, first of all, the exciting things about VuFind 9.0 are major new features. Probably the biggest new feature is what's called blended search. And there was a video recorded about this in detail at the last VuFind summit, which you can find on YouTube. So, I'm not going to talk about it in depth now. But the upshot of this is that it allows you to connect multiple search backends and create a single result list from them with merged facets. This is something people have been asking for for a long time. And now we can offer it. | ||
+ | |||
+ | Another significant new feature is a cookie consent dialog box. This is off by default but can be easily enabled through configuration. | ||
+ | |||
+ | Another one is the ability for users to leave star ratings on records. Either in conjunction with comments or independently. Again, this feature is off by default, but it's a new social setting that can be turned on. We also have a few minor new features. | ||
+ | |||
+ | We have something called the interval capture handler. This puts a time-based limitation on certain actions. So, rather than providing a visible control that people need to interact with to indicate that they' | ||
+ | |||
+ | We also now have configurable user name policies so you can control what characters are allowed in user names. And by default, we have a very broad policy that just disables really bizarre special characters. Hopefully, this should not impact any legacy users in any real-life systems. But it also hopefully protects against weird behavior that we don't want to allow. And you can change it if you don't like it. Also some significant improvements to existing functionality. | ||
+ | |||
+ | We've done quite a bit of work on the feedback form. One note is that historically if you turn on feedback forms, they just send emails. But now there' | ||
+ | |||
+ | Additionally, | ||
+ | |||
+ | There have also been some changes to some search backends. The EDS and Primo backends now support facet value filtering. So, if you want to not display certain specific facet values, you can turn that on. Additionally, | ||
+ | |||
+ | There' | ||
+ | |||
+ | Another small improvement is that when alphabetic browse results are clicked and lead to search results, those results no longer automatically apply default filters because that could have caused some inconsistencies where the browse results say that a certain number of records match the result and then you click on it and you don't get anything because it's filtered out by a default filter. So, this is more consistent. But, again, this behavior can be configured if you have a strong reason for it to act differently. | ||
+ | |||
+ | We've also added an API endpoint that can be used to automate the clearing of caches, which can be useful if you want to do that as part of, say, an overnight process. We've added configuration file inheritance to YAML files. So, you know, for a long time you've been able to inherit settings from one any file to another. Now you can do similar things in YAML files. | ||
+ | |||
+ | We've also added and updated some integrations with third-party systems in VuFind9. One new feature is that you can display cover images that are stored locally in Koha if you're using Koha. | ||
+ | |||
+ | We've updated some Google-related tooling so you can now easily incorporate Google Tag Manager. And we've added support for Google Analytics version 4 since Google Universal Analytics is getting shut down this summer. | ||
+ | |||
+ | We've added support for Marc in JSON records in the Solr index. So, now you can do binary Marc, Marc XML, or Marc in JSON. We've added retraction notice support in the Browsine DOI linker. So, now if you have Browsine turned on and appropriately configured and you have records with DOIs, VuFind can automatically detect articles that have been retracted and display messages in line about that fact. You just have to turn it on in Browsene.ini if you want it. | ||
+ | |||
+ | And we've added support for using VuFind as an OAuth2 or OpenID Connect authorization server, which can be useful for interacting with some third-party systems. | ||
+ | |||
+ | We've renamed the EZB link resolver driver to JOP. This is sort of a more accurate name for this third-party service. I think this is primarily used in Germany. | ||
+ | |||
+ | And finally, we've added an example import configuration for the subjects plus subject guide tool, which is an open-source content manager that supports OAI PMH. So, now you can ingest that content into VuFind very easily. So, that ends all the things that are new. | ||
+ | |||
+ | So, now let's talk about all the things that have changed. So, dependencies, | ||
+ | |||
+ | We've also upgraded Solr to Solr 9, specifically Solr 9.1.1. And this is a significant Solr upgrade. You absolutely need to reindex all your records when you make this upgrade because there are some changes to the way highlighting works. And if you just point Solr 9 at an index that was built with VuFind' | ||
+ | |||
+ | Other dependency changes. Open SSL 3.0, which is being included in more and more distributions. It no longer supports Blowfish encryption by default, but Blowfish encryption is what VuFind has been using for a long time to encrypt ILS credentials unless configured otherwise. So, you're going to need to change that or things will stop working. But the web-based upgrade tool that most people use as part of every upgrade will detect the situation and guide you through what you need to do to fix it. So, shouldn' | ||
+ | |||
+ | Also significant is that Laminas has updated itself to use the PSR container library instead of container interop. So, PSRs are PHP community standards for interoperability and the standard for containers like the Laminas service manager has been around for a while, but it was predated by a non-official sort of interim version. And that's what's happening here. We're updating from the interim version to the real standard. This just means that any code that refers to the interop container namespace needs to be changed to PSR container. And one slight exception to that is interop container exception. That class becomes PSR container, container exception. So, the class name gains the word container. Anyway, this change has been made throughout VuFind, but if you have local custom factories, there' | ||
+ | |||
+ | We have made some updates to our dependencies. We have upgraded our common Marc library that we use for rendering Markdown. If you use Marcdown, please check Marcdown.ini and any custom code you have made to ensure that you are taking advantage of new features and that nothing has gotten out of date. Additionally, | ||
+ | |||
+ | Moving on to other changes, there are some updates in ILS drivers. The get config method, which reports the capabilities of the driver to the VuFind code, has been aligned across all the drivers to avoid weird problems related to inconsistency. Additionally, | ||
+ | |||
+ | Lastly, we have made some changes to indexing. We now support Marc in JSON storage of records in the Solr index by default instead of using binary Marc, which has a problem of dropping anything over 100,000 bytes and resulting in an invalid record. We used binary Marc in the past as it takes up less disk space than Marc XML, which is very verbose. | ||
+ | |||
+ | Marc in JSON is a compromise between binary Marc and Marc XML - it's not as concise as binary Marc, but it's more concise than Marc XML, and avoids the length limit. By default, VuFind' | ||
+ | |||
+ | Record drivers now differentiate between source identifier and search backend identifier, which is useful for Blender, a meta backend that talks to multiple sources. The set source identifier method has been deprecated and replaced with set source identifiers, | ||
+ | |||
+ | Some changes have been made to authentication classes due to the new username policy, and the VuFind validator CSRF class has been renamed to session CSRF and an interface created for alternate implementations of how CSRF works in the future. | ||
+ | |||
+ | Now, onto search-related changes. VuFind now passes around a new query parameter called SID on many of its URLs, which tracks the ID of the last search the user performed. This allows VuFind to consistently keep track of its state. Previously, the search ID was only stored in the session, which could result in strange behavior, particularly when a user had multiple tabs open and was performing actions in different tabs simultaneously. Although it is still not perfect and there may be some edge cases that cause issues, this update should make the system much more stable. Implementing this required changes to several classes, including the VuFind Record Tab Collection List, the Results Scroller Controller Plugin, and the VuFind Search Memory Class. If you have customized these components, please check that your customizations still work. | ||
+ | |||
+ | There has also been some refactoring of the hierarchical facet processing logic, which was previously built into some of the search results classes. This logic has now been moved out into a separate helper class to make it more reusable and reduce the size of individual classes. The way configuration files are loaded in the factories for Solr search backends has been changed, making things more consistent and simplifying some code. If you have a custom Solr search backend factory extending Abstract Solr Backend Factory, you may need to make some adjustments. The hide facet value listener in the Solr area of the code has been moved to the base area of the code because it does not contain Solr-specific logic and is now being shared between multiple backends. This is a minor change. | ||
+ | |||
+ | Moving onto search backend-specific changes, the internal format that VuFind uses to represent facet data has been standardized across the Solr, EDS, and Primo backends. Previously, each of these backends represented facets in their own unique ways, but standardizing them enables the blender to operate more straightforwardly. If you have custom EDS or Primo code working with facets, be aware that the data structures have changed slightly, so you may need to update them. However, we did not have the opportunity to standardize the facet data format for Summon, so it still has its own unique format and is not yet compatible with the blender. If you want to blend Summon results, some additional work is needed, but the community will be happy to work with you on that. | ||
+ | |||
+ | Lastly, the Solr connector class has been revised, so if you are directly accessing the Solr connector in any custom code, please check that it still works. Additionally, | ||
+ | |||
+ | Now moving on to internationalization changes. We've done some work to clean up some of the language files. And just a handful of translation strings have either been removed because they' | ||
+ | |||
+ | This slide shows a list of all the major changes. I'm not going to read it all to you. I will share this slide deck after the presentation. And all these notes are also in the changelog in the Wiki. So, if you're concerned about the details, feel free to take a look. | ||
+ | |||
+ | But the point is, if you use any of these translation strings in local custom code or templates, you'll need to make adjustments to keep everything up to date and ensure that it still gets translated. | ||
+ | |||
+ | Now on to theme-related changes. So, here's a big one. In VuFind 8, we introduced an icon system that allows us to render icons in a standard way and override them through configuration so you can change what icon is displayed in a given context just through a config change in your theme configuration. | ||
+ | |||
+ | But in VuFind 8, we only use this feature in a small number of places. In VuFind 9, every icon in the themes is using the new icon system. So, it is widespread. There are a few cases where icons have changed just because while reviewing it, we found a better option. So, you may notice some minor visual changes. | ||
+ | |||
+ | Also, the CSS around icons has been significantly revised. Particularly in cases for displaying a link containing both an icon and text. Historically, | ||
+ | |||
+ | But this required a lot of changes to a lot of templates. So, be aware of that when you're updating. And if you have any custom links with icons in them, you might need to style them to match the new markup style of the core. | ||
+ | |||
+ | Also, minor change, the icon view helper as defined in VuFind 8 had a dependency on the head link helper. We got rid of that in VuFind 9. So, it's all a little bit simpler. I doubt anyone has their own custom local icon view helper. But if you do, be aware of that change. | ||
+ | |||
+ | Additionally, | ||
+ | |||
+ | But if somehow you're doing something weird custom with get merged config, be aware of this change. | ||
+ | |||
+ | Another important but minor change is that in the account area, in the sidebar menu, if you have the AJAX status setting turned on, you'll get little notifications about things like overdue books or things ready for pickup. The CSS classes used to display some of those counts have been renamed to be a little bit more descriptive. Previously, it was okay, warn, and overdue. They have been changed to account info, account warning, and account alert, to be more general and specific at the same time. So, if you've customized those, anything related to that, just be aware of these name changes. | ||
+ | |||
+ | On the theme front, currency formatting has been refactored to its own service. Previously, the get user finds AJAX handler was using the safe money format view helper, but that was a weird use of a view helper. So, now the currency formatting has its own class and that class is shared between the things that need to do formatting of currency. That transitions nicely into other changes related to AJAX handlers. One small thing is the get user finds AJAX handler previously returned a key called value. This has been changed to total to make it a little bit more precise and consistent with other user status AJAX handlers. | ||
+ | |||
+ | The DOI lookup AJAX handler and the browsing DOI linker plugin have both had constructor signatures and factories changed. This is related to the new browsing functionality I mentioned earlier. So, that's all of those changes. | ||
+ | |||
+ | Let's talk about things that have been deprecated or removed. One important thing is that the PHP-based less compiler, which was deprecated before, is now fully removed. If you were compiling less into CSS with PHP, you were getting significantly different results than if you were using Node. And that was a problem. So, we just got rid of it to prevent people from getting confused. Use grunt less for now and that's going to be NPM run something in the near future. | ||
+ | |||
+ | We've also gotten rid of the hunt library, which was used to detect when the user scrolled and certain areas needed to have statuses plugged into them. But the native intersection observer does the same thing. We don't need a third-party library to detect when areas come into view anymore. So, hunt is gone. So, if you used hunt for something local, just be aware you can do that in a cleaner way now. | ||
+ | |||
+ | Additionally, | ||
+ | |||
+ | So, the ILS driver cache trait has been removed. You should use the more generic cache cache trait. The record link view helper is gone. Use record linker instead. And the VuFind search services all use the command pattern for every call. There were a bunch of more specific back-end methods like search and retrieve and so forth. Those are all gone. You have to use the command pattern now. But we had already refactored to use the command pattern in VuFind 8. So, hopefully, this is not a shock for anyone. | ||
+ | |||
+ | Now, some database related changes. First of all, the database schema has grown because we've added some new features like the ratings. So, you'll need to run a database upgrade to just add all the new stuff to your local database. This is part of the web based update process, which as I mentioned, I think everyone should already be doing anyway. | ||
+ | |||
+ | The VuFind DB table save search method has been changed. There was a bug that was causing duplicate searches in search history. And in order to fix it, we had to make some low level changes, including this minor method signature change. | ||
+ | |||
+ | Additionally, | ||
+ | |||
+ | Finally, some changes to VuFind' | ||
+ | |||
+ | First of all, we've modernized our code style standards to use PSR 12 instead of the pair standard. Really not a whole lot has changed. But there are a few minor things, particularly white space related that are a little bit different. So, if you use VuFind' | ||
+ | |||
+ | So, I strongly recommend running PHP against local code. It should detect if any of your local code has signatures that are out of sync with upstream code. And it's a great tool to find a variety of common problems as well. Also significant is we've added the local directory to our get ignore file just to prevent people from accidentally committing local code and pushing it upstream if they are using the default local directory. | ||
+ | |||
+ | So, if you actually rely on committing local code to Git as at Villanova we do for our local private repository, just be aware that you'll need to override that setting to tell Git that you really do want to commit local files. It's just now opt in instead of opt out. But it's not hard to do. If you need help with it, let me know. I can give you the details. | ||
+ | |||
+ | Finally, we've been making progress on improving the validation of the HTML that VuFind generates. One suggestion was to not include trailing slashes in HTML void elements. For example, a BR tag should just be BR, not BR slash. The slashes in void elements were a big thing in XHTML because they' | ||
+ | |||
+ | There are a few other miscellaneous things to be aware of. One important change is that previously, VuFind changed the present working directory to VuFind home as part of its bootstrapping process. We've gotten rid of it, but if you rely on VuFind home being the present working directory in any of your custom code, that's no longer something you can assume. You should use more explicit paths. Additionally, | ||
+ | |||
+ | Non-TAB record action handling in the route generator has been refactored to make it easier to add additional actions as part of local modules. If you've generated some custom record routes, you might want to look at your locally generated route code and you might be able to simplify it a little bit. | ||
+ | |||
+ | I just wanted to share a few resources. I recorded a video a couple of years ago about how you can do a VuFind upgrade using Git to automate some of the processes, like updating your configuration and local templates. You might find that helpful if you're about to dive into a major update to 9.0. Additionally, | ||
+ | |||
+ | If you have any questions or comments, we can talk about them now. If you want to reach out to me later, you can always email me or find me on the VuFind Slack. I'm happy to help in any way that I can. | ||
+ | |||
+ | --- | ||
+ | |||
+ | //This is an edited version of an automated transcript. Apologies for any errors.// | ||
---- struct data ---- | ---- struct data ---- | ||
properties.Page Owner : | properties.Page Owner : | ||
---- | ---- | ||
videos/vufind_9.0_-_what_s_new_what_s_changed.1682093736.txt.gz · Last modified: 2023/04/21 16:15 by demiankatz