diff --git a/_includes/pyos-testimonials-universities-labs.html b/_includes/pyos-testimonials-universities-labs.html new file mode 100644 index 00000000..15f35241 --- /dev/null +++ b/_includes/pyos-testimonials-universities-labs.html @@ -0,0 +1,52 @@ +
+ + +
+
+ +
+

+ My favorite part of the course has been the step-by-step guidance and the hands-on experience of building a package. I also really liked the videos where the mentor shares the challenges they faced — it made the process feel more real and relatable. Testing classmates' packages was another highlight, as it helped me learn from others and see different approaches. +

+
+
Course participant · Ship It cohort
+
+ +
+ +
+

+ I attended a conference during this course (full day for two days) and was still able to complete the course once the conference ended. I appreciate the structure of the course, and the flexibility was also needed. +

+
+
Course participant · Ship It cohort
+
+
+
diff --git a/_pages/learn-universities-labs.md b/_pages/learn-universities-labs.md index 076dba41..e50a0e0d 100644 --- a/_pages/learn-universities-labs.md +++ b/_pages/learn-universities-labs.md @@ -16,8 +16,8 @@ header:
- - A group of contributors sitting at a table at a pyOpenSci sprint working on their laptops and talking to each other. + + A group of contributors sitting at a table at a pyOpenSci sprint working on their laptops and talking to each other.
@@ -95,61 +95,150 @@ recommend getting involved with pyOpenSci.." author="Zach Chandler" event="Direc ## Research software accelerator programs -We will support you in building a thriving open source community at your -institution. Our accelerator programs are designed to meet universities and -research labs where they are today. - -### Partnership tiers - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Partnership tiers by stage and best fit
TierStagePerfect for
Early StageExploringUniversities just beginning to build open - source programs
Growing CommunityBuildingResearch communities seeking foundational - training and community connection
Impact ReadyExpandingPrograms ready to add structured webinars - and deeper community engagement
Momentum DriverScalingInstitutions with active OSPOs ready to - grow their researcher cohorts
Ecosystem CatalystEstablishedUniversities positioning their researchers - as open source leaders
+Supporting you in building a thriving Open Source community at your institution. +Guide your researchers from a working script to a published Python package using industry-standard tools like Hatch, pytest, uv, and Sphinx. + +
+
+
+
+

AcceleratorESSENTIALS

+

+ Get your researchers trained in open source workflows and Python packaging with expert-backed course materials and train-the-trainer materials. +

+
+

What's Included

+ +
    +
  • 10-day On-Demand Asynchronous Course Access: Ship It: Python Packaging in the GenAI Era
  • +
  • 6 Months On Demand Course Access
  • +
  • ~150 course seats
  • +
  • Train the trainer materials
  • +
  • Foundational workflows for sustainable software
  • +
  • 1 Peer Review Webinar
  • +
  • Content sponsored by Open Source at Stanford University
  • +
+
+

Course details

+
    +
  • Asynchronous training access for research teams
  • +
  • 27 videos across 10 modules
  • +
  • Python expert insights and videos
  • +
  • Course Certificate upon completion
  • +
  • GitHub badge upon completion
  • +
+
+

$2,500

+
+ Contact us +
+ + + +
+
+

AcceleratorPRO

+

+ Everything in Community Partner, plus a pyOpenSci curated course learning experience with hands-on expert support during the course, gamified course activities, and curriculum advisory. Course will be branded to include your institution's name. +

+
+

What's Included

+ +
    +
  • 10-day On-Demand Asynchronous Course Access: Ship It: Python Packaging in the GenAI Era
  • +
  • 1 Year On Demand Course Access
  • +
  • 2 expert-supported course cohorts
  • +
  • Gamified activities facilitated by open source experts
  • +
  • Unlimited course seats
  • +
  • Train the trainer materials
  • +
  • Foundational workflows for sustainable software
  • +
  • 2 Peer Review Webinars
  • +
  • Expert-lead packaging and open source webinars (up to 3)
  • +
  • Community access
  • +
  • Curriculum Advisory
  • +
  • Customized course branding for your institution
  • +
  • Content sponsored by Open Source at Stanford University
  • +
+
+

Course details

