Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blogs blogs everywhere #96

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions archetypes/posts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
show_reading_time: true
authors: []
summary: ""
categories: []
cover:
image: ""
alt: ""
caption: ""
relative: false
tags:
-
draft: true
---
23 changes: 20 additions & 3 deletions assets/ananke/css/opensourcestories.css
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
:root {
--oss-dark-green: #021C0E;
--almost-black: #222222;
}

.measure-wide {
max-width: 68em;
}
Expand All @@ -7,7 +12,7 @@
}

.oss-dark-green {
background-color: #021C0E;
background-color: var(--oss-dark-green);
}

footer {
Expand Down Expand Up @@ -53,6 +58,18 @@ body {
.ananke-socials a {
display: inline-block;
vertical-align: middle;
color: #ffffff;
fill: currentColor;
color: #fff;
fill: #fff;
}

.ananke-socials-share a {
display: inline-block;
vertical-align: middle;
color: var(--oss-dark-green);
fill: var(--oss-dark-green);
}

.ananke-socials-share a .icon svg {
width: 32px;
height: 32px;
}
1 change: 1 addition & 0 deletions assets/ananke/socials/github.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions assets/ananke/socials/linkedin.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions assets/ananke/socials/mastodon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions assets/ananke/socials/twitter.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 36 additions & 4 deletions config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,52 @@ googleAnalytics = "G-7TL98FG4D8"
identifier = "about"
name = "About"
url = "/about/"
weight = 1
[[menu.main]]
identifier = "contribute"
name = "Contribute"
url = "/contribute/"
weight = 1
[[menu.main]]
identifier = "stories"
name = "Stories"
url = "/stories/"
weight = 1
[[menu.main]]
identifier = "posts"
name = "News"
url = "/posts/"
weight = 8
[[menu.main]]
identifier = "storycorp"
name = "StoryCorps"
url = "https://archive.storycorps.org/communities/open-source-stories/"
weight = 10

[params]
favicon = "favicon.ico"
site_logo = ""
description = "The Open Source Stories project celebrates collaboration, communication, community and, more in open source by collecting narratives from creators, contributors, and consumers alike."
twitter = "https://twitter.com/StoriesOfOSS"
github = "https://github.com/opensourcestories"
rss = "/index.xml"
description = "The Open Source Stories project celebrates collaboration, communication, community and, more in open source by collecting narratives from creators, ors, and consumers alike."
featured_image = ""
recent_posts_number = 4
background_color_class = "oss-dark-green"
custom_css = ["opensourcestories.css"]
body_classes = "avenir almost-black"
[[params.ananke_socials]]
name = "mastodon"
url = "https://fedi.opensourcestories.org/@narrator"
[[params.ananke_socials]]
name = "github"
url = "https://github.com/opensourcestories"
[[params.ananke_socials]]
name = "linkedin"
url = "https://www.linkedin.com/company/open-source-stories"
[[params.ananke_socials]]
name = "twitter"
url = "https://twitter.com/StoriesOfOSS"
[[params.ananke_socials]]
name = "rss"
url = "/index.xml"


[params.podcast]
Expand All @@ -52,3 +81,6 @@ googleAnalytics = "G-7TL98FG4D8"
name = "amanda casari"
[author.julia]
name = "julia ferraioli"

[permalinks]
posts = '/posts/:year/:month/:title/'
4 changes: 4 additions & 0 deletions content/posts/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
title: "Sporadic updates and information from the team"
summary: Sporadic updates and information from the team at Open Source Stories
---
74 changes: 74 additions & 0 deletions content/posts/maintainer-month-2023.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
title: "Maintainer Month 2023 recap"
date: 2023-06-12T12:26:10-07:00
show_reading_time: true
authors: ["julia ferraioli"]
summary: "2023 was the first year that Open Source Stories participated in Maintainer Month. Here's a recap and breakdown of the true cost of participating."
categories: ["Operations"]
cover:
image: ""
alt: ""
caption: ""
relative: false
tags:
- Maintainer Month
- Operations
- Sustainability
- Finances
draft: false
---
2023 was the first year that we participated in [Maintainer Month](https://maintainermonth.github.com/), which is a month that celebrates open source maintainers for their hard—and sometimes thankless—work.

> _Disclosure: julia ferraioli served on the Maintainer Month 2023 Advisory Council._

In the spirit of _Maintainer Month_, we are sharing the work that went on behind the scenes to make our participation possible.

## Open Source Stories recap

During May, Open Source Stories had the privilege of capturing three narratives from open source maintainers who each provided fascinating insights into their unique experiences in open source.

* [Duane O'Brien](https://www.duaneobrien.com/) explored a topic that deserves far more attention than it currently receives: [The critical human infrastructure of open source]({{< relref "critical-human-infrastructure.md" >}})
* [Jessica Tegner](https://jessicategner.com/) shared how she made the leap from being a contributor to `pypandoc` to the maintainer for it in her story on [proactively offering help]({{< relref "journey-to-maintainership.md" >}})
* [Filippo Valsorda](https://filippo.io/) described the unique burdens and responsibilities that come from [maintaining open source security projects]({{< relref "peculiarities-security-maintainership" >}})

We highly recommend catching up on these stories!

## Time commitment

Each of our stories is made possible by four roles: _coordinator_, _facilitator_, _editor_, and _publisher_. We break up the responsibilities as much as possible, but contributors will often serve in multiple capacities. For Maintainer Month, the time commitment for each role approximated:

| Role | Time spent on tasks |
| :--- | ------------------: |
| Coordinator | 4 hours |
| Facilitator | 3 hours |
| Editor | 4 hours |
| Publisher | 2 hours |
| **Total** | **13 hours** |

There's additional work in there! What about the storytellers themselves? We can add in their time commitment, which for three stories, came to ~2 hours. That brings us up to **15 hours** of work.

## Financing the stories

As we've gone along in the journey of Open Source Stories, we have tried to keep costs as low as possible. However, it became clear that to make it a viable project, we would need to incur some additional expenses. For instance, the editor's time commitment would be prohibitively higher if we didn't pay for human transcription services. For just the three stories we published during Maintainer Month, the approximate outlay for Open Source Stories was:

| Service | Cost |
| :------ | ---: |
| Transcription | $82 |
| Audio hosting | $10 |
| Scheduling software | $30 |
| Productivity tools | $28 |
| **Total** | **$150** |

Transcription is by far our highest expense, and our most valuable. Sure, we could _not_ have transcripts, but then our stories would not be accessible to all. Skipping transcription would marginalize some of the very people we aim to elevate.

May's outlay was higher than our normal, but regularly capturing three stories per month would be amazing! It's something we hope to work towards.

## Obligatory call to action

Right now, there are two primary ways to help us keep capturing and sharing untold narratives of open source.

The first is by volunteering as an editor! Editors make a **_huge_** difference in the quality of our finished stories. Being an editor requires an eye for detail, a passion for clarity, and periodic availability for asynchronous work. You can read more about the editing process and responsibilities for editors in our [editorial guide]({{< relref "editorial-guide.md" >}}).

The second is much more mundane, but still critically important: contributing financially. As of the time of publishing, we have six wonderful sponsors that collectively contribute nearly $75 per month. We would not be able to operate the way we do today without them, _thank you_. If you would like to sponsor Open Source Stories, you may currently do so through [GitHub Sponsors](https://github.com/sponsors/opensourcestories).

Until Maintainer Month 2024...keep celebrating maintainers 🥳
6 changes: 6 additions & 0 deletions data/podcasts.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,11 @@
"subscribe": "https://www.google.com/podcasts?feed=aHR0cHM6Ly93d3cub3BlbnNvdXJjZXN0b3JpZXMub3JnL3N0b3JpZXMvaW5kZXgueG1s",
"icon": "google.svg",
"order": 0
},
"amazon": {
"name": "Amazon Music",
"subscribe": "https://music.amazon.com/podcasts/a1bac012-21cb-40eb-9538-1fd9460fafa8/open-source-stories",
"icon": "podcast.svg",
"order": 0
}
}
2 changes: 1 addition & 1 deletion layouts/_default/single.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ <h1 class="f1 mt3 mb1">
</p>
{{ end }}
{{ if not .Date.IsZero }}
<time class="f6 mv4 dib tracked" {{ printf `datetime="%s"` (.Date.Format "2006-01-02T15:04:05Z07:00") | safeHTMLAttr }}>
<time class="f6 mv4 dib tracked" {{ printf `datetime="%s"` (.Date.Format "2006-01-02") | safeHTMLAttr }}>
{{- .Date | time.Format (default "January 2, 2006" .Site.Params.date_format) -}}
</time>
{{end}}
Expand Down
24 changes: 24 additions & 0 deletions layouts/partials/social-share.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{{ $title := .Title }}
{{ $url := printf "%s" .Permalink | absLangURL }}

{{ $facebook_href := printf "https://www.facebook.com/sharer.php?u=%s" $url }}
{{ $twitter_href := printf "https://twitter.com/share?url=%s&text=%s" $url $title }}
{{ with site.Social.twitter }}
{{ $twitter_href = printf "%s&via=%s" $twitter_href . }}
{{ end }}
{{ $linkedin_href := printf "https://www.linkedin.com/shareArticle?mini=true&url=%s&title=%s" $url $title }}
{{ $hrefs := dict "facebook" $facebook_href "twitter" $twitter_href "linkedin" $linkedin_href }}

{{ $services := where (partialCached "func/socials/Get" "socials/Get") "share" true }}
{{ if not ($.Param "disable_share") }}
<div id="sharing" class="mt3 ananke-socials-share">
{{ range $service := $services }}
{{ $href := index $hrefs .name }}
<a href="{{ $href }}" class="ananke-social-link {{ .name }} no-underline" aria-label="share on {{ .label }}">
{{ with .icon }}
<span class="icon"> {{ . }}</span>
{{ end }}
</a>
{{ end }}
</div>
{{ end }}
15 changes: 15 additions & 0 deletions layouts/posts/list.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{{ define "main" }}
<article class="pa3 pa4-ns nested-copy-line-height nested-img">
<section class="cf ph3 ph5-l pv3 pv4-l f4 center lh-copy measure-wide almost-black">
{{ .Content }}
</section>
<aside class="flex-ns flex-wrap justify-around mt5">
{{ range .Paginator.Pages }}
<div class="relative w-100 w-30-l mb4 bg-white">
{{ .Render "summary" }}
</div>
{{ end }}
</aside>
{{ template "_internal/pagination.html" . }}
</article>
{{ end }}
60 changes: 60 additions & 0 deletions layouts/posts/single.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{{ define "header" }}
{{ partial "page-header.html" . }}
{{ end }}

{{ define "main" }}
{{ $section := .Site.GetPage "section" .Section }}
<article class="flex-l flex-wrap justify-between mw8 center ph3">
<header class="mt4 w-100">
<aside class="instapaper_ignoref b helvetica tracked">
{{with .CurrentSection.Title }}{{. | upper }}{{end}}
</aside>
{{ partial "social-share.html" . }}
<h1 class="f1 mt3 mb1">
{{- .Title -}}
</h1>
{{ with .Params.author | default .Site.Params.author }}
<p class="tracked">
{{ $.Render "by" }} <strong>
{{- if reflect.IsSlice . -}}
{{ delimit . ", " | markdownify }}
{{- else -}}
{{ . | markdownify }}
{{- end -}}
</strong>
</p>
{{ end }}
<p class="f6 dib tracked">Published
{{ if .Params.Authors }} by {{ delimit .Params.Authors ", " }} {{ end }}
{{ if not .Date.IsZero }}
on <time {{ printf `datetime="%s"` (.Date.Format "2006-01-02") | safeHTMLAttr }}>
{{- .Date | time.Format (default "January 2, 2006" .Site.Params.date_format) -}}
</time>
{{end}}
</p>


{{ if (or (eq (.Param "show_reading_time") true) (eq $section.Params.show_reading_time true) )}}
<span class="f6 mv4 dib tracked"> - {{ i18n "readingTime" .ReadingTime }} </span>
<span class="f6 mv4 dib tracked"> - {{ i18n "wordCount" .WordCount }} </span>
{{ end }}
</header>
<div class="nested-copy-line-height lh-copy {{ $.Param "post_content_classes" | default "avenir"}} f4 nested-links {{ $.Param "text_color" | default "almost-black" }} {{ cond (eq $.Site.Language.LanguageDirection "rtl") "pl4-l" "pr4-l" }} w-two-thirds-l">
{{- .Content -}}
{{- partial "tags.html" . -}}
<div class="mt6 instapaper_ignoref">
{{ if .Site.DisqusShortname }}
{{ template "_internal/disqus.html" . }}
{{ end }}
{{ if .Site.Params.commentoEnable }}
{{- partial "commento.html" . -}}
{{ end }}
</div>
</div>

<!-- <aside class="w-30-l mt6-l">
{{- partial "menu-contextual.html" . -}}
</aside> -->

</article>
{{ end }}
21 changes: 21 additions & 0 deletions layouts/posts/summary.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<div class="relative w-100 mb4 bg-white nested-copy-line-height">
<div class="bg-white mb3 pa4 dark-gray overflow-hidden">
<h1 class="f3 fw1 mt0 lh-title">
<a href="{{ .RelPermalink }}" class="link black dim">
{{ .Title }}
</a>
</h1>
{{ if not .Date.IsZero }}
<p class="f6 dib tracked">Published
{{ if .Params.Authors }} by {{ delimit .Params.Authors ", " }} {{ end }} on
<time {{ printf `datetime="%s"` (.Date.Format "2006-01-02") | safeHTMLAttr }}>
{{- .Date | time.Format (default "January 2, 2006" .Site.Params.date_format) -}}
</time></p>
{{ end }}
{{ if .Summary }}
<div class="f6 f5-l lh-copy nested-copy-line-height nested-links">
{{ .Summary }}
</div>
{{ end }}
</div>
</div>
2 changes: 1 addition & 1 deletion layouts/stories/single.html
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ <h1 class="f1 mt3 mb1">
</p>
{{ end }}
{{ if not .Date.IsZero }}
<time class="f6 mv4 dib tracked" {{ printf `datetime="%s"` (.Date.Format "2006-01-02T15:04:05Z07:00") | safeHTMLAttr }}>
<time class="f6 mv4 dib tracked" {{ printf `datetime="%s"` (.Date.Format "2006-01-02") | safeHTMLAttr }}>
{{- .Date.Format (default "January 2, 2006" .Site.Params.date_format) -}}
</time>
{{end}}
Expand Down