Skip to content
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
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions news/2026-10-13/technical-leadership-committee-launch.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: Launching the Technical Leadership Committee
---

Following the [call for applications to the Technical Leadership Committee](/news/2026-08-05/technical-leadership-committee.html), the Haskell Foundation is proud to present the formed committee. Our inaugural Technical Leadership Committee is composed of:

* Julian Ospald (Chair)
* Simon Marlow (Board Liaison)
* Joshua Miller
* Rodrigo Mesquita

Committee members were chosen for their demonstrated technical expertise, historical community involvement, and _bold vision_ for the future of Haskell. Head on over to the [Technical Leadership](/technical-leadership) page to learn a little bit more about them, and stay tuned for updates from the Technical Leadership Committee in the near future!
43 changes: 43 additions & 0 deletions site.hs
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,25 @@ main = hakyllWith config $ do
>>= loadAndApplyTemplate "templates/boilerplate.html" sponsors
>>= relativizeUrls

-- Technical leadership committee --------------------------------------------------------------------------------------------
--
-- This committee is special in that it needs a space to report what projects it's currently running
-- TODO: once there are funded projects, we should have a mechanism that lists
-- them on this page
match "technical-leadership/members/*.markdown" $ compile pandocCompiler
create ["technical-leadership/index.html"] $ do
route idRoute
compile $ do
sponsors <- buildBoilerplateCtx (Just "Technical Leadership Committee")

(members :: [Item String]) <- sortTLCByRole =<< loadAll ("technical-leadership/members/*.markdown" .&&. hasNoVersion)
let tlcContext = listField "members" (metadataField <> defaultContext) (pure members) <> defaultContext

makeItem ""
>>= loadAndApplyTemplate "templates/technical-leadership/page.html" tlcContext
>>= loadAndApplyTemplate "templates/boilerplate.html" sponsors
>>= relativizeUrls

-- news ------------------------------------------------------------------------------------------------
-- An entry is either a full article (own page) or a headline linking out
-- (front matter `link`, no own page). `hasLink` splits the two.
Expand Down Expand Up @@ -792,6 +811,30 @@ sortBoardByRole items = do
role <- either fail pure (parseRole title)
pure (role, item)