+
    +
  • Asynchronous training access for research teams
  • +
  • 27 videos across 10 modules
  • +
  • Python expert insights and videos
  • +
  • Course Certificate upon completion
  • +
  • GitHub badge upon completion
  • +
+
    +
  • Leadership programming for research software champions
  • +
  • Institution-wide strategy sessions and advisory support
  • +
  • Visibility across pyOpenSci community channels
  • +
  • Long-term partnership planning and impact tracking
  • +
+
+ Contact us +
+*Note: Topics are confirmed each cohort cycle as new content is released.* + +### Complex, technical concepts made easy + +Researchers shouldn't have to struggle with sharing code and software on their own. Connect your students and researchers with a thriving, inclusive, and vibrant community of beginner-to-expert Pythonistas who support scientific open source. Open doors for your researchers to engage with other Python developers, troubleshoot challenges together, and gain ongoing support as they develop their scientific open source skills. + +
+ + +
+
+ +## Don't take our word for it: hear from previous course learners + +{% include pyos-testimonials-universities-labs.html %} + +*Our current content is the 10-day Ship It: Python Packaging in the GenAI Era course.* + +
+
+ +
+
+ ### Beta Partnership packages -We are currently developing a partnership package that meets the needs of University Open Source Program Offices. This section will -be updated soon. +We are currently piloting our partnership program to find the best combination of resources and events that best support our University partners.
diff --git a/_sass/minimal-mistakes.scss b/_sass/minimal-mistakes.scss index 6d21331a..7b3cb420 100644 --- a/_sass/minimal-mistakes.scss +++ b/_sass/minimal-mistakes.scss @@ -52,4 +52,5 @@ @import "minimal-mistakes/pyos-grid"; @import "minimal-mistakes/pyos-flowing-page"; @import "minimal-mistakes/pyos-cards"; +@import "minimal-mistakes/pyos-testimonial-showcase"; @import "minimal-mistakes/cookie-consent"; diff --git a/_sass/minimal-mistakes/_pyos-cards.scss b/_sass/minimal-mistakes/_pyos-cards.scss index 92c4446b..3cf99e5a 100644 --- a/_sass/minimal-mistakes/_pyos-cards.scss +++ b/_sass/minimal-mistakes/_pyos-cards.scss @@ -824,6 +824,7 @@ vertical-align: top; line-height: 1.35; font-size: $type-size-card-meta; + color: $dark-gray; } th { @@ -846,6 +847,11 @@ min-width: 42rem; } +.partnership-check { + color: $pyos-teal; + font-weight: $bold-weight; +} + @media (max-width: $large) { .partnership-table { display: block; @@ -903,17 +909,17 @@ } td:first-child { - background-color: $pyos-brand-dark-purple; - color: $pyos-white; + background-color: rgba($pyos-brand-dark-purple, 0.08); + color: $pyos-brand-dark-purple; margin: 0; padding: 0.65rem 0.75rem; - border-bottom: 1px solid rgba($pyos-white, 0.22); + border-bottom: 1px solid rgba($pyos-brand-dark-purple, 0.18); border-radius: 0.5rem 0.5rem 0 0; font-size: $type-size-card-title; font-weight: $semibold-weight; &::before { - color: rgba($pyos-white, 0.92); + color: $pyos-brand-dark-purple; } } @@ -924,6 +930,182 @@ } } +/* University partnerships: tier cards */ +.partnership-cards { + display: grid; + gap: 1.25rem; + grid-template-columns: 1fr; + margin: 0 0 1.5rem; + align-items: stretch; + + @media (min-width: $small) { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + @media (min-width: $medium) { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } +} + +.partnership-card { + display: flex; + flex-direction: column; + min-height: 100%; + padding: 1.1rem 1rem; + border: 1px solid rgba($pyos-brand-dark-purple, 0.18); + border-radius: $border-radius; + background-color: $pyos-white; + box-shadow: 0 0.2rem 0.65rem rgba($pyos-brand-dark-purple, 0.09); + transition: transform 200ms ease, box-shadow 200ms ease; + + &:hover, + &:focus-within { + transform: translateY(-0.125rem); + box-shadow: 0 0.38rem 0.85rem rgba($pyos-brand-dark-purple, 0.12); + } + + &__stage { + display: inline-flex; + align-self: flex-start; + margin: 0 0 0.65rem; + padding: 0.2rem 0.6rem; + border-radius: 9999px; + background-color: $pyos-lightpurple; + color: $pyos-brand-dark-purple; + font-size: $type-size-card-label; + font-weight: $semibold-weight; + letter-spacing: 0.04em; + text-transform: uppercase; + line-height: $line-height-card-meta; + } + + &__title { + margin: 0.6rem 0 1.2rem 0; + color: $pyos-brand-dark-purple; + font-size: $type-size-card-title-xl; + line-height: 1.25; + border-left: 0; + padding-left: 0; + font-weight: $weight-5; + text-align: center; + + &::before, + &::after { + content: none; + } + } + + p.partnership-card__price { + margin: 0 0 0.85rem; + color: $pyos-brand-dark-purple; + font-size: $type-size-2; + font-weight: $bold-weight; + line-height: 1.2; + } + + &__body { + flex: 1 1 auto; + display: flex; + flex-direction: column; + min-height: 0; + } + + &__main { + flex: 1 1 auto; + min-height: 0; + display: flex; + flex-direction: column; + } + + .partnership-card__body > p.partnership-card__price { + flex-shrink: 0; + margin-top: 0; + margin-bottom: 0.35rem; + text-align: center; + } + + .partnership-card__body:has(> p.partnership-card__price) + a.partnership-card__cta { + margin-top: 0.5rem; + } + + a.partnership-card__cta { + flex-shrink: 0; + align-self: stretch; + margin: 1rem 0 0; + padding-top: 0.25rem; + text-align: center; + text-decoration: none; + } + + p.partnership-card__lede { + margin: 0 0 0.85rem; + color: rgba($pyos-brand-dark-purple, 0.9); + font-size: $type-size-card-body; + line-height: $line-height-card-body; + border-left: 0; + padding-left: 0; + + &::before, + &::after { + content: none; + } + } + + &__features { + list-style: none; + margin: 0; + padding: 0; + + li { + position: relative; + margin: 0 0 0.55rem; + padding-left: 1.3rem; + color: rgba($pyos-brand-dark-purple, 0.95); + font-size: $type-size-card-meta; + line-height: $line-height-card-body; + + &::before { + content: "✓"; + position: absolute; + left: 0; + top: 0.02rem; + color: $pyos-teal; + font-weight: $semibold-weight; + } + + &:last-child { + margin-bottom: 0; + } + } + } + + &__divider { + width: 100%; + border: 0; + border-top: 1px solid rgba($pyos-softpurple, 0.95); + margin: 1rem 0 0.7rem; + } + + p.partnership-card__subheader { + margin: .6rem 0 1.2rem 0; + color: mix($pyos-brand-dark-purple, $pyos-softpurple, 45%); + font-size: $type-size-card-label; + font-weight: $semibold-weight; + letter-spacing: 0.08em; + text-transform: uppercase; + line-height: $line-height-card-meta; + } +} + +.partnership-card--featured { + border-color: rgba($pyos-darkpurple, 0.45); + box-shadow: 0 0.32rem 0.8rem rgba($pyos-brand-dark-purple, 0.13); + + .partnership-card__stage { + background-color: rgba($pyos-teal, 0.28); + } +} + /* Home page training feature card */ .home-training-feature { margin: 0 0 2rem; diff --git a/_sass/minimal-mistakes/_pyos-testimonial-showcase.scss b/_sass/minimal-mistakes/_pyos-testimonial-showcase.scss new file mode 100644 index 00000000..d42563c3 --- /dev/null +++ b/_sass/minimal-mistakes/_pyos-testimonial-showcase.scss @@ -0,0 +1,122 @@ +/* ========================================================================== + TESTIMONIAL SHOWCASE (universities / labs + similar landing sections) + Featured row + 2-up cards on light purple bands + ========================================================================== */ + +.flowing .pyos-section.purple.pyos-university-testimonials { + padding-top: 1.5rem; + padding-bottom: 2rem; +} + +.testimonial-showcase { + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + gap: 1.25rem; + max-width: 100%; +} + +.testimonial-showcase__featured { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; + margin: 0; + padding: 1.25rem 1.25rem 1.35rem; + border-radius: $border-radius; + background-color: $pyos-white; + box-shadow: 0 0.2rem 0.65rem rgba($pyos-brand-dark-purple, 0.1); + border: 1px solid rgba($pyos-brand-dark-purple, 0.12); + text-align: left; + + @media (min-width: $small) { + flex-direction: row; + align-items: flex-start; + gap: 1.5rem; + padding: 1.5rem 1.5rem 1.6rem; + } +} + +.testimonial-showcase__avatar-wrap { + flex-shrink: 0; +} + +.testimonial-showcase__avatar { + width: 7.5rem; + height: 7.5rem; + border-radius: 50%; + object-fit: cover; + display: block; + border: 3px solid rgba($pyos-brand-dark-purple, 0.18); + box-sizing: border-box; +} + +.testimonial-showcase__featured-body { + flex: 1 1 auto; + min-width: 0; +} + +.testimonial-showcase__mark { + margin: 0 0 0.35rem; + line-height: 1; + color: $pyos-brand-dark-purple; + + .fa-quote-left { + font-size: $type-size-3; + } + + &--compact { + color: $pyos-teal; + + .fa-quote-left { + font-size: $type-size-card-title-lg; + } + } +} + +.testimonial-showcase__blockquote { + margin: 0; + padding: 0; + border: 0; + font-family: $caption-font-family; + + p { + margin: 0 0 0.75rem; + font-size: $type-size-card-body; + line-height: $line-height-card-body; + font-style: italic; + color: rgba($pyos-brand-dark-purple, 0.95); + } +} + +.testimonial-showcase__cite { + margin: 0; + font-family: $caption-font-family; + font-size: $type-size-card-meta; + line-height: $line-height-card-meta; + font-style: normal; + font-weight: $semibold-weight; + color: rgba($pyos-brand-dark-purple, 0.72); +} + +.testimonial-showcase__grid { + display: grid; + gap: 1.25rem; + grid-template-columns: 1fr; + + @media (min-width: $small) { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} + +.testimonial-showcase__card { + margin: 0; + padding: 1.1rem 1rem 1.15rem; + border-radius: $border-radius; + background-color: $pyos-white; + box-shadow: 0 0.2rem 0.65rem rgba($pyos-brand-dark-purple, 0.08); + border: 1px solid rgba($pyos-brand-dark-purple, 0.12); + border-top: 4px solid $pyos-teal; + text-align: left; +} diff --git a/_sass/minimal-mistakes/_reset.scss b/_sass/minimal-mistakes/_reset.scss index 73fc9274..c76bfaaf 100644 --- a/_sass/minimal-mistakes/_reset.scss +++ b/_sass/minimal-mistakes/_reset.scss @@ -11,15 +11,15 @@ html { font-size: 1rem; @include breakpoint($medium) { - font-size: 1.2625rem; // 17px / 16px = 1.0625rem + font-size: 1rem; } @include breakpoint($large) { - font-size: 1.1875rem; // 19px / 16px = 1.1875rem + font-size: 1.0625rem; // 17px / 16px } @include breakpoint($x-large) { - font-size: 1.3125rem; // 21px / 16px = 1.3125rem + font-size: 1.0625rem; // keep scale consistent on wide screens } -webkit-text-size-adjust: 100%; diff --git a/_sass/minimal-mistakes/_variables.scss b/_sass/minimal-mistakes/_variables.scss index 64d4b474..c1567aa7 100644 --- a/_sass/minimal-mistakes/_variables.scss +++ b/_sass/minimal-mistakes/_variables.scss @@ -65,9 +65,9 @@ $type-size-8: 0.635rem !default; // ~10.16px $type-size-card-title: 1rem !default; $type-size-card-body: 1rem !default; $type-size-card-meta: 0.875rem !default; -$type-size-card-label: 0.75rem !default; +$type-size-card-label: 0.85rem !default; $type-size-card-title-lg: 1.1rem !default; -$type-size-card-title-xl: 1.4rem !default; +$type-size-card-title-xl: 1.5rem !default; $line-height-card-body: 1.45 !default; $line-height-card-meta: 1.35 !default; diff --git a/images/people/testimonial-fatima-pardo.png b/images/people/testimonial-fatima-pardo.png new file mode 100644 index 00000000..565449bb Binary files /dev/null and b/images/people/testimonial-fatima-pardo.png differ