The LLNL Software Catalog website is an open source project. We welcome contributions via pull requests as well as questions, feature requests, or bug reports via issues. Contact our team at open-source@llnl.gov with any questions. Please also refer to our FAQ and Code of Conduct.
To contribute to this website, please create a fork of llnl.github.io. Our CI tests are automatically run against every new PR, and passing all tests is a requirement for merging. In general, please:
- Create your branches off the
repo:main
branch. - Clearly name your branches, commits, and PRs to help us manage queued work in a timely manner.
- Articulate your commit messages clearly (e.g.,
Adds new privacy policy link to README
). - Commit your work in logically organized commits, and group commits together logically in a PR.
- Title each PR clearly and give it an unambiguous description.
- Review existing issues before opening a new one. Your issue might already be under development or discussed by others. Feel free to add to any outstanding issue/bug.
- Be explicit when opening issues and reporting bugs. What behavior are you expecting? What is your justification or use case for the new feature/enhancement? How can the bug be recreated? What are any environment variables to consider (e.g., browser, OS)?
Before you begin, make sure you have working installs of Git, Ruby, and Bundler. After you fork the repo, make sure you are in the directory you just created by running cd llnl.github.io
Then you can use bundler
to install the Ruby dependencies (see the Jekyll installation docs for step-by-step guides to setting this up):
bundle install
Running this will install everything in your Gemfile (including Jekyll).
bundle exec jekyll serve
Finally, open http://localhost:4000 in a web browser.
Note: The RADIUSS website and product catalog “live” on this URL but are managed by a separate repo.
Tips
The gems in your sourcefile get updated frequently. It is a good idea to occasionally run bundle update
from within your project’s root directory to make sure the software on your computer is up to date.
Sometimes there can be dependency conflicts if your local version of Ruby is different from this repo or GitHub pages deployment settings. You can find the version number of each of GitHub Page’s current dependency’s here. You can often avoid dependency issues if you use the same versions, including for Ruby.
For example, the default version of Ruby used to deploy GitHub Pages on github.com as of 2021-04-08 was Ruby 2.7.1. If you tried running Ruby version 3.0.0 locally on macOS, you’ll need to do some extra steps to correctly install the dependencies for this repository. You’d need to run bundle add webrick
as it is no longer a prepackaged dependency with Ruby in 3.0.0. You may also need to run gem install eventmachine -- --with-openssl-dir=/usr/local/opt/openssl@1.1
as MacOS >10.14 doesn’t use OpenSSL from the same path as is still assumed to be in by eventmachine.
Spellcheck
The GitHub workflow currently includes an action for a Rust tool called crate-ci/typos that will spellcheck all posts and pages. If your CI fails, spelling suggestions will be shown and you can manually update the mistakes, or install typos and have all errors fixed automatically:
typos ./_posts ./README.md ./about/faq.md ./about/contributing.md --write-changes
If a word needs to be ignored, see instructions for adding an entry to the _typos.toml file.
A JSON file contains the info for the software catalog categories displayed on the home page: title, Font Awesome icon, description. If any changes need to be made to these categories, just edit the data in the JSON and the home page will reflect your changes automatically. (These catalog categories/topics are distinct from the tags on News posts.) The list below contains each category’s description to ensure consistency in phrasing and length. Note that in some cases the category is plural, but the corresponding tag is singular.
Note: The All Software
category appears at the top of the list by virtue of a blank space before the first letter in the title
field (see the JSON file linked above). All other categories appear in alphabetical order.
Category | Description | Tag(s) | FA icon |
---|---|---|---|
All Software | Browse all LLNL open source projects | (no tags required) | (image: logomark-software.svg ) |
AI & Machine Learning | Integrate artificial intelligence and machine learning into scientific applications | artificial-intelligence , deep-learning , machine-learning , neural-network |
fa-brain-circuit |
App Infrastructure | Browse tools for basic functionality common in HPC codes | app-infrastructure |
fa-gear-complex-code |
Applications | Browse scientific simulation codes and IT management tools | application |
fa-laptop-code |
Build Tools | Automate and simplify complex dependencies and deployments | build-tools |
fa-tools |
Data Management & Viz | Manage visualizations with robust features and configurable analysis | data-management , data-viz |
fa-display-chart-up |
Docs & Tutorials | Learn more about our software via documentation, examples, and tutorials | docs , documentation , tutorial , tutorials |
fa-file-lines |
File Systems | Configure data storage and retrieval for more efficient workloads | file-system |
fa-folders |
Math & Physics Libraries | Optimize solvers, higher order methods, and AMR frameworks | math-physics |
fa-books |
Performance & Workflow | Manage and scale complex workflows, tracking, and data collection | performance , workflows |
fa-gauge-high |
Portable Execution & Memory Mgmt | Automate data motion and memory allocation on advanced architectures | memory-management , portability |
fa-briefcase |
Proxy Applications | Prepare for testing and porting applications | proxy-application |
fa-clone |
System Software | Manage laptop and desktop computer systems, HPC clusters, and parallel environments | system-software |
fa-floppy-disk |
A repository can have up to 20 tags. In general, topic tags raise a repo’s visibility on GitHub and help users find related projects. The following tags, which are not associated with the home page categories above, are recommended for LLNL repos: amr
(adaptive mesh refinement), arbitrary-lagrangian-eulerian
(ALE), benchmark
, biology
, checkpoint
, chemistry
, cmake
, compiler
, cpp
(C++), data-analysis
, energy
, exascale-computing
, finite-elements
, fortran
, gpu
, graph
, high-dimensional-data
, hpc
, java
, javascript
, library
, materials
, materials-science
, matlab
, molecular-dynamics
, monte-carlo
, mpi
, natural-language-processing
, openmp
, parallel-computing
, pde
, python
, seismology
, shell
, simulation
, solver
, templates
, testing
, uncertainty-quantification
.
Repos that appear on the RADIUSS site are listed in that repo’s contributor-ci.yaml
file.
To add a new category to the catalog:
- Update the list above with the category name (in alphabetical order), description, and tag.
- Update
category_info.json
with category metadata such as Font Awesome icon, descriptive blurb, and corresponding topic(s). - Tag repos with the new topic as appropriate.
To add/change an icon for a category: Go to the category_info.json
file and modify the icon
property of the given category. To specify a Font Awesome icon, use the fa
property listing the full CSS class for the Font Awesome Icon. To specify a file as an icon, use the path
property to specify the absolute path to the icon. If the URL to icon is not in this repository, also specify the domain in the path
.
To add your repo to the catalog: See the FAQ How do I include my repo in the LLNL organization and/or this website’s catalog?
Project Tags
See the FAQ How do I include my repo in the LLNL organization and/or this website’s catalog? for information about tagging an individual repo. See the topic How do I update or use the catalog categories? above for information about managing the categories.
Project Logos
The home page displays a logo next to each repo when they appear under the topic categories. If a repo has its own logo, that should display. If not, then the LLNL logo displays by default. There are two steps to adding a logo to this website:
1. Upload the image file.
Repo logo files should follow a naming convention and be added to the logos directory. All files must be in .png
format.
- Repository logo:
<repo_name>.png
- Directory:
/assets/images/logos/<org name>
2. Call the image file name.
An LLNL repo with its own logo also needs the image file name added to repo_logos.json
.
News posts appear in reverse chronological order (i.e., newest first). The list is curated to promote LLNL’s open source endeavors and community engagement. Posts should be tagged with at least one of the following categories, which are not associated with the catalog browse categories (described above) applied to repos.
event
- announcement or recap of an event/conferencemultimedia
- synopsis of a video or podcast published on another platform (e.g., YouTube)new-repo
- announcement of new repo added to LLNL’s software catalogstory
- synopsis of a relevant news or research-focused article; profile of a developer
Categories should appear alphabetically in each post’s metadata under the title, with no punctuation between multiple categories:
title: "Title of Post"
categories: multimedia story
LLNL’s .github repo contains .md templates for each of these types of posts. For posts that combine multiple tags (e.g., multimedia, event), a combination of templates may be used. File naming conventions are also provided.
Software releases are not included in News. See the separate, and automatically populated, Releases page.
The informational pages on this site (e.g., this page, About, FAQ) are markdown pages that can be updated with a pull request. Please note the following style preferences:
- H2 headings in title case
- H3 headings in sentence case
- News post titles in title case
- Accordion titles in the form of a sentence-case question
To update the banner on the home page: The existing RADIUSS message is in a container using the button.html
include file.
To modify the site menu: Update the menu in the header.html
, rather than adding each page to the menu using page attributes.
To create an accordion slug: Accordion titles automatically generate a unique URL hash so the user can go directly to an expanded accordion using a unique URL. As an accordion’s title is often lengthy question text, a shortened slug can be used to shorten the URL hash. For example, this accordion’s title is How do I update the FAQ or other text?
but the hash is the much shorter #faq
. Add slug='unique-hash'
after the title
in the accordion’s include
syntax. Slugs should be unique to the page they’re on; in other words, a page should not have two accordions with the same slug.
This site’s visualizations are governed by several scripts and queries. See the following README
files for details:
- scripts/README.md: data collection scripts
- _visualize/README.md: queries to GitHub’s GraphQL API
- visualize/README.md: data storage
Future Materials Science category
Add Materials Science
into the catalog browse by adding this code (alphabetically among the other categories) to /visualize/github-data/category_info.json
:
"Materials Science": {
"title": "Materials Science",
"hash": "MaterialsScience",
"icon": {
"fa": "fa-hexagon",
"alt": "Materials Science"
},
"description": {
"short": "Software supporting research in materials design, optimization, and innovation",
"long": ""
},
"topics": [
"materials",
"materials-science"
]
},
Deprecated RADIUSS features
April 2022: RADIUSS launched at github.com/llnl/radiuss. See tasks in issue 567. If we ever want/need to reinstate RADIUSS browsing, branding, and other features on this site, here’s what to do:
- Add
RADIUSS
back into the catalog browse (i.e., to “live” on this website) by adding this code (as lines 154-168) to/visualize/github-data/category_info.json
:
"RADIUSS": {
"title": "RADIUSS",
"hash": "RADIUSS",
"icon": {
"path": "/assets/images/radiuss.svg",
"alt": "RADIUSS logo"
},
"description": {
"short": "Rapid Application Development via an Institutional Universal Software Stack",
"long": ": LLNL's RADIUSS project aims to broaden usage across LLNL and the open source community of a set of libraries and tools used for HPC scientific application development."
},
"topics":[
"radiuss"
]
},
Note that /project/category_info_radiuss.json
is not currently being used. If it were to be reinstated, it would need its categories updated to match the latest Catalog (e.g., Docs and Tutorials
`).
- Comment back in lines 31-38 in
Category.service.js
this.containsRadiussTopics = function(catTopics, repoTopics) {
for (var i = 0; i < catTopics.length; i++) {
if ($.inArray(catTopics[i], repoTopics) != -1 && $.inArray('radiuss', repoTopics) != -1) {
return true;
}
}
return false;
};
- Update link/text on home page
- Update links/text on Policies & Guidelines page
- Update links/text on FAQ page
- Update relevant READMEs
- Update links/text on https://dev.llnl.gov/radiuss/
- Point URL alias https://radiuss.llnl.gov back to
/explore/#/RADIUSS
(request this of webmaster-comp@llnl.gov)
No changes yet, if ever:
- Policies & Guidelines are currently still on this site: (/about/policies)
- RADIUSS logo (
radiuss.svg
) is still in the/assets/
folder