This
is the first alpha release of Skosmos 3.0 that provides an early peek
into the upcoming final 3.0 release. It is mainly intended for Skosmos
users who want to plan ahead for the 3.0 release. You can use it to test
how Skosmos 3 works with your vocabulary and how to set it up on local
infrastructure.
There are many changes in Skosmos 3 compared to earlier 2.x releases.
The front-end layer has been completely reimplemented using frameworks
such as Bootstrap 5 and Vue.js 3, making the code easier to maintain.
The new user interface provides roughly the same functionality as
Skosmos 2, but with a fresh visual style, improved accessibility and
automated Cypress front-end tests. The PHP back-end code, including the
REST API, remains mostly the same as in Skosmos 2, though with updated
dependencies and more emphasis on consistent code style. More
information about the goals of Skosmos 3 and the technical
implementation can be found in the Skosmos 3.0 Architecture. You can also watch the ISKO UK webinar presentation What's New in Skosmos 3 for an overview of the changes.
How to test this release
If you want to try out Skosmos 3 without installing it yourself, you can visit the public test instance at https://test.dev.finto.fi/ . This instance is tracking the main branch, so it is always up to date w.r.t. the current development version of Skosmos 3.
You can also install it for yourself. There is no install tutorial
yet specifically for Skosmos 3, but you can follow the general InstallTutorial, but checkout the Skosmos code either from the main branch or the v3.0-alpha.1
tag that points specifically to this alpha release. However, you should
use PHP version 8.1, 8.2 or 8.3. In addition to installing the Composer
dependencies for the PHP back-end, you will also need to install the
front-end dependencies using npm install.
Alternatively, you can use the Dockerfile to build and run a Docker image of Skosmos 3. See the Docker install instructions.
What is implemented, what is missing?
Skosmos 3 development is organized thematically using Epic-style
issues. Each Epic describes the requirements for an important part of
the functionality. Below, each Epic is listed with a summary of the
completed requirements as well as the most important functionality that
is still missing in this alpha release.
Page types
Landing Page
#1480
- Implemented: Basic multi-vocabulary layout and functionality
- Missing functionality:
- Single vocabulary layout
- Customizable content boxes
- Customizable logo
Vocabulary Home Page
#1482
- Implemented: Basic layout and functionality
- Missing functionality: Many details and edge cases
Concept Page
#1484
- Implemented: Basic layout and functionality, mappings component
- Missing functionality:
- Language tags always shown when explicit language tags are configured
- Special support for deprecated concepts
- Tooltips for property labels
Search Results Page
#1481
- Implemented: Basic search result listing for vocabulary search
- Missing functionality:
- Waypoints-style loading of more results
- Filtering of search results using different criteria
- Global search results page
About Page
#1748
- Implemented: Very basic static About page
- Missing functionality:
- Customizable content
- Layout still needs work
Feedback Page
#1749
- Implemented: Basic layout and functionality
- Missing functionality:
- Length limits for feedback form
- Option to disable Feedback page
- Accessibility improvements
Header and Footer
#1740
- Implemented: Very basic header and footer
- Missing functionality:
- Layout still needs work
- Tooltips
- Better accessibility
- Customizable logo
Search functionality
Vocabulary Search Bar
#1514
- Implemented: Basic layout and functionality, autocomplete
- Missing functionality:
- Caching for autocomplete
- Search tips
Global Search Bar
#1489
- Implemented: Nothing yet in this release, but development is ongoing.
Sidebar and tabs within it
Sidebar
#1747
- Implemented: Basic functionality
- Missing functionality:
- Focus and hover handling
- Accessibility: screen reader support & keyboard navigation
Alphabetical View Sidebar Tab
#1563
- Implemented: Basic functionality, dynamic loading of new content, partial page loads
- Missing functionality:
- Full alphabetical index (for small vocabularies)
Hierarchical View Sidebar Tab
#1521
- Implemented: Basic functionality, partial page loads
- Missing functionality:
- Showing concept schemes in hierarchy (for vocabularies with multiple concept schemes)
- Highlight concepts from outside the vocabulary
Groups View Sidebar Tab
#1704
- Implemented: Basic functionality, partial page loads
- Missing functionality:
- Showing notation codes in group hierarchy
- Showing member concepts if the group contains subgroups on the same level
New and Deprecated Sidebar Tab
#1735
- Implemented: Basic layout and functionality
- Missing functionality:
- Fallbacks when concept labels are not available in the right language
- Showing notation codes in the New and Deprecated list
Infrastructure / general
Translation Infrastructure
#1712
- Implemented: Basic functionality for translating UI messages and managing translations on Lokalise
- Missing functionality:
- UI translations to most languages are out of date because the codebase has changed a lot
Plugin Support
#1751
- Implemented: Nothing yet, plugin support still needs to be designed and implemented!
CSS/Style
#1752
- Implemented: Basic stylesheets
- Missing functionality:
- Theming / color scheme support
- Checking for redundant or unused CSS rules
Mobile Layout
#1753
- Implemented: Not much yet, though the most important pages have a responsive layout
Search Engine Optimization
#1533
- Implemented: Basic HTML title and description metadata
- Missing functionality:
- Update HTML metadata elements after partial page load
Next steps
This first alpha release of Skosmos 3 will be followed by more releases:
- 3.0-alpha.2 to be released in May 2025
- 3.0-beta.1 to be released in August 2025
- 3.0-beta.2 to be released in October 2025
- Final 3.0 to be released in December 2025
For more details, see the Roadmap.
Note that some Skosmos 3 features, for example customization and
plugin support, will likely not be completed by the time of the Skosmos
3.0 release; their development will continue in subsequent 3.x releases
in 2026.
For a full list of changes between 2.x and this release, see the list of issues and PRs in the 3.0-alpha.1 milestone.
What's Changed
- Permit GitHub Actions CI to write Packages, needed for php-build caching by @osma in #1290
- drop useless SKOSMOS_VERSION build arg from Dockerfile by @osma in #1293
- Update to Bootstrap 5 by @kinow in #1182
- drop unused URI.js dependency by @osma in #1300
- Fix typeahead and handlebars template. by @kinow in #1303
- Updated Handlebars v4.7.6 -> v4.7.7 by @joelit in #1305
- Fix font color and size after Bootstrap 5 upgrade by @osma in #1304
- Sanitize language switching URLs by @osma in #1307
- Store current Skosmos version in composer.json by @osma in #1308
- Use copy to clipboard icon from Font Awesome Free set by @osma in #1309
- fix font size of autocomplete entries after Bootstrap 5 upgrade by @osma in #1310
- add Latvian translation by @osma in #1313
- Upgrade to PHPUnit 9, drop PHP 7.2 support by @osma in #1312
- fix 'Any language' choice in language selection menu by @osma in #1315
- Use explicit $.parseHTML() to avoid JS syntax error by @osma in #1316
- provide translations for skosmos:marcSourceCode by @kouralex in #1187
- Fix sidebar search, post bootstrap by @kinow in #1314
- use Font Awesome fonts for icons by @osma in #1319
- Fix SKOS-XL tooltips by @joelit in #1317
- Create SECURITY.md by @joelit in #1318
- minor CSS tweaks after Bootstrap 5 update by @osma in #1321
- Modify checklist in PR template by @osma in #1322
- Fix typeahead templates in the search auto-complete by @kinow in #1326
- Fix highlighting of the New tab after Bootstrap 5 upgrade by @osma in #1328
- Avoid introducing extra whitespace around literal values on the concept page by @osma in #1330
- Update translations from Transifex by @osma in #1331
- API docs: Add 'uri' parameter to groupMembers by @danmichaelo in #1332
- Add Northern Sámi (se) UI translation by @osma in #1353
- Add failure message explaining how to fix Composer/git version mismatch by @osma in #1358
- Use the --font-size variable for versal, and set width: auto for the restore-breadcrumbs link by @kinow in #1357
- Graceful handling of partial SKOS XL data for concept labels by @osma in #1356
- Refresh contributing guidelines to match current situation by @osma in #1359
- Fix header bar search form by @joelit in #1354
- fix display of DC properties in reified property value tooltips by @osma in #1362
- Issue1347 malihu custom scrollbar fix by @Vainonen in #1360
- Remove jQuery UI dependency by @osma in #1365
- Replace qtip JS library by a pure CSS tooltip by @kinow in #1324
- Upgrade to jQuery 3.6 by @osma in #1352
- Modify counting for search limit in typeahead (patching it locally) by @kinow in #1369
- upgrade Twig to 2.15.3 or newer by @osma in #1370
- Tooltips are now conditional on the hierarchy by @kinow in #1371
- fix auto-scrolling and highlighting current concept in hierarchy by @osma in #1372
- scroll hierarchy to selected concept instead of children by @osma in #1374
- Avoid slow HTML parsing in hierarchy sort function by @osma in #1383
- Fix running git commands in CI tests under GitHub Actions by @osma in #1397
- Add support for PHP 8.1 by @kouralex in #1385
- Increased table width to 600px by @joelit in #1402
- Adjust skosmos:showNotation setting to be obeyed in autocomplete dropdown by @kouralex in #1393
- Edited the link so that it leads to the templates by @nikopartanen in #1421
- fix conversion of DateTime to string in getContainsHtml by @osma in #1423
- Enhance the feature request template with additional instructions by @osma in #1419
- Don't crash on incomplete vocabulary configuration by @nichtich in #1409
- update German & Northern Sámi translations + English language template by @osma in #1424
- Code validation with Standard JS by @miguelvaara in #1431
- Standardjs GitHub action by @miguelvaara in #1441
- Add vue components for vocab statistics by @UnniKohonen in #1444
- First JS variables under SKOSMOS namespace. by @joelit in #1438
- Upgrade some GitHub actions by @osma in #1445
- Add Cypress e2e tests by @osma in #1442
- expand Cypress tests to cover all current page types + set baseUrl by @osma in #1456
- Language negotiation fixes for Skosmos 3 by @osma in #1458
- Add vue component for sidebar alpha tab by @UnniKohonen in #1454
- Removed translation components and mo files by @Vainonen in #1461
- Partial page load for concepts in alphabetical index by @UnniKohonen in #1464
- About.twig updated by @joelit in #1460
- Fix updating SKOSMOS variable during partial page load by @UnniKohonen in #1467
- Add twig template for error page by @UnniKohonen in #1471
- Cyperess axe tests by @miguelvaara in #1463
- Unnecessary file removed from the root of the application by @miguelvaara in #1494
- Skosmos 3: Use Apache Jena Fuseki docker image by @osma in #1495
- Added Symfony translation component by @Vainonen in #1466
- Issue1497 unified cypress folders with other test folders by @miguelvaara in #1501
- fix implementation of ConceptPropertyValue.getLang + add test by @osma in #1507
- Skosmos 3 docker: upgrade to Ubuntu 22.04 base image and PHP 8.1 by @osma in #1498
- CheckA11y function parameters with nulls and cypress folder tuning by @miguelvaara in #1506
- Reimplement sidebar tabs and their configuration by @UnniKohonen in #1493
- Use dockerized Fuseki for PHPUnit tests by @osma in #1496
- Use dockerized Skosmos for Cypress tests by @osma in #1509
- fix: set correct SKOSMOS_SPARQL_ENDPOINT for Skosmos container by @osma in #1517
- Run Cypress under GitHub Actions & install Node dependencies in Docker image by @osma in #1518
- Add feedback template by @UnniKohonen in #1510
- Added trans filter to templates by @Vainonen in #1520
- Fix Vue component problems + Cypress tests for alphabetical index by @osma in #1522
- Vocabulary search list Twig-templates by @joelit in #1470
- Added a test vocabulary cut from YSO (Archaeology Group) and its conf… by @miguelvaara in #1531
- Issue 1521 hierarchy tab vue component by @UnniKohonen in #1524
- Show deprecated concepts without replacement in change list (skosmos 3) by @osma in #1534
- Top-level docker-compose.yml for Skosmos 3 by @osma in #1545
- PHP 8.2 support for Skosmos 3 (avoid dynamic properties) by @osma in #1546
- Fix the layout for vocab home and concept page by @joelit in #1547
- Rename little-yso test vocabulary to simply YSO and reconfigure it by @osma in #1550
- Harden JSONP callback filter (Skosmos 3) by @osma in #1554
- Concept page template and Cypress tests by @osma in #1549
- Add styling to sidebar by @UnniKohonen in #1556
- First implementation of vocabulary search bar Skosmos 3 by @joelit in #1551
- Better template and styling for the concept mappings component by @osma in #1552
- fix guessVocabularyFromURI when some vocabulary has no URI space (Skosmos 3) by @osma in #1560
- Add E2E test: navigate from front page to vocabulary search and concept page by @miguelvaara in #1555
- Add logos for Skosmos 3 by @UnniKohonen in #1562
- Update README.md and SECURITY.md after branch rename 'skosmos-3' to 'main' + upgrade CodeClimate action by @osma in #1579
- Fix diacritic letters in alphabetical index (Skosmos 3) by @osma in #1580
- Concept page features: scopeNotes with HTML, hide subprops of hiddenLabel, timestamps by @osma in #1583
- Tweaks for the search bar layout by @joelit in #1584
- Breadcrumbs on concept page by @osma in #1586
- Upgrade to Twig 3.8 by @osma in #1588
- Removed a troublesome comment line by @joelit in #1592
- Enable Axe accessibility tests for about page by @miguelvaara in #1593
- removed trailing commas from SKOSMOS object by @joelit in #1594
- Copy to clipboard functionality for concept page by @osma in #1590
- fix problem introduced by docker compose 2.24.6 by @osma in #1599
- Scheduled Actions CI run every Monday morning by @osma in #1600
- Order mappings on concept page first by source vocabulary, then by label by @osma in #1601
- Updated Cypress to the latest version 13.6.6 by @joelit in #1604
- Fix height of sidebar by @UnniKohonen in #1603
- Enhanced Axe configuration to ensure compliance with WCAG 2.1 AA requirements (Issue1606) by @miguelvaara in #1607
- Axe tests for the feedback page (Issue #1582) by @miguelvaara in #1602
- Axe tests for the landing page (Issue #1582) by @miguelvaara in #1608
- Add Cypress tests for partial page load by @osma in #1605
- Add automatic scrolling to hierarchy view by @UnniKohonen in #1610
- Reverts back to the original implicit usage of WCAG rules and
changes the parameterization of CLI and GUI functions to their original
state (#1611) by @miguelvaara in #1612
- implement fetchWithAbort and use it for partial page load, mappings & alphabetical index by @osma in #1609
- Concept page mappings: style and visibility fixes by @osma in #1613
- Implement autocomplete for search by @joelit in #1589
- Make LOC HTTP prefLabel header parsing case-insensitive (Skosmos 3) by @osma in #1620
- Fixed accessibility issues reported by Cypress and added variables
to Twig templates indicating the loaded template (issue1582) by @miguelvaara in #1615
- Copy to clipboard button for notations by @joelit in #1614
- Search result tweaks for autocomplete by @joelit in #1623
- Add infinite scrolling to alphabetical index by @UnniKohonen in #1624
- Sort concepts in hierarchical view by label and locale by @UnniKohonen in #1626
- Redesign initialization of Model and GlobalConfig to avoid chicken-and-egg situation by @osma in #1628
- Fetch letters and concepts based on content language by @UnniKohonen in #1630
- Setting the language in the search bar by @joelit in #1629
- Add loading spinners to Vue components by @UnniKohonen in #1636
- Hierarchical view style fixes by @UnniKohonen in #1638
- Add notation codes to sidebar by @UnniKohonen in #1637
- SEO: improved titles for Skosmos 3 generated HTML pages by @osma in #1625
- Fix sidebar width on window resize by @UnniKohonen in #1639
- use PUT for initialising Fuseki to ensure existing vocabularies are overwritten before running tests by @osma in #1646
- SEO: long title on landing page (skosmos:serviceNameLong configuration setting) by @osma in #1644
- Fix sidebar Vue component sizing by @UnniKohonen in #1645
- SEO: descriptions on landing, about and feedback pages by @osma in #1647
- Use setup-php instead of php-actions so that all CI steps are run using the same PHP version by @osma in #1649
- Order hierarchy by notation by @UnniKohonen in #1651
- Increase HTTP timeout in test configuration to fix flaky Cypress mapping tests by @osma in #1652
- Bootstrap search bar by @joelit in #1650
- Add notation codes to concept page by @UnniKohonen in #1654
- Refactor: Convert linkUrlFilter to a Twig extension class by @osma in #1655
- SEO: vocab description, site name, type, canonical URL by @osma in #1657
- SEO: add description metadata to concept page by @osma in #1659
- Css fixes for the footer bar by @joelit in #1661
- Css fixes for background for different page types by @joelit in #1667
- Override default property labels on concept page by @UnniKohonen in #1658
- Css fixes for the header bar by @joelit in #1668
- Fix deprecated concept pages (Skosmos 3) by @osma in #1674
- Upgrade to sweetrdf/easyrdf 1.13.* to fix Turtle fragment URIs by @osma in #1675
- Add PHP 8.3 support + change Docker base image to Ubuntu 24.04 with PHP 8.3 by @osma in #1682
- Css fixes of the landing page vocab list by @joelit in #1669
- Use Symfony Translations to synchronize translations with Lokalise by @osma in #1648
- Add cypress tests for alphabetical index Vue component by @UnniKohonen in #1688
- Updated vocab load curl command to v8.5.0 compliant by @joelit in #1695
- Vocab search language menu by @joelit in #1689
- Add cypress tests for hierarchy Vue component by @UnniKohonen in #1694
- Reimplement vocab home using Bootstrap Grid instead of tables by @osma in #1697
- Translation functionality in Twig templates by @miguelvaara in #1690
- Updates to php library dependencies by @joelit in #1698
- Don't HTML encode quotes in REST API callback, to fix ONKI Selector (Skosmos 3) by @osma in #1706
- Issue1709 frontend dependencies by @joelit in #1715
- Set the UI language cookie by @joelit in #1717
- Set HTTP user-agent to 'Skosmos' when performing requests by @osma in #1711
- Extract Translation Keys from JavaScript Files (#1713) by @miguelvaara in #1716
- SKOS XL popup on concept page by @osma in #1718
- Implement basic functionality of groups view using Vue by @UnniKohonen in #1719
- Remove the search language cookie by @joelit in #1720
- Upgrade to PHPUnit 10 by @osma in #1725
- Highlight currently selected concept in alphabetical list sidebar by @osma in #1732
- Implement groups view layout and styling by @UnniKohonen in #1729
- Simplify search page URL construction by @osma in #1730
- Add tests for groups component by @UnniKohonen in #1733
- Issue1724 autocomplete result list by @joelit in #1726
- Translations for tab-alpha.js and vocab-search.js (excluding Aria tags) (#1722) by @miguelvaara in #1723
- Responsive layout for the concept page by @osma in #1742
- Implementing new and deprecated view basic functionality using Vue by @UnniKohonen in #1750
- Tab-alpha's Aria tag translations by @miguelvaara in #1741
- Responsive layout for the vocabulary home page + layout adjustments by @osma in #1754
- Reorganized the usage of the main element in vocabulary search page by @joelit in #1756
- Fix scrollbar styling and visibility by @UnniKohonen in #1759
- Fixed dropdown menu width by @joelit in #1762
- Synchronize translations with Lokalise by @osma in #1760
- Truncate long search result lines by @joelit in #1744
- Sub of 1712 translations of Aria tags in tab-hierarchy by @miguelvaara in #1757
- Implement infinite scrolling in new and deprecated view by @UnniKohonen in #1766
- Translations of Aria labels in vocab search Vue component by @UnniKohonen in #1774
- Add wrapper scripts for common translation operations by @osma in #1770
- implement event listener for notifying when translations are ready by @osma in #1772
- Translations in groups view by @UnniKohonen in #1777
- Upgrade to Jena Fuseki 5.3.0, including a new Dockerfile by @osma in #1778
- Translations of Aria labels in new and deprecated view by @UnniKohonen in #1776
- Visual layout improvements especially for landing page by @osma in #1780
New Contributors
Full Changelog: v2.14...v3.0-alpha.1