Skip to content

Commit e20a12f

Browse files
committed
Update project for pilot call and switch to Bluesky
- Add 'Call for Pilots' to README and create new blog post. - Update emails with pilot interest links. - Switch social media links from Twitter to Bluesky in Contact and Blog. - Remove personal Twitter handles from staff profiles. - Add LessonStatusTable component to homepage. - Update lesson metadata in lessons.yml.
1 parent c795b73 commit e20a12f

File tree

10 files changed

+278
-10
lines changed

10 files changed

+278
-10
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ This site serves as a curriculum hub for librarians, providing access to:
1212
* Profiles of the lesson authors and contributors.
1313
* Foundational open science frameworks and references.
1414

15+
## Call for Pilots
16+
17+
We are currently looking for community members to pilot these lessons. If you are interested in teaching or field-testing any of these materials, please [open an issue on our Pilot Interest tracker](https://github.com/ucla-imls-open-sci/ucla-imls-open-sci.github.io/issues/new?template=pilot-interest.yml).
18+
1519
## Tech Stack
1620

1721
This site has been migrated from Jekyll to **Astro** (v5). It uses:
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
Subject: Core Team Update: IMLS Grant Completion & Next Steps
2+
3+
Hi Team (Todd, Chris, Elizabeth, Zhiyuan, Eric, Lawrence, and Madeline),
4+
5+
I’m happy to share that we have officially completed our work on the IMLS Open Science Lessons grant.
6+
7+
We over-delivered on our core promise, producing 15 lessons when the grant called for 14. We’ve also transitioned the project website into a curriculum portal at https://ucla-imls-open-sci.info. This hub allows us to track lesson progress and promote the next phase of the project. Ultimately, we plan to move these lessons into either an official Carpentries curriculum or the Carpentries Incubator, depending on community engagement and piloting results.
8+
9+
**Project DOI & Credit:**
10+
To recognize the work of this core team, I have included you all in the official project DOI: https://doi.org/10.5281/zenodo.18055759. I used the CRediT taxonomy to describe everyone’s specific roles. Please take a look and let me know if you want me to change anything.
11+
12+
**What we’ve achieved together:**
13+
* **15 Developed Lessons:** Surpassing our original target of 14.
14+
* **Curriculum Portal:** A centralized hub to track and promote lesson development.
15+
* **Automation:** Lesson pages now pull live metadata and generate citations automatically.
16+
17+
**Next Steps: Promoting the Pilots**
18+
The next step is to get these lessons field-tested. I am launching a public "Pilot Call" to the Carpentries community to move the lessons from Alpha to Beta.
19+
20+
**How you can help:**
21+
Any promotion you can do within your own networks to encourage librarians to pilot these lessons would be great. You can direct them to our [Pilot Interest issue template](https://github.com/ucla-imls-open-sci/ucla-imls-open-sci.github.io/issues/new?template=pilot-interest.yml) if they'd like to sign up.
22+
23+
Thank you again for your dedication. This project wouldn't have been possible without this team's work and guidance.
24+
25+
Best,
26+
27+
Tim
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
Subject: IMLS Open Science Project: Site Launch & Final Update
2+
3+
Dear Review Committee Members,
4+
5+
I am writing to share the final results of the project you helped shape. The "Lessons for Librarians in Open Science" curriculum hub is now live at: https://ucla-imls-open-sci.info
6+
7+
As you review the site, you will see the 15 lessons that were selected and developed thanks to your review of the proposals. We have successfully migrated the project to a sustainable static site framework (Astro v5), ensuring these resources remain available and easy to maintain. Each lesson now has a dedicated page with automated citations and author profiles.
8+
9+
**How you can help:**
10+
We are now moving into the "Pilot Call" phase to field-test these lessons with the broader community. The Library Carpentry Curriculum Advisory Committee (LC-CAC) is helping us facilitate this process to move lessons from Alpha to Beta.
11+
12+
I would appreciate any help you can provide in promoting these lessons within your networks. If you know of librarians or groups who might be interested in piloting these materials, please share the site link with them, or direct them to our [Pilot Interest tracker](https://github.com/ucla-imls-open-sci/ucla-imls-open-sci.github.io/issues/new?template=pilot-interest.yml).
13+
14+
Thank you again for your time and expertise in reviewing the proposals and helping guide the direction of this curriculum. This resource exists because of your early work and contributions.
15+
16+
Best regards,
17+
18+
Tim Dennis
19+
Program Director

src/components/Contact.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@
3333
<div class="contact-item">
3434
<span class="fa-stack fa-3x mb-3">
3535
<i class="fas fa-circle fa-stack-2x text-info"></i>
36-
<i class="fab fa-twitter fa-stack-1x fa-inverse"></i>
36+
<i class="fas fa-cloud fa-stack-1x fa-inverse"></i>
3737
</span>
3838
<h4>Stay Connected</h4>
39-
<p><a href="https://twitter.com/jt14den" target="_blank" class="text-muted">Follow us on Twitter/X</a></p>
39+
<p><a href="https://bsky.app/profile/did:plc:zjoycvq5jl7gtb57bzagqpgz" target="_blank" class="text-muted">Follow us on Bluesky</a></p>
4040
</div>
4141
</div>
4242
</div>
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
---
2+
import lessonsData from '../data/lessons.yml';
3+
4+
const lessons = (lessonsData as any).lessons.filter((l: any) => l.type !== 'external');
5+
6+
// Helper to determine status
7+
const getStatus = (lesson: any, milestone: string) => {
8+
// 1. CAC Review
9+
if (milestone === 'cac') {
10+
const cacRec = lesson.recognition?.find((r: any) =>
11+
r.title.includes('CAC') ||
12+
r.desc.includes('Curriculum Advisory Committee') ||
13+
r.title.includes('Governance Roadmap')
14+
);
15+
16+
if (cacRec) {
17+
if (cacRec.desc.toLowerCase().includes('scheduled')) {
18+
return { status: 'scheduled', label: 'Scheduled' };
19+
}
20+
return { status: 'completed', label: 'Presented', title: cacRec.desc };
21+
}
22+
return { status: 'pending', label: '' };
23+
}
24+
25+
// 2. Alpha Pilot
26+
if (milestone === 'alpha') {
27+
if (lesson.status === 'Beta' || lesson.status === 'Stable' || lesson.library_carpentry_adopted) return { status: 'completed', label: 'Completed' };
28+
29+
const alphaPilot = lesson.pilots?.find((p: any) => p.type.toLowerCase().includes('alpha') || p.note?.toLowerCase().includes('alpha'));
30+
if (alphaPilot) return { status: 'completed', label: 'Completed' };
31+
32+
if (lesson.status.toLowerCase() === 'alpha') return { status: 'in-progress', label: 'In Progress' };
33+
34+
return { status: 'pending', label: '' };
35+
}
36+
37+
// 3. Beta Pilot
38+
if (milestone === 'beta') {
39+
if (lesson.status === 'Stable' || lesson.library_carpentry_adopted) return { status: 'completed', label: 'Completed' };
40+
41+
const betaPilot = lesson.pilots?.find((p: any) => p.type.toLowerCase().includes('beta'));
42+
if (betaPilot) return { status: 'completed', label: 'Completed' };
43+
44+
if (lesson.status === 'Beta') return { status: 'in-progress', label: 'In Progress' };
45+
46+
return { status: 'pending', label: '' };
47+
}
48+
49+
// 4. Impact / Recognition (Actual outcomes: Pubs, Grants, etc)
50+
if (milestone === 'impact') {
51+
const impactKeywords = ['JeSLIB', 'Article', 'Publication', 'Grant', 'International', 'Proposal', 'Conference'];
52+
const achievement = lesson.recognition?.find((r: any) =>
53+
impactKeywords.some(key => r.title.includes(key)) &&
54+
!r.desc.toLowerCase().includes('scheduled') &&
55+
!r.title.includes('CAC')
56+
);
57+
58+
if (achievement) {
59+
let label = 'Recognized';
60+
if (achievement.title.includes('JeSLIB') || achievement.title.includes('Article')) label = 'Published';
61+
if (achievement.title.includes('Grant')) label = 'Grant/Award';
62+
return { status: 'completed', label: label, title: achievement.title };
63+
}
64+
65+
return { status: 'pending', label: '' };
66+
}
67+
68+
// 5. Adoption
69+
if (milestone === 'adoption') {
70+
if (lesson.library_carpentry_adopted) return { status: 'completed', label: 'Adopted' };
71+
72+
const incubator = lesson.recognition?.find((r: any) => r.title.includes('Incubator') || r.desc.includes('Incubator'));
73+
if (incubator) return { status: 'in-progress', label: 'Incubator' };
74+
75+
return { status: 'pending', label: '' };
76+
}
77+
78+
return { status: 'pending', label: '' };
79+
};
80+
81+
const getIcon = (state: any) => {
82+
if (state.status === 'completed') return '<i class="fas fa-check-circle text-success"></i>';
83+
if (state.status === 'in-progress') return '<i class="fas fa-spinner fa-spin text-primary"></i>';
84+
if (state.status === 'scheduled') return '<i class="far fa-calendar-alt text-warning"></i>';
85+
return '<i class="far fa-circle text-muted" style="opacity: 0.3;"></i>';
86+
};
87+
---
88+
89+
<section class="page-section bg-white" id="milestones">
90+
<div class="container">
91+
<div class="row mb-4">
92+
<div class="col-lg-12 text-center">
93+
<h2 class="section-heading text-uppercase">Lesson Status Dashboard</h2>
94+
<h3 class="section-subheading text-muted">Tracking the lifecycle of our curriculum from development to adoption.</h3>
95+
</div>
96+
</div>
97+
98+
<div class="table-responsive shadow-sm">
99+
<table class="table table-hover table-bordered mb-0">
100+
<thead class="thead-light">
101+
<tr>
102+
<th style="width: 35%;">Lesson</th>
103+
<th class="text-center">CAC Review</th>
104+
<th class="text-center">Alpha Pilot</th>
105+
<th class="text-center">Beta Pilot</th>
106+
<th class="text-center">Impact / Recognition</th>
107+
<th class="text-center">Adoption</th>
108+
</tr>
109+
</thead>
110+
<tbody>
111+
{lessons.map((lesson: any) => {
112+
const cac = getStatus(lesson, 'cac');
113+
const alpha = getStatus(lesson, 'alpha');
114+
const beta = getStatus(lesson, 'beta');
115+
const impact = getStatus(lesson, 'impact');
116+
const adoption = getStatus(lesson, 'adoption');
117+
118+
return (
119+
<tr>
120+
<td class="align-middle">
121+
<a href={`/lessons/${lesson.name.toLowerCase().replace(/[^a-z0-9]+/g, '-')}`} class="font-weight-bold text-dark">
122+
{lesson.name}
123+
</a>
124+
</td>
125+
<td class="text-center align-middle" title={cac.title || cac.label}>
126+
<span set:html={getIcon(cac)} />
127+
{cac.label && <div class="small text-muted mt-1">{cac.label}</div>}
128+
</td>
129+
<td class="text-center align-middle">
130+
<span set:html={getIcon(alpha)} />
131+
{alpha.label && <div class="small text-muted mt-1">{alpha.label}</div>}
132+
</td>
133+
<td class="text-center align-middle">
134+
<span set:html={getIcon(beta)} />
135+
{beta.label && <div class="small text-muted mt-1">{beta.label}</div>}
136+
</td>
137+
<td class="text-center align-middle" title={impact.title}>
138+
<span set:html={getIcon(impact)} />
139+
{impact.label && <div class="small text-muted mt-1">{impact.label}</div>}
140+
</td>
141+
<td class="text-center align-middle">
142+
<span set:html={getIcon(adoption)} />
143+
{adoption.label && <div class="small text-muted mt-1">{adoption.label}</div>}
144+
</td>
145+
</tr>
146+
);
147+
})}
148+
</tbody>
149+
</table>
150+
</div>
151+
152+
<div class="row mt-3">
153+
<div class="col-lg-12 text-center small text-muted">
154+
<ul class="list-inline">
155+
<li class="list-inline-item"><i class="fas fa-check-circle text-success"></i> Completed / Published</li>
156+
<li class="list-inline-item"><i class="fas fa-spinner text-primary"></i> In Progress</li>
157+
<li class="list-inline-item"><i class="far fa-calendar-alt text-warning"></i> Scheduled</li>
158+
<li class="list-inline-item"><i class="far fa-circle text-muted"></i> Pending</li>
159+
</ul>
160+
</div>
161+
</div>
162+
</div>
163+
</section>
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
---
2+
title: "Calling for Community Pilots: 14 New Open Science Lessons for Librarians"
3+
date: 2026-01-05
4+
author: "Tim Dennis"
5+
description: "Our IMLS grant is complete. Now we need the Carpentries community to help move these 14 'Alpha' lessons toward official adoption through piloting."
6+
tags: ["Library Carpentry", "Open Science", "Piloting"]
7+
---
8+
9+
The **"Lessons for Librarians in Open Science Principles and Methods"** project (funded by IMLS) has reached a major milestone: we have published 15 new lesson repositories developed by teams of experts across the library community.
10+
11+
One of these lessons, [Data Management Plans 101](https://librarycarpentry.org/lc-dmp101/), has already been officially adopted by Library Carpentry. The remaining 14 lessons are currently in **Alpha**. To move them toward **Beta** and eventual adoption, we need the community to take them for a test drive.
12+
13+
## How You Can Help
14+
15+
We are looking for instructors to run **Pilot Workshops**. A pilot is a chance to test the material in a real-world setting. You don't need to be an expert in the topic—in fact, testing the lessons with instructors who didn't write them is exactly what the curriculum needs to mature.
16+
17+
Any promotion you can do within your own networks to encourage librarians to pilot these lessons would be great. If you are interested in teaching any of the lessons below, please [open an issue on our Pilot Interest tracker](https://github.com/ucla-imls-open-sci/ucla-imls-open-sci.github.io/issues/new?template=pilot-interest.yml).
18+
19+
---
20+
21+
## The Curriculum at a Glance
22+
23+
All lessons are designed for 1.5 to 4 hours of instruction and are built on The Carpentries Workbench.
24+
25+
### Technical Workflows & Infrastructure
26+
* **[Cloud Workflows for Librarians](https://kerchner.github.io/lc-open-reproducible-research-cloud/)** (7.5h): Hands-on SSH, RStudio Server, and reproducible cloud research.
27+
* **[Containers and Virtual Machines](https://ual-re.github.io/lc-containers_vms/)** (3h): A gentle, hands-on introduction to research infrastructure.
28+
* **[Data Dashboards with R/Shiny](https://aranganath24.github.io/data-dashboard-carpentries/)** (3.5h): Teaching researchers to build interactive web apps.
29+
* **[Open Science Hardware](https://github.com/ucla-imls-open-sci/lc-open-hw/)** (Intro): Fundamentals of OSH licensing and communities for librarians.
30+
31+
### Open Research Methods
32+
* **[Open Qualitative Research (QualCoder)](https://librarycarpentry.github.io/open-qualitative-research-qualcoder/)** (4h): Reproducible qualitative analysis using open tools.
33+
* **[Open Qualitative Research (Taguette)](https://librarycarpentry.github.io/lc-open-qualitative-research)** (Intro): Applying open science principles to qualitative data.
34+
* **[Reproducible Research Workflows](https://librarycarpentry.github.io/lc-reproducible-research/)** (Intermediate): Theoretical and practical aspects of reproducibility across disciplines.
35+
36+
### Scholarly Communication & Discovery
37+
* **[Authoring Open Science](https://ucla-imls-open-sci.info/lc-authoring-open-science/)** (3h): Open authoring tools, contributor roles, and open peer review.
38+
* **[NASA Science Explorer (SciX)](http://ucla-imls-open-sci.info/lc-scix-open-science/)** (4h): Case study exploration of interdisciplinary discovery and FAIR principles.
39+
* **[Multilingual Search & Discovery](http://ucla-imls-open-sci.info/lc-multilingual-search-discovery-system/)** (3h): Building lightweight discovery systems using Google Sheets and JS.
40+
* **[ORCID for Librarians](https://firbolg.github.io/LC_ORCID/)** (3h): Significance and practical use of researcher identifiers.
41+
42+
### Community & Advocacy
43+
* **[Inclusive & Collaborative Science](https://librarycarpentry.github.io/lc-collaborative-science/)** (Intro): Overcoming barriers in non-native English speaking communities.
44+
* **[Open Science Team Agreements](https://librarycarpentry.github.io/lc-team-agreements/)** (2h): Practical tools for advocating for open practices in research groups.
45+
* **[Open Science Community of Practice](https://ucla-imls-open-sci.info/lc-open-science-community-of-practice/)** (1.5h): Principles for sustaining communities within institutions.
46+
47+
---
48+
49+
## What to Expect as a Piloter
50+
51+
The **Library Carpentry Curriculum Advisory Committee (LC-CAC)** is stewarding these lessons beyond the grant period. When you sign up to pilot:
52+
53+
1. **Preparation:** We can connect you with the original authors for a "teach-through" or to answer technical questions.
54+
2. **Execution:** Use the [Carpentries guide on Preparing to Teach](https://carpentries.github.io/lesson-development-training/preparing.html) to structure your session.
55+
3. **Feedback:** After the workshop, you'll provide feedback via GitHub issues (using observers or "minute cards" is highly encouraged!).
56+
57+
Help us turn these drafts into battle-tested resources for the global library community.

src/data/lessons.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,7 @@ lessons:
313313
- Understand options for sharing source data and coded analysis projects.
314314
url: https://librarycarpentry.github.io/lc-open-qualitative-research
315315
repo: https://github.com/LibraryCarpentry/lc-open-qualitative-research
316+
library_carpentry_adopted: true
316317
recognition:
317318
- title: "JeSLIB Article Accepted"
318319
desc: "A peer-reviewed article describing this curriculum was accepted for publication in the Journal of eScience Librarianship (JeSLIB)."
@@ -321,6 +322,7 @@ lessons:
321322
- Nathaniel Porter
322323
- Sebastian Karcher
323324
status: Beta
325+
library_carpentry_adopted: true
324326
educationalLevel: Introductory
325327
duration: "4h 00m"
326328
abstract: "Familiarizes learners with the application of open science principles to qualitative research. Focuses on documents or transcribed text in a variety of data formats. Learners practice working with secondary qualitative data from the Qualitative Data Repository (QDR) in the free software QualCoder."

src/data/sitetext.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,6 @@ en:
110110
image: /assets/img/staff/timdennis.jpeg
111111
orcid: 0000-0001-6632-3812
112112
social:
113-
- url: https://twitter.com/jt14den
114-
icon: fab fa-twitter
115113
- url: https://linkedin.com/in/jtimdennis/
116114
icon: fab fa-linkedin-in
117115
- url: https://orcid.org/0000-0001-6632-3812
@@ -121,8 +119,6 @@ en:
121119
image: /assets/img/staff/zhiyuan_500x500.jpeg
122120
orcid: 0000-0002-7601-8704
123121
social:
124-
- url: https://twitter.com/zhiyuangis
125-
icon: fab fa-twitter
126122
- url: https://www.linkedin.com/in/zhiyuan-yao-8b7b13101/
127123
icon: fab fa-linkedin-in
128124
- url: https://orcid.org/0000-0002-7601-8704
@@ -137,8 +133,6 @@ en:
137133
role: Lesson Infrastructure Developer
138134
image: /assets/img/staff/LawrenceLee.jpg
139135
social:
140-
- url: https://twitter.com/lawrence_tlee
141-
icon: fab fa-twitter
142136
- url: https://www.linkedin.com/in/lawrencetlee/
143137
icon: fab fa-linkedin-in
144138
- name: Madeline Kim

0 commit comments

Comments
 (0)