{- | A TLC member's role -}
data TLCRole
= TLCChair
| TLCBoardLiaison
| TLCMember
deriving (Eq, Ord, Show)

parseTLCRole :: String -> Either String TLCRole
parseTLCRole title = case title of
"Chair" -> Right TLCChair
"Board Liaison" -> Right TLCBoardLiaison
"Member" -> Right TLCMember
_ -> Left ("parseRole: unexpected TLC role " ++ show title)

sortTLCByRole :: [Item String] -> Compiler [Item String]
sortTLCByRole items = do
ranked <- mapM tagWithRole items
pure $ map snd $ sortOn fst ranked
where
tagWithRole item = do
title <- fromMaybe "Member" <$> getMetadataField (itemIdentifier item) "role"
role <- either fail pure (parseTLCRole title)
pure (role, item)

--------------------------------------------------------------------------------------------------------
-- Pandoc extensions -----------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
Expand Down
6 changes: 6 additions & 0 deletions technical-leadership/members/joshua.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
name: Joshua Miller
image: /assets/images/technical-leadership/joshuamiller.png
---

Josh has been using Haskell at H-E-B since 2018 to build resilient, long-lived systems for the supply chain. He is a firm believer in keeping software open and collaborative, and his desire to push Haskell in industry is evidenced by his ongoing open-source work (e.g. Arbiter). In addition to programming, Josh likes to play piano and produce his own music.
9 changes: 9 additions & 0 deletions technical-leadership/members/julian.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
name: Julian Ospald
image: /assets/images/technical-leadership/julianospald.png
role: Chair
---

Julian started his open source journey as a Gentoo Linux developer, working with large teams of distributed volunteers. He picked up Haskell when a friend told him about this strange new language that would revolutionize all of software engineering. This spark turned into a mission to fix tooling around Haskell (e.g. GHCup) and contribute to the larger ecosystem. His professional journey has taken him across fintech startups (Capital Match), banks (Standard Chartered Bank) and software labs (IOG).

Julian believes in open source, human collaboration and unix principles. He draws his passion from the beauty of the craft and the need to support and exercise good engineering.
6 changes: 6 additions & 0 deletions technical-leadership/members/rodrigo.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
name: Rodrigo Mesquita
image: /assets/images/technical-leadership/rodrigomesquita.png
---

Rodrigo is a compiler engineer working at Well-Typed on GHC, the Haskell Debugger, and other open-source core ecosystem tools full-time (besides more Haskell projects on his free time). Rodrigo is also passionate about teaching and academia and is currently an invited professor at FCUL in Lisbon; his work on the interaction of laziness and linearity was recently published at POPL, and he’s interested in doing research when time permits. In his additional free time, he is preparing to train for a triathlon.
7 changes: 7 additions & 0 deletions technical-leadership/members/simon.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
name: Simon Marlow
image: /assets/images/board-members/sm.png
role: Board Liaison
---

Simon worked on GHC full time from about 1998 to 2013, and sporadically since then. He is the main author of the runtime system, the code generator, and various other parts of the compiler. He is the author of the O'Reilly book "Parallel and Concurrent Programming in Haskell". In 2013 he moved to Facebook (now Meta) where he led the team that built the largest ever production Haskell deployment, Sigma, which was a platform for combating abuse on Facebook, Instagram and WhatsApp. While at Meta he also led the team that built Glean, a system for collecting and querying information about source code at scale; Glean is open-source and is still in use as a core part of Meta's developer tooling infrastructure. He left Meta in February 2025 and nowadays he spends his time mostly riding his bike and hacking on things that he finds interesting.
5 changes: 3 additions & 2 deletions templates/mobile-nav-flyout.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,12 @@
<a href="/" class="block py-3 border-t border-gray-300 hover:bg-gray-100 text-lg font-medium">Home</a>

<div class="block py-3 border-t border-gray-300 text-lg font-medium text-gray-500">About</div>
<a href="/who-we-are" class="block py-3 pl-6 border-t border-gray-300 hover:bg-gray-100 text-lg font-medium">Current Board</a>
<a href="/who-we-are/past-boards" class="block py-3 pl-6 border-t border-gray-300 hover:bg-gray-100 text-lg font-medium">Past Boards</a>
<a href="/who-we-are" class="block py-3 pl-6 border-t border-gray-300 hover:bg-gray-100 text-lg font-medium">Board of Directors</a>
<a href="/technical-leadership" class="block py-3 pl-6 border-t border-gray-300 hover:bg-gray-100 text-lg font-medium">Technical Leadership</a>
<a href="/contact" class="block py-3 pl-6 border-t border-gray-300 hover:bg-gray-100 text-lg font-medium">Contact</a>
<a href="/vision" class="block py-3 pl-6 border-t border-gray-300 hover:bg-gray-100 text-lg font-medium">Vision</a>
<a href="/careers" class="block py-3 pl-6 border-t border-gray-300 hover:bg-gray-100 text-lg font-medium">Careers</a>
<a href="/who-we-are/past-boards" class="block py-3 pl-6 border-t border-gray-300 hover:bg-gray-100 text-lg font-medium">Past People</a>

<a href="/podcast" class="block py-3 border-t border-gray-300 hover:bg-gray-100 text-lg font-medium">Podcast</a>

Expand Down
10 changes: 7 additions & 3 deletions templates/nav.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,22 @@
<div class="pt-2 absolute top-full w-44 bg-white shadow-md z-10 hidden" id="who-we-are-nav-item-menu">

<a class="block p-4 border-t-2 hover:bg-gray-50 cursor-pointer" href="/who-we-are">
Current Board
Board of Directors
</a>

<a class="block p-4 border-t-2 hover:bg-gray-50 cursor-pointer" href="/who-we-are/past-boards">
Past Boards
<a class="block p-4 border-t-2 hover:bg-gray-50 cursor-pointer" href="/technical-leadership">
Technical Leadership
</a>

<a class="block p-4 border-t-2 hover:bg-gray-50 cursor-pointer" href="/contact">Contact</a>


<a class="block p-4 border-t-2 hover:bg-gray-50 cursor-pointer" href="/vision">Vision</a>
<a class="block p-4 border-t-2 hover:bg-gray-50 cursor-pointer" href="/careers">Careers</a>

<a class="block p-4 border-t-2 hover:bg-gray-50 cursor-pointer" href="/who-we-are/past-boards">
Past People

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is called Previous people on the mobile nav. Should be one name I guess.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, fixed

</a>
</div>

</li>
Expand Down
14 changes: 14 additions & 0 deletions templates/technical-leadership/member.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<div class="border border-gray-300 rounded py-8 px-6 sm:px-12 md:px-6 lg:px-12 space-y-6">
<div class="sm:flex md:block xl:flex items-center">
<img class="h-32 mr-8 mb-6 sm:mb-0 md:mb-6 xl:mb-0" src="$image$" alt="$name$">
<div class="">
<h3 class="text-xl font-semibold">$name$</h3>
$if(role)$
<div class="uppercase text-lg font-medium">$role$</div>
$endif$
</div>
</div>
<div>
$body$
</div>
</div>
42 changes: 42 additions & 0 deletions templates/technical-leadership/page.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<div class="max-w-screen-xl mx-auto py-16 md:py-24">
$partial("templates/corners.html")$

<div class="text-center pt-12 md:pt-20 px-12 sm:px-16 md:px-24 lg:px-36 ">
<h1 class="text-2xl sm:text-4xl md:text-5xl">Technical Leadership Committee</h1>
</div>

<div class="mt-16 md:mt-24">
<div class="xl:max-w-screen-xl mx-auto md:px-12 lg:px-16">
<div class="bg-gray-800 shadow-sm px-6 sm:px-12 lg:px-16 py-12 md:py-16">
<div class="max-w-3xl mx-auto space-y-4 lg:text-xl text-gray-300">
<p class="text-gray-300">
The Technical Leadership Committee is the body behind the Haskell Foundation’s technical vision. The committee is responsible for expressing a technical vision for the Haskell community and allocating the Haskell Foundation’s resources towards achieving this vision.

</p>
</div>
<div class="max-w-3xl mx-auto mt-8 space-y-2 text-gray-400">
<p class="text-gray-400">
If you wish to contact the Technical Leadership Committee, you may do so via <a href="mailto:technical-leadership@haskell.foundation">technical-leadership@haskell.foundation</a>.
</p>
</div>
</div>
</div>
</div>


<div class="max-w-screen-xl mx-auto px-4 sm:px-12 lg:px-16 py-16 md:py-24">
<h2 class="font-normal text-3xl md:text-4xl text-center">Committee Members</h2>
<div class="mt-10 md:mt-12 lg:mt-16 xl:mt-20 grid gap-8 md:grid-cols-2">
$for(members)$
$partial("templates/technical-leadership/member.html")$
$endfor$
</div>
</div>

<div class="max-w-screen-xl mx-auto px-4 sm:px-12 lg:px-16 py-16 md:py-24">
<h2 class="font-normal text-3xl md:text-4xl text-center">Projects</h2>
<p class="mt-10 lg:text-xl text-center">
Come back soon!
</p>
</div>
</div>
Loading