Add getting started pages - #616
Conversation
reardonj
left a comment
There was a problem hiding this comment.
One very minor issue but otherwise looks like a good start! We can probably find some more learning resources, but those can be added later.
jducoeur
left a comment
There was a problem hiding this comment.
Minor suggestion: I'd adjust the order of the suggested books. I teach more or less these books all the time, and my suggested order is always:
- Creative Scala or Essential Scala first, since they are teaching the basics of the language.
- Then Scala with Cats, which builds on those to go deeper into category theory.
- Then FPiS, which is much deeper but way more effort. Putting FPiS too early can turn people off, because they get bogged down, not having enough background to appreciate it yet.
Caveat: that's based on FPiS v1. I haven't had time yet to work my way through v2, and it's possible that it really is that much more approachable, but I'm cautious.
It is still not a good intro to Scala in general. Never read 1st edition so can't compare there. |
|
FYI, I'm also building a full contributing guide off of this branch. I've reordered the books there. |
|
While I think of it: we also might want to consider adding Essential Effects, which I've used to teach cats-effect a couple of times. And when Zainab's Functional Stream Processing is ready, we might want to consider that one here as well. (But that's for a later PR.) |
That link appears to be early access too? |
|
Is it? Wild -- I think I've been teaching that book on and off for at least five years now. We might ask Adam about the status. |
Co-authored-by: Justin Reardon <me@jmreardon.com>
|
thank you for the feedback! i have re ordered the book recommendations, and am happy to help add anything else |
reardonj
left a comment
There was a problem hiding this comment.
Sorry, a few other minor things I noticed while working on my PR. If you have time to fix those up we can get this merged. Otherwise I have a branch that builds on this that will be out for review in a few days.
|
|
||
| #### Open a PR and iterate | ||
| - Fork the repo, create a branch, and implement the change. Add or update tests where appropriate. | ||
| - Open a PR with a clear description of the problem and your solution. Read the [Typelevel AI policy](https://typelevel.org/gsoc/ai.html). |
There was a problem hiding this comment.
This is the GSoC AI policy, not an org-wide one.
| - Open a PR with a clear description of the problem and your solution. Read the [Typelevel AI policy](https://typelevel.org/gsoc/ai.html). | |
| - Open a PR with a clear description of the problem and your solution. |
|
|
||
| Typelevel projects power a large part of the functional Scala ecosystem. They are also complex, long-lived codebases with active communities. Contributing can feel intimidating at first, but the path in is actually quite simple! | ||
|
|
||
| Build something small with Cats Effect. Try streaming something with FS2. Use http4s for a simple service. Build with [Typelevel Toolkit](https://typelevel.org/blog/). Build a static site with Laika. |
There was a problem hiding this comment.
This should be linked to the TL Toolkit site.
Fixes #590
Added two new pages under
src/community/:1.Start Contributing: outlines the typical contribution workflow across Typelevel projects, including issue selection (good-first-issue board), communication norms, PR process (included the AI policy), and Discord channels for help
2.Learning Resources: collects community recommended books, courses, and documentation for functional programming in Scala and key Typelevel libraries
Updated the community landing page template
about.template.htmlto include two additional cards, along with corresponding fragments incommunity/README.md. The new pages follow the existing community pagelayout and template structure.Used AI for formatting markdown & proofreading but I wrote the content itself, with help of past resources & recommendations found in various discord channels
example (learning resource page):

additional cards in community page: