diff --git a/src/community/README.md b/src/community/README.md index 6c0de16e..b1258f51 100644 --- a/src/community/README.md +++ b/src/community/README.md @@ -24,3 +24,11 @@ Typelevel boasts an impressive ecosystem of affiliate projects, built by our com @:fragment(coc) The Typelevel community is dedicated to providing a positive experience for everyone. Whether you are new or familiar with our community, we care about making it a welcoming and safe place for you and we are here to support you. @:@ + +@:fragment(contributing) +Learn how to get involved in Typelevel projects. Find good first issues, understand the workflow, and collaborate with maintainers. +@:@ + +@:fragment(resources) +Explore recommended books, courses, and documentation for learning functional programming in Scala and the Typelevel ecosystem. +@:@ \ No newline at end of file diff --git a/src/community/about.template.html b/src/community/about.template.html index 2568634f..f3a107f3 100644 --- a/src/community/about.template.html +++ b/src/community/about.template.html @@ -68,6 +68,38 @@

Code of Conduct

+
+
+
+ + @:svg(fa-puzzle-piece) + +

Start Contributing

+
+ ${cursor.currentDocument.fragments.contributing} +
+ + Learn How + +
+
+
+
+ +
@:@ diff --git a/src/community/learning-resources.md b/src/community/learning-resources.md new file mode 100644 index 00000000..7085753c --- /dev/null +++ b/src/community/learning-resources.md @@ -0,0 +1,38 @@ + +# Learning Resources + +This is a collection of community recommended resources for functional programming in Scala and materials that help contributors understand the ideas behind Typelevel libraries. + +> These resources are optional. You can start contributing with good first issues or examples and learn more as you go! + +## Foundational books & guides + +- **[Functional Programming in Scala](https://www.manning.com/books/functional-programming-in-scala-second-edition)**: A classic introduction to FP ideas in Scala; strong on the thinking behind libraries like Cats. + +- **[Scala with Cats](https://scalawithcats.com)**: Practical introduction to Cats + +- **[Essential Scala](https://underscore.io/books/essential-scala/)**: A functionally-friendly introduction to Scala language features. + +- **[Creative Scala](https://www.creativescala.org/creative-scala/)**: Hands-on exercises and usage for practising Scala. + +## Documentation for Key Libraries + +- **[Cats Effect](https://typelevel.org/cats-effect/)**: Core to the modern Typelevel runtime model. + +- **[FS2](https://fs2.io)**: Functional streaming library used throughout the ecosystem. + +- **[http4s](https://http4s.org)**: Functional HTTP toolkit for Scala. + +- **[Circe](https://circe.github.io/circe)**: JSON library for Scala. + +- **[Laika](https://typelevel.org/Laika/)**: Site and E-book Generator and Customizable Text Markup Transformer in Scala + + +## Tutorials & Courses + +- Coursera courses [Functional Programming in Scala](https://www.coursera.org/learn/scala-functional-programming) (useful if you prefer lecture-style learning and a systematic introduction). +- Community [blog posts](https://typelevel.org/blog/) + +## Scala ecosystem docs + +- **[Official Scala documentation](https://docs.scala-lang.org/)**: general language reference and guides \ No newline at end of file diff --git a/src/community/start-contributing.md b/src/community/start-contributing.md new file mode 100644 index 00000000..cc61ed67 --- /dev/null +++ b/src/community/start-contributing.md @@ -0,0 +1,37 @@ + +# Start Contributing to Typelevel + +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. + +> Become a user of the ecosystem you want to contribute to. + +Also some tips that works well across most Typelevel repositories: + +#### Find something that can be improved +- Look for open issues, especially those labeled `good first issue` or `help wanted`. +- Browse the curated [good-first-issues board](https://github.com/orgs/typelevel/projects/1/). +- If you're already using the library, improve something that bothered you. +- Documentation and tests are excellent starting points too. + +#### Understand the problem first +- Read the issue carefully, understand the current implementation. +- Look for existing PRs or recent comments. +- Check whether a solution was already proposed. + +#### Communication is Key +- Comment on the issue saying you'd like to work on it and briefly describe your idea or approach. +- Ask clarifying questions if anything is unclear. +- If the change is small, you can open a draft PR early to get feedback. + +#### 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). +- Expect review feedback, ask questions, adjust your changes, and iterate. + +#### Where to Ask for Help +- Join the [Typelevel Discord](https://discord.gg/typelevel-632277896739946517). +- Ask in `#starting-contributing` if you're new to contributing. +- Use library-specific channels like `#cats`, `#cats-effect`, `#fs2`, or `#http4s` for more focused questions. +- You can also ask directly on a GitHub issue if your question is specific to that issue.