Skip to content

Revise Projects Page#656

Open
reardonj wants to merge 7 commits into
typelevel:mainfrom
reardonj:revise-projects-page
Open

Revise Projects Page#656
reardonj wants to merge 7 commits into
typelevel:mainfrom
reardonj:revise-projects-page

Conversation

@reardonj

@reardonj reardonj commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Revises the projects index to group projects in some fashion. I have split out Organization and Affiliate projects to separate sections, then broke the org projects into a few more groups to highlight the most important ones.

The big changes are:

  • This design separates the org projects from the affiliate ones to specifically highlight org projects.
  • Remove affiliate tag as they are now in one section
  • Add back to top links
  • Add some prose describing what org vs affiliates are

The directory file itself is completely reorganized to sections from alphabetical so that diff is unfortunately large.

Alternatively to the full org/affiliate split, I could add the affiliate tag back and put the affiliates under the same groups as the org ones.

There is still a bit of cleanup I need to do, but this seemed like a good point to solicit some feedback. Still TODO:

  • Formatting pass to clean up descriptions
  • [ ] Check remaining projects for website to link to we can deal with this when affiliates are reviewed.

Fix #374


Preview

projects-page-00 projects-page-01 projects-page-02 projects-page-03 projects-page-04 projects-page-05 projects-page-06 projects-page-07 projects-page-08 projects-page-09 projects-page-10 projects-page-11 projects-page-12 projects-page-13

Revises the projects index to group projects in some fashion. I have split out Organization and Affiliate projects to separate sections, then broke the org projects into a few more groups to highlight the most important ones.
@armanbilge armanbilge requested a review from a team June 23, 2026 23:45
Comment thread src/projects/directory.conf Outdated
},
{
title: "Cats Collections"
description: "Niche purely functional collection types"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I'm sorry, but I take exception at characterizing cats-collections as "niche". It has a cats.Hash-based hashmap and a cats.Order-based treemap. Those are not niche, but the cats-compatible versions of two of the most fundamental data structures.

I'm sure most people just use the stdlib maps. But I think that's mainly a visibility issue. And putting cats-collections into "miscellaneous", and calling it "niche" exacerbates that visibility issue. In my opinion, of course.

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.

The documentation for that project is not helping. It doesn’t mention the tree or hashmap, so I don’t know how anyone is supposed to figure out they’re even there without diving into the source code. I didn’t know.

I don’t love the Miscellaneous name, but was getting to a point where grouping things more seemed less useful. Any suggestions for a better category?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Simply "Other" may come across as more neutral-sounding, maybe?

@durban durban Jun 24, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Yeah, the documentation issue is a fair point. I knew about these maps, because I use them. (Also, logically, they should exist, but that's not saying a lot. If I recall correctly, the hashmap didn't exist for a while.) I think the changes you've pushed are good, thank you.

Comment thread src/projects/directory.conf Outdated
platforms: [js, jvm, native]
},
{
title: "Cats MTL"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Nowadays Cats Effect depends on Cats MTL, so in a way it's just as fundamental.

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.

Sure, but the point of this structure is to point at the things for users to use. Actually making use of MTL in user code is pretty optional.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Fair point. Though I think it would be appropriate to put Cats MTL into "Core". But I won't fight for that.

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.

I view the core section as "This is the minimum set of libraries you need to be aware of to try building things on the Typelevel stack". Maybe even fs2 is optional under that, but streaming style code is very common these days.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I tend to think of fs2 as nearly as central as cats-effect itself at this point -- without that, IMO "core" would reduce to just Cats.

And really, that illustrates that the lines are fuzzy. While we talk about the "Typelevel stack", the reality is that the definition depends on what you're trying to build.

So to me, "core" is a statistical artifact: what are the libraries that most TL applications, across a variety of domains, wind up needing? I believe that clearly includes Cats, cats-effect and fs2; I'm less sure about everything else.

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.

I am also viewing this from the application developer’s perspective. I suspect a library perspective would instead be highlighting cats, discipline and scalacheck. But I also expect a prospective library author to not need the project index. I want this page to be useful to new user that was told they should try this cool Typelevel stuff. For that I wanted to plan the signposts of

  1. You usually use these 3 core libraries
  2. Logging and observably are covered.
  3. Testing is covered.
  4. Various integrations are covered.
  5. There is also a bunch of other stuff.
  6. There are build and doc tools if you want them.

A future project would be to have a comprehensive guide to building a Typelevel stack library, but that is wildly outside the scope of this page.

Comment thread src/projects/directory.conf Outdated
- Miscellaneous -> Other Projects
- Less niche description of Cats Collections
- spell out STM
@dhinojosa

Copy link
Copy Markdown

Looks amazing @reardonj! Can we add Droste? The underrated recursion scheme library?

But there are some issues that maybe you, @jducoeur, @armanbilge, or anyone on this PR can address.

Droste, I thought I remembered, was brought in as a core a while ago, even though the GitHub is still at higherkindness, also I just verified that it is using the Scala Code of Conduct, not the Typelevel Code of Conduct, so there may be an issue there still.

@dhinojosa

Copy link
Copy Markdown

We should strongly consider removing this page from the Cats Project Laika, so that this page on the main site can be the authoritative list. This would also involve reconciling the projects from the cats list.

https://typelevel.org/cats/typelevelEcosystem.html

  • Bring in any missing projects from Cats TypelevelEcosystem Page
  • Create an issue in Cats to remove that page

@dhinojosa

Copy link
Copy Markdown

Since this is looking fantastic, we can close this issue when we are done. Yay

#374

@reardonj

Copy link
Copy Markdown
Contributor Author

Looks amazing @reardonj! Can we add Droste? The underrated recursion scheme library?

But there are some issues that maybe you, @jducoeur, @armanbilge, or anyone on this PR can address.

Droste, I thought I remembered, was brought in as a core a while ago, even though the GitHub is still at higherkindness, also I just verified that it is using the Scala Code of Conduct, not the Typelevel Code of Conduct, so there may be an issue there still.

I’m trying to avoid adding / removing libraries from the page unless they were obviously missing from the major categories (weaver, sbt-Typelevel). My goal here is to make the page useful, not to add every missing library.

@dhinojosa

Copy link
Copy Markdown

I’m trying to avoid adding / removing libraries from the page unless they were obviously missing from the major categories (weaver, sbt-Typelevel). My goal here is to make the page useful, not to add every missing library.

Has that always been the purpose of the page? Promote only a few major projects or promote all? Should there be another page for "the others", I am not sure that leaving out projects would be a good thing for us, particularly if someone is looking for a library to fit their needs and we have it, but it is never found because we didn't promote it, and would the library maintainers feel they are not part of the community?

@reardonj

Copy link
Copy Markdown
Contributor Author

I’m trying to avoid adding / removing libraries from the page unless they were obviously missing from the major categories (weaver, sbt-Typelevel). My goal here is to make the page useful, not to add every missing library.

Has that always been the purpose of the page? Promote only a few major projects or promote all? Should there be another page for "the others", I am not sure that leaving out projects would be a good thing for us, particularly if someone is looking for a library to fit their needs and we have it, but it is never found because we didn't promote it, and would the library maintainers feel they are not part of the community?

Sorry, for this PR, this is what I am trying to do. I’d like to make sure all projects are on this page, but my goal in this PR was just to improve the overall structure. The current structure doesn’t do anything to point out the very important stuff.

I could remove the other projects / affiliate projects distinction and maybe upgrade a few affiliates to other categories where they make sense if we want to integrate the affiliates more.

@dhinojosa

dhinojosa commented Jun 24, 2026

Copy link
Copy Markdown

Sonic should be pulled. The Github is a 404

@dhinojosa

Copy link
Copy Markdown

Maybe related, I created an audit report of the above projects using ChatGPT. See the results here. https://discord.com/channels/632277896739946517/1519376584111427624/1519376588070977726

NOTE: I did not use the cats list from here as input, https://typelevel.org/cats/typelevelEcosystem.html

@jducoeur

Copy link
Copy Markdown
Member

Droste, I thought I remembered, was brought in as a core a while ago, even though the GitHub is still at higherkindness, also I just verified that it is using the Scala Code of Conduct, not the Typelevel Code of Conduct, so there may be an issue there still.

Not only is Droste not core, I don't think it's even officially an affiliate? Going back to the projects list as of late last year, I don't see it there.

It's obviously a friendly project, but I don't believe we're currently entitled to list it at all.

(Possibly something we might think about rectifying at some point, but note that the project is largely auto-maintained at this point, AFAICT.)

@jducoeur

Copy link
Copy Markdown
Member

We should strongly consider removing this page from the Cats Project Laika, so that this page on the main site can be the authoritative list. This would also involve reconciling the projects from the cats list.

In principle I get what you're saying, but that's not a small thing, and I'm not sure it's possible. The lists mean different things.

The list here is of projects that have formally committed to the Typelevel organization, at least to the degree of playing by our rules. The list on the Cats page is projects that say they use Cats -- a much broader scope (and a much easier lift), which is why the list is much longer.

So while the lists feel kinda-sorta redundant, they aren't actually, and both have value. We should think about how they relate to each other and whether we could do better, but I think that's a fairly chewy project that needs a lot of discussion.

@jducoeur

Copy link
Copy Markdown
Member

I’m trying to avoid adding / removing libraries from the page unless they were obviously missing from the major categories (weaver, sbt-Typelevel). My goal here is to make the page useful, not to add every missing library.

Has that always been the purpose of the page? Promote only a few major projects or promote all? Should there be another page for "the others", I am not sure that leaving out projects would be a good thing for us, particularly if someone is looking for a library to fit their needs and we have it, but it is never found because we didn't promote it, and would the library maintainers feel they are not part of the community?

IMO, this page should list all official libraries -- ones that have gone through the process of applying to be part of Typelevel, including both Organization and Affiliate. (In the medium term, we should figure out how to clarify the difference between those on this page, but that's probably a later PR.)

The key point of all of my comments here, which I think isn't obvious to many of the new members of the TSC, is that there's a whole process for becoming "official" (which starts by opening a "Project Submission" issue against the tsc repo), which is necessarily consensual -- projects have to opt-in, and that carries constraints on the applicants. We shouldn't list anybody who hasn't agreed to play by our rules.

(This is also why I'm so hard-assed about the term "ecosystem". The TL ecosystem is very large. The official projects are a modest subset of that, and the Organization projects are a small subset of those. It's a three-layered onion, and the differences matter.)

@jducoeur jducoeur left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

IMO this is a good step forward -- I'm generally fine with merging as-is, although we'll want to continue to evolve this page steadily.

Comment thread src/projects/directory.conf Outdated
@SethTisue

Copy link
Copy Markdown
Member

👏 to this huge step forward

@dhinojosa

dhinojosa commented Jun 24, 2026

Copy link
Copy Markdown

Droste, I thought I remembered, was brought in as a core a while ago, even though the GitHub is still at higherkindness, also I just verified that it is using the Scala Code of Conduct, not the Typelevel Code of Conduct, so there may be an issue there still.

Not only is Droste not core, I don't think it's even officially an affiliate? Going back to the projects list as of late last year, I don't see it there.

It's obviously a friendly project, but I don't believe we're currently entitled to list it at all.

(Possibly something we might think about rectifying at some point, but note that the project is largely auto-maintained at this point, AFAICT.)

I don't know where I saw it, maybe old days Twitter, I believe tpolecat or one of the forefathers of Typelevel helped usher it in? @armanbilge first opened the Discord channel, so he would definitely have some information.

If there isn't someone to care for and nurture it, I would volunteer. I think it is one of the underrated yet important ones. Since we don't have a recursion scheme library, I don't think there is one other than Droste.

@jducoeur

Copy link
Copy Markdown
Member

I believe tpolecat or one of the forefathers of Typelevel helped usher it in?

Possible -- I'm pretty sure he's who I first heard about Matryoshka from.

If there isn't someone to care for and nurture it, I would volunteer. I think it is one of the underrated yet important ones. Since we don't have a recursion scheme library, I don't think there is one other than Droste.

I agree, but again, we don't own it. Droste belongs to Higherkindness, which is a little organization unto itself, and I have no reason to believe they have any desire to be officially affiliated with us. I'm not even sure who is in charge of that -- I had vaguely thought that was Erik's project, but it looks like I'm incorrect about that. Andy Scott seems to have initially bootstrapped it?

Might be worth reaching out to them, touching base, and getting their sense of where the organization is at. But it's very much not our project unless they specifically would like us involved.

(Yes, I'm being a pain here, but as Corporate Treasurer, I care a lot about the legalities, and we need to be careful about intellectual property, especially now that we're a Real And For True Foundation.)

@dhinojosa

Copy link
Copy Markdown

I’m trying to avoid adding / removing libraries from the page unless they were obviously missing from the major categories (weaver, sbt-Typelevel). My goal here is to make the page useful, not to add every missing library.

Has that always been the purpose of the page? Promote only a few major projects or promote all? Should there be another page for "the others", I am not sure that leaving out projects would be a good thing for us, particularly if someone is looking for a library to fit their needs and we have it, but it is never found because we didn't promote it, and would the library maintainers feel they are not part of the community?

Scanning these on the Cats page, I can see what you mean, @reardonj

Examples include...

  1. Scala-Forex hasn't been updated since 2022
  2. Hammock doesn't go anywhere, 404.
  3. Many of the Davenverse repositories need some decisions

Clean up on aisle cats!

- add sbt-tpolecat
- add scalac-options
- periods, various other editing tweaks
- removed sonic as I cannot locate it
@reardonj

Copy link
Copy Markdown
Contributor Author

Okay, made a few textual tweaks, added sbt-tpolecat and scalac-options. Dropped sonic as I can't find any evidence of it existing anywhere still. I will leave more rigorous affiliate review to others.

Comment thread src/projects/directory.conf Outdated
Co-authored-by: Zainab Ali <zainab.ali.london@gmail.com>
@reardonj reardonj requested a review from a team June 27, 2026 11:25

@Koroeskohr Koroeskohr left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

There's probably more to do but let's get this first big milestone out of the way.

@reardonj reardonj force-pushed the revise-projects-page branch from 039f275 to bb3f04a Compare June 27, 2026 13:50
- Add tags for the groups.
- Manage layout in the projects page.
@reardonj reardonj force-pushed the revise-projects-page branch from bb3f04a to 80371a3 Compare June 27, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Clarify "member" vs "affiliate"

8 participants