openjournals/joss
49.5
Weak · 19 September 2026
4.4k
lines of production code
Ruby
with JavaScript
1
measurement over time
What this system is
This system is the editorial management platform for the Journal of Open Source Software (JOSS), designed to automate and streamline the peer-review lifecycle. It provides a web interface for editors and administrators to manage paper submissions, assign reviewers, track editorial workflows, and handle invitations, while integrating with GitHub to synchronize review issues and metadata. The application also serves public-facing content, including paper listings, a table of contents, and author resources, supported by an automated email notification system for editorial communications.
How it got here
2016 — Initial project scaffolding and core feature implementation
30 changes.
This period established the foundational structure of the JOSS editorial management application, including the Rails 7.2 backend, database schema, and core models for managing the peer-review lifecycle. It introduced essential frontend components, such as the editor dashboard and paper submission interfaces, alongside critical integrations with GitHub and ORCID for authentication and workflow automation. The work also encompassed the initial setup of email notifications, testing infrastructure, and administrative maintenance tasks to support the journal's operational needs.
2017–2021 — Editorial track system implementation
15 changes.
This period focused on implementing a structured editorial track system, including backend infrastructure for track configuration, GitHub team management, and feature flags. It introduced comprehensive UI updates for editor onboarding, invitation management, and an AEiC dashboard with track-specific filtering and activity tracking. The work was supported by extensive test coverage for the new editorial workflows and configuration components.
2022–2023 — Frontend modernization and UI enhancements
6 changes.
The project modernized its frontend stack by migrating to Import Maps, Hotwired Turbo, and Stimulus while integrating Bootstrap 4.3.1 for consistent styling. This period also introduced new client-side features such as table sorting, clipboard functionality, and autocomplete, alongside comprehensive system tests and new Table of Contents navigation views.
Features
Add Bootstrap 4.3.1 stylesheet components
The application now includes the core styling components from Bootstrap 4.3.1, specifically adding SCSS files for alerts, badges, breadcrumbs, buttons, cards, carousels, close buttons, code blocks, custom forms, dropdowns, forms, grid, images, input groups, jumbotrons, list groups, media objects, and modals. This provides the foundational CSS classes for these UI elements, enabling consistent styling and layout capabilities across the application.
app/assets/stylesheets/bootstrap-4.3.1 · high confidence
Add brand and functional SVG assets
The application now includes a set of new vector image assets in the public image directory. These additions provide official branding logos for ORCID, Creative Commons, and the Journal of Open Source Software (JOSS), alongside utility icons for GitHub, DOI, RSS feeds, and document types, as well as a placeholder file to maintain the directory structure.
app/assets/images · high confidence
Add recent invitations view to Editors in Chief dashboard
Editors in Chief can now view a list of recent invitations on their dashboard, including the editor, paper, status, and date. The view supports filtering by track and includes a new action to cancel pending invitations. Pagination is handled by Pagy, replacing the previous will\_paginate implementation.
app/views/invitations · high confidence
Added Rails application binstubs
The application now includes executable binstubs in the bin directory (bundle, rails, rake, rspec, setup, importmap) to manage dependencies and run commands. This ensures consistent execution environments by using local gem versions and simplifies setup and development workflows.
bin · high confidence
Added console helper to find papers by review or meta-review issue ID
A new \dat\ helper method has been added to the Rails console extensions, allowing developers to quickly locate a Paper record by searching for either its \review\_issue\_id\ or \meta\_review\_issue\_id\. This simplifies debugging and data inspection workflows within the Rails console environment.
lib/util · high confidence
Added default Rails public assets and error pages
The application now includes standard Rails public-facing files, including styled error pages for 404, 406, 422, and 500 status codes, as well as configuration files for web standards such as \manifest.json\ and \browserconfig.xml\ for mobile app-like experiences, an SVG icon, and a \robots.txt\ file for search engine indexing.
public · high confidence
Editor onboarding and invitation management interface
This change introduces the user-facing views for managing editor onboarding. The new editor registration form collects personal details, GitHub username, categories, and a description, with conditional support for selecting editorial tracks based on feature flags. Additionally, the admin dashboard now provides a centralized interface for sending invitations to new editors (with optional names), viewing pending invitations, and managing pending editors by approving them or sending GitHub organization invitations.
app/views/onboardings · high confidence
Initial CSS styling and layout for the application
This change introduces the foundational stylesheet architecture for the application, establishing the visual design and responsive behavior for key user-facing areas. It defines global typography (importing the 'Inter' font), smooth scrolling, and base element styles in the application manifest. Specific styles are added for the home page hero section, paper listing and detail views (including badge containers and metadata layout), the editor dashboard (styling tables, status indicators, and statistics), and the login interface. Additionally, a set of CSS animation utilities (fade-in, fade-out) is provided, with automatic disabling for users preferring reduced motion.
app/assets/stylesheets · high confidence
Initial Rails 7.2 application configuration and routing setup
This change introduces the foundational configuration for the JOSS application, upgrading the framework defaults to Rails 7.2 and configuring the Puma web server. It establishes the routing structure for the editorial dashboard, paper management, and API endpoints, while setting up the JavaScript stack with Import Maps, Stimulus, and Turbo. The configuration also defines environment-specific settings for database connections (PostgreSQL), caching (Redis), and external integrations like ORCID and GitHub.
config · high confidence
Initial Rails application configuration and pagination setup
This change introduces the initial set of configuration files for the Rails application. It establishes the \pagy\ gem as the pagination engine, configuring a default page limit of 20, enabling the \overflow\ and \searchkick\ extras, and setting overflow behavior to return an empty page. The application configures \Octokit\ for GitHub API interactions with automatic pagination enabled and loads credentials from environment variables. Authentication is set up via OmniAuth for ORCID, reading provider settings from a YAML file. Security and session configurations include JSON cookie serialization, filtering of sensitive parameters (passwords, emails, tokens) from logs, and a session expiration set to three months. Additionally, MIME types for SVG and PDF are registered, and a console helper module is loaded for development use.
config/initializers · high confidence
Initial database schema and seed data for editorial workflow
The application now includes a complete database schema (schema.rb) and seed data (seeds.rb) to support the core editorial workflow. The schema defines tables for Users, Editors, Papers, Tracks, Subjects, and various association and metadata tables (such as invitations, votes, and notes), establishing the data structure for managing peer review processes. The seed file populates the Editors table with initial board members, including their profiles, categories, and affiliations, providing a starting state for the editorial team.
db · high confidence
Initial email notification templates for authors, editors, and staff
This change introduces the first set of email notification templates for the JOSS platform, covering author submission confirmations, editor invitations, editor scope voting, weekly editor digests, track change notifications, editor onboarding, and internal submission alerts. Authors receive a confirmation that their paper is awaiting triage, with clear instructions to direct all support questions to the associated GitHub issue rather than replying to the unmonitored admin email. Editors are notified of new assignments, invited to vote on paper scope, and receive a weekly digest showing their assigned papers, recently published papers, and pending papers without an editor. Additional templates handle editor onboarding invitations and internal alerts when new papers are submitted.
app/views/notifications · high confidence
Initial implementation of application helper modules
This change introduces the foundational helper modules for the application, including ApplicationHelper, DispatchHelper, EditorsHelper, HomeHelper, InvitationsHelper, PaginationHelper, PapersHelper, and SessionsHelper. These modules provide core UI and logic support: ApplicationHelper manages flash messages, navigation links, profile banners, and social media links; DispatchHelper processes GitHub webhook payloads to update paper activities and comments; EditorsHelper calculates and displays editor availability and assignment counts; HomeHelper renders paper labels, vote summaries, and activity feeds; InvitationsHelper displays invitation statuses; PaginationHelper integrates the Pagy gem for navigation; and PapersHelper handles author formatting, reviewer links, paper state badges, and HTML sanitization. This establishes the view-layer logic for the initial Rails application structure.
app/helpers · high confidence
Initial implementation of the email notification system
The application now includes a foundational mailer infrastructure to handle various editorial and author communications. This change introduces the \ApplicationMailer\ base class and a \Notifications\ mailer that defines templates for key workflows, including notifying editors of new submissions, tracking track changes, sending editorial invites, confirming author submissions, and delivering weekly editor updates and scope check summaries.
app/mailers · high confidence
Initial project scaffolding and configuration for JOSS
This change establishes the foundational structure for the Journal of Open Source Software (JOSS) application. It introduces a Ruby 3.3.3 environment with a Procfile configured to run the Puma web server, alongside essential configuration files for RSpec testing, Pry debugging, and Read the Docs documentation builds. The update also adds a Code of Conduct and Conflict of Interest policy to define community standards, updates the README with comprehensive development setup instructions, and configures Git to ignore local artifacts and build outputs.
(repo-wide) · high confidence
Initial release of the JOSS editorial management application
This entry introduces the core data models and domain logic for the Journal of Open Source Software (JOSS) platform. It establishes the foundational structure for managing the peer-review lifecycle, including the Paper model with its state machine (submitted, under review, accepted, retracted, etc.) and the Editor model with its various roles (board, topic, emeritus, pending). The change also introduces Tracks and Subjects to organize papers, along with supporting models for Invitations, Votes, Notes, and Onboarding. Additionally, it adds the IssueComment model to track GitHub activity for spam detection and the User model to handle authentication and profile data.
ruby · high confidence
Initial release of the editorial management application
This change introduces the core application controllers that power the editorial workflow, including paper management, editor onboarding, and dashboard views. It establishes the authentication and authorization layer (requiring users, editors, AEiCs, and admins) and implements the API endpoints for the Whedon bot to manage paper states, assignments, and metadata. The update also adds public-facing features such as paper search and filtering, table of contents navigation, and SVG badges for editor and reviewer statistics.
app/controllers · high confidence
Initialize Stimulus application with autocomplete controller
The JavaScript application now initializes the Hotwired Stimulus framework. This includes registering the 'stimulus-autocomplete' controller globally, enabling autocomplete functionality for new paper subjects, and setting up eager loading for all controllers defined in the import map under the controllers directory.
app/javascript/controllers · high confidence
Introduction of ReviewIssue model for GitHub issue processing
A new ReviewIssue class has been added to the application models to facilitate the filtering and selection of review issues from GitHub. This helper class provides methods to download open and completed review issues, filtering out paused, withdrawn, or rejected items, and allows for retrieving issues assigned to specific editors. It also includes logic to extract editor and reviewer information from issue bodies and link issues to existing Paper records.
app/models · high confidence
Introduction of editorial track and repository management infrastructure
The application now supports a structured editorial track system, defined in lib/tracks.yml with categories such as Astronomy, Physics, and Data Science, each linked to specific editors and subject fields. This is enabled by new library modules: lib/journal\_features.rb provides a feature flag to toggle tracks, lib/repository.rb handles configuration loading and manages GitHub editor team invitations via the Octokit API, and lib/settings\_helper.rb adds a utility for accessing application settings.
lib · high confidence
New AEiC dashboard with track filtering and issue activity overview
The AEiC (Associate-Editors-in-Chief) dashboard now supports filtering by track via a configurable feature, allowing users to view submissions and activity for specific tracks. The main dashboard page displays accepted papers ready to publish and submissions flagged for scope review, with direct links to GitHub. A new 'Issue activity' view provides a leaderboard of accounts commenting on review issues, ranked by distinct issues, with options to filter by time window and view specific user comments. The menu has been updated to include links to editors, invitations, issue activity, and onboarding, with a track selector dropdown available when tracks are enabled.
_app/views/aeic\dashboard · high confidence
New Table of Contents navigation and listing views
Added a new Table of Contents section with views for browsing by year, volume, and issue, as well as a dedicated view for the current issue. The interface presents a hierarchical list of volumes and issues on the main index page, while individual year, volume, and issue pages display the papers contained within them using a shared list partial that shows paper titles, publication dates (YYYY-MM-DD), and DOIs, along with pagination controls.
app/views/toc · high confidence
New administrative and maintenance rake tasks
This release introduces several new Rake tasks in the \lib/tasks\ directory to support editorial operations and system maintenance. Editors can now receive automated weekly emails summarizing pending review issues (\editorials:send\_weekly\_emails\) and receive twice-weekly emails regarding submission scope queries (\editorials:send\_query\_scope\_email\). For preservation, a new \portico:deposit\ task handles archiving accepted papers via SFTP, ensuring deposits are only made if they do not already exist and marking papers as archived upon success. Additional utility tasks include \stats:most\_published\_authors\ for generating author statistics, \sync:cleanup\_paper\_branches\ to remove obsolete Git branches, \tracks:import:subjects\ and \tracks:import:dry\_run\ for managing journal tracks and subjects, and \utils:sync\_reviewers\_from\_metadata\ to synchronize reviewer data from paper metadata.
lib/tasks · high confidence
New application layout with analytics, social meta tags, and import maps
The application layout has been updated to include Google Analytics tracking, comprehensive social media meta tags (Open Graph and Twitter Cards) for better link previews, and multiple Atom feed links for paper submissions. The layout now utilizes JavaScript import maps for asset management and includes standard favicon and mobile app icons. Additionally, new layout templates for mailers have been added to support email notifications.
app/views/layouts · high confidence
New custom JavaScript modules for UI interactions and layout
This change introduces several new client-side scripts to enhance user interface behavior. It adds clipboard copy functionality that prevents default link actions, enabling a badge copy button with a responsive popover. It also implements client-side sorting for HTML tables with the class 'sortable', allowing users to click headers to sort data. Additionally, it adds logic to handle tab and menu selection states, enables dynamic resizing of paper containers, and manages form submission prevention for paper creation. Finally, it includes a jQuery loader and simple fade-in/fade-out animations for page transitions.
app/javascript/custom · high confidence
New editor dashboard and profile views
Editors now have access to a dedicated dashboard view that displays paper statistics, including counts of in-progress papers, incoming papers, and all papers, with a track filter for multi-track journals. The dashboard also features charts showing accepted papers per month and allows editors to filter statistics by specific editors or reviewers. Additionally, a new profile view allows users to update their email and GitHub username, and view their associated papers. The about page has been updated to include an AI usage policy, scope and submission requirements, and an editorial board listing.
app/views/home · high confidence
New shared view templates for editor profiles, flash messages, and review workflows
This change introduces a suite of new shared partials in the application's view layer to standardize UI components and review communication. Users will see consistent editor profile cards (including avatars, affiliations, and board titles) and standardized flash message alerts across the site. Additionally, the review process now utilizes new templates for generating issue bodies and meta-information, which include specific instructions for reviewers to generate checklists via bot commands, display status badges, and link to reviewer guidelines. A new scope update banner is also added to inform users of submission requirement changes, and a profile completion alert guides users to add their email and GitHub handle before submitting.
app/views/shared · high confidence
Behavioural changes
About page content restructured into reusable partials
The About page content has been refactored into two new view partials: \_general.html.erb, which defines the journal's scope, submission workflow, and documentation links, and \_partnerships.html.erb, which details affiliations with the Open Source Initiative and NumFOCUS. This change improves content modularity and ensures consistent presentation of the journal's identity and organizational relationships.
app/views/content/about · high confidence
Configures asset manifest for Import Maps and CSS bundling
The application now uses a JavaScript-based asset manifest (manifest.js) to explicitly link stylesheets and JavaScript files. This configuration links the main application.css file and sets up link trees for images, stylesheets, and JavaScript sources, supporting the migration to Import Maps for module loading.
app/assets/config · high confidence
Editor affiliations and issue comment tracking
The database schema now supports storing editor affiliations and tracking issue comments. A new migration adds an \affiliation\ column to the \editors\ table and populates it with institutional details for the current board and topic editors. Additionally, a new \issue\_comments\ table is created to record comments associated with papers, capturing details such as the commenter's login, issue ID, comment kind, role, and timestamp.
db/migrate · high confidence
Editor management and track administration UI overhaul
The editor management interface has been significantly restructured to support a more detailed editor profile and flexible assignment limits. The new editor form and profile views allow administrators to set a 'Max number of assignments' (replacing previous availability flags), add availability comments, assign a 'buddy' editor, and manage categories, affiliations, and tracks. The editor list now displays start dates, current editing load, remaining capacity, and pending invites, with sortable columns. Additionally, a new track management section has been added, allowing admins to create, edit, and delete tracks, assign Associate Editors in Chief (AEiCs) to tracks, and handle paper reassignment when deleting a track.
app/views/editors · high confidence
Initial Rails environment configuration files added
The application now includes explicit configuration files for development, test, and production environments. Development mode enables code reloading, local error reporting, and local file storage for assets. Production mode enforces SSL, configures Sendgrid for email delivery, sets the application host, and explicitly disables YJIT. Test mode uses an in-memory cache, disables forgery protection, and routes emails to a test delivery method.
config/environments · high confidence
Migrate JavaScript to Import Maps with Turbo and Bootstrap
The application's JavaScript loading strategy has shifted to use Import Maps, consolidating dependencies into a single entry point. This change introduces Hotwired Turbo for navigation, Bootstrap for styling, and Chartkick for data visualization, while also organizing custom scripts for loading states, editors, home page, papers, sorting, and transitions.
app/javascript · high confidence
Redesigned paper submission and review interface
The paper submission workflow and editorial review interface have been significantly updated. Authors now use a new submission form that supports multiple content types, subject autocomplete, and explicit checks for code of conduct and compilation. For editors, the paper show page now features dedicated sections for scope voting with local storage persistence for comments, an editor notes system, and administrative controls to manually change paper states and metadata. The public-facing paper listing and detail views have also been refreshed to display status badges, DOI links, and citation information more clearly.
app/views/papers · high confidence
Redesigned site navigation and footer with updated branding and ISSN display
The site's layout components have been updated to improve navigation and display current organizational affiliations. The new footer now explicitly displays the application's ISSN, links to the Table of Contents, and clarifies the project's status as an affiliate of the Open Source Initiative and a NumFOCUS-sponsored project under Open Journals. The navigation bar has been restructured to include a dedicated AEiC dashboard link for appropriate users, updated login/logout flows (using POST for ORCID login), and a consolidated RSS feed dropdown for accessing atom feeds of active and published papers.
app/views/content/layout · high confidence
Test coverage
Added RSpec test configuration files; Added controller and routing tests for editorial dashboard, badges, dispatch, editors, papers, subjects, TOC, and votes; Added model specifications for editorial workflow entities; Added system tests for editor management and profile pages; Added system tests for editorial dashboard, onboarding, and track management; Added system tests for paper search, show pages, and track management; Added test coverage for Repository and Tracks configuration; Added test factories for core domain models; Added test support helpers for authentication, feature flags, and git command mocking; Added tests for editor availability helper; Added tests for the Notifications mailer; Added view specs for editor forms and show page; Added view specs for paper submission forms and display pages.
Dependencies
Upgrade to Rails 7.2.3.1 and Ruby 3.3.3
The application runtime and framework have been upgraded to Ruby 3.3.3 and Rails 7.2.3.1. This update brings the app to the latest stable versions, ensuring compatibility with modern standards and including the latest security patches. The dependency manifest also reflects updates to key libraries such as Pagy (9.4.0), Honeybadger (5.2.0), and the addition of modern frontend tooling like Importmap, Turbo, and Stimulus.
(dependencies) · high confidence
Housekeeping
Added empty placeholder directories for vendor assets; Initial commit of Rails application.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 50.
Lenses
- Code Health 60
- Architecture 84
- Maturity 55
- Readiness 58
- Security 73
- Domain Modelling 39
- Accessibility 59
Changes since last survey
- 300 commits — 269 feature/other, 31 fixes
By area
- (repo) — 97 commits
- (root) — 46 commits
- app/controllers — 29 commits
- app/views — 26 commits
- docs/submitting.md — 11 commits
- docs/example_paper.md — 9 commits
- docs/paper.md — 8 commits
- docs/editing.md — 7 commits
- docs/review_criteria.md — 7 commits
- app/assets — 6 commits
- app/models — 6 commits
- docs/sample_messages.md — 5 commits
- .github/workflows — 4 commits
- app/helpers — 4 commits
- docs/editor_onboarding.md — 4 commits
- lib/tasks — 4 commits
- config/environments — 3 commits
- docs/editorial_bot.md — 3 commits
- spec/controllers — 3 commits
- app/javascript — 2 commits
Notable commits
- fix: Adding fixes for #1439 (#1441)
- fix: CI fix
- fix: Fix CWE-862: add authorization check to query_scoped action
- fix: Fix Pagy::VariableError when page param is an unsubstituted template string
- fix: Fix clipboard copy buttons broken in Firefox and causing page scroll in Chromium
- fix: Fix copying text to clipboard
- fix: Fix inara link from ReST style to Markdown style
- fix: Fix link
- fix: Fix syntax for multiple affiliations
- fix: Menu width fix
- fix: Merge pull request #1357 from sneakers-the-rat/bugfix-names-with-periods
- fix: Merge pull request #1371 from openjournals/typo-fix
- fix: Merge pull request #1423 from jromanowska/fix-broken-pandoc-link
- fix: Merge pull request #1462 from openjournals/copilot/fix-3a4e0607-40ec-4b1e-b0b5-05935792ffb4
- fix: Merge pull request #1502 from openjournals/wentao-fix-typos-in-readme
- fix: Merge pull request #1507 from openjournals/fix-clipboard-firefox-reload
- fix: Merge pull request #1509 from openjournals/fix-reviewer-badge-counts
- fix: Merge pull request #1514 from openjournals/fix-pagy-invalid-page-param
- fix: Merge pull request #1518 from openjournals/fix-bot-abuse-errors
- fix: Merge pull request #1519 from openjournals/fix-bot-abuse-errors
- …and 280 more
Architecture
- 0 containers · 1 bounded contexts · 0 dependency edges (baseline)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
openjournals/joss was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit fed2b60e0770e7a6e6005499d5cc23fa5790304c — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.