Revise Projects Page#656
Conversation
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.
| }, | ||
| { | ||
| title: "Cats Collections" | ||
| description: "Niche purely functional collection types" |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
Simply "Other" may come across as more neutral-sounding, maybe?
There was a problem hiding this comment.
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.
| platforms: [js, jvm, native] | ||
| }, | ||
| { | ||
| title: "Cats MTL" |
There was a problem hiding this comment.
Nowadays Cats Effect depends on Cats MTL, so in a way it's just as fundamental.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Fair point. Though I think it would be appropriate to put Cats MTL into "Core". But I won't fight for that.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
- You usually use these 3 core libraries
- Logging and observably are covered.
- Testing is covered.
- Various integrations are covered.
- There is also a bunch of other stuff.
- 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.
- Miscellaneous -> Other Projects - Less niche description of Cats Collections - spell out STM
|
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 |
|
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
|
|
Since this is looking fantastic, we can close this issue when we are done. Yay |
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. |
|
Sonic should be pulled. The Github is a 404 |
|
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 |
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.) |
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. |
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
left a comment
There was a problem hiding this comment.
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.
|
👏 to this huge step forward |
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. |
Possible -- I'm pretty sure he's who I first heard about Matryoshka from.
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.) |
Scanning these on the Cats page, I can see what you mean, @reardonj Examples include...
Clean up on aisle cats! |
- add sbt-tpolecat - add scalac-options - periods, various other editing tweaks - removed sonic as I cannot locate it
|
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. |
Co-authored-by: Zainab Ali <zainab.ali.london@gmail.com>
Koroeskohr
left a comment
There was a problem hiding this comment.
There's probably more to do but let's get this first big milestone out of the way.
039f275 to
bb3f04a
Compare
- Add tags for the groups. - Manage layout in the projects page.
bb3f04a to
80371a3
Compare
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:
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:
[ ] Check remaining projects for website to link towe can deal with this when affiliates are reviewed.Fix #374
Preview