Hacktoberfest 2020 and .NET OSS
Get out your dirndl and lederhosen – it’s that time of year again! We’re excited to be sponsoring Hacktoberfest 2020. Hacktoberfest is an opportunity for contributors worldwide to give back to their favorite projects in the form of pull-requests.
In this blog post, you will find out what Hacktoberfest is, as well as a nice surprise by JetBrains. But there’s more! We’ll share types of activities you can contribute, and a list of .NET projects that need your help.
Let’s start at the beginning…
For those unfamiliar with Hacktoberfest, here are the basic rules of participation.
- Contributors must sign up at the official Hacktoberfest site.
- Contributors can submit pull-requests to any GitHub-hosted repository.
- Contributors must have at least 4 contributions between October 1 and October 31 to complete the event.
Folks who complete the event will earn a Hacktoberfest T-shirt or tree reward, and of course, the satisfaction of knowing they helped their favorite projects.
We at JetBrains have long been champions of open-source (OSS), from contributing to hundreds of OSS projects, releasing our products as OSS, and supporting thousands of individual contributors on their OSS journeys with complimentary licenses.
This year, we’re doing something special. We’re giving participants access to our All Products Pack subscription for a whole month. Regardless of your preferred programming language, you’ll find a tool to make contributions more fun and efficient. Specifically for .NET developers, you’ll have access to ReSharper, Rider, dotCover, dotMemory, and dotTrace.
Also, join us on the official Hacktoberfest Discord channel, where we’ll be hanging out and helping folks make their first contributions.
🤷♀️ What do I contribute?
Uncertainty of the kinds of contribution is a strong reason folks may not feel comfortable participating in OSS. Don’t worry, many types of contributions are welcome. Here are some of our favorite ways of contributing.
✅ Create or update the
Readme.md files are the gateway to most OSS projects. Create a readme file for a project that helps individuals understand the project’s requirements, get started guide, and other vital elements. It’s surprising how many great projects miss this essential part.
This does not mean updating headers or adding some punctuation. How can folks be successful with this OSS project? How do users get started? Help the OSS project be successful by making it easy for users to get going.
Documentation is essential and can come in many forms. If the project already has a documentation system, add new content, walkthroughs, and context. If the project has no documentation, consider building a docs site using GitHub pages.
✅ Bug fixes
Many projects have a backlog of issues waiting for contributors to fix them. First, communicate with the repository owners that you’d be interested in attempting a fix. After some discussion, submit a pull request for review. It’s important always to ask first not to waste your time or the repository owner’s time.
You don’t have to be a coder to contribute something of immense value. Artists and designers can contribute amazing value to any project. Many of these projects could use a logo, website redesign, or even a dazzling motion graphic.
Additionally, a video walkthrough of the project makes for an outstanding contribution, especially one that repositories can link to in the readme.
🤔 Which projects should I pick?
The .NET community is in an exciting place right now, with .NET 5 right around the corner. Most first-time contributors might consider creating pull requests to the .NET Runtime or the Microsoft Documentation site, and those would be significant contributions. Those kinds of contributions can reach the most considerable amount of folks using .NET. Any contribution that helps our community is a great contribution!
We want folks to think smaller this year. While it’s tempting to get your code shipped as part of the platform we all build on top of, there are many smaller projects out there who need your help!
These smaller projects, sometimes even individually run projects, significantly impact the .NET OSS ecosystem’s health. As a community, we all benefit from the thankless days and nights spent on some of our favorite projects. These projects solve problems and gaps in our tech stack, and add to the diversity of thought in our community.
The authors of these projects have put .NET on a positive trajectory of openness and inclusion. They help vet new ideas, push us to build better software, and solve challenging problems. In support of this spirit, we recommend you contribute to community-backed projects this Hacktoberfest.
Not sure what projects are welcoming contributions? Well, we’ve compiled some of our favorites right here.
Need to validate user input? FluentValidation is a library that makes it fun and easy to check data. With an armory of prebuilt validation rules, developers can get started quickly. The library easily integrates into your favorite programming models, like ASP.NET, WinForms, and Xamarin.Forms. One of the longest-running OSS .NET projects at 11 years and used by over 5,000+ projects on GitHub.
One of the newest OSS projects on this list, Spectre.Console, brings life to an otherwise dull terminal experience. Inspired by the Rich library for Python, developers can create tables, grids, panels, and other visual elements in their console output. This library is sure to be a hit with many folks building .NET global tools.
The spiritual successor to NancyFx, this web library is a thin layer of extension methods and functionality over ASP.NET Core. Carter allows developers to write more explicit and enjoyable web applications. The library also makes an appearance on the TechEmpower Web Framework Benchamarks with an impressive performance score. Folks who may be curious about other ways to build HTTP APIs should consider contributing to this project.
⭐️ Fable and the SAFE stack
For hardware geeks and historical preservationists, the Aaru project is a fully-featured media dump management solution.
With Aaru, you can analyze a media dump, extract files from it (for supported filesystems), compare two of them, create them from real media using the appropriate drive, create sidecar metadata with information about the media dump, and a lot of other features that commonly would require you to use separate applications.
This project has a wide array of support for many formats. Looking through the list gives us a serious case of nostalgia.
Static site generators (SSG) are a great way to create and deliver content to the web. Some of our favorite SSG tools come from other technical communities until now. With Statiq, developers can have a powerful SSG at their fingertips powered by .NET. Content creators can use robust pipelines to process database results, API results, and flat files into a static site. Statiq is a fantastic tool for OSS developers to build their documentation site.
Check out Statiq at their official site.
NUKE is an open-source build automation system for C#/.NET. It runs cross-platform on .NET Core, .NET Framework, and Mono. Builds are bootstrapped with Bash or PowerShell scripts, while their actual implementation resides in simple C# console applications. Using the C# project- and type system for writing builds provides IDE features like code-completion, refactorings, and debugging. NUKE has a custom global tool, several IDE extensions, and a code-generation approach to integrate third-party tools like MSBuild or dotnet CLI.
ReactiveUI gives developers the power to build reactive, testable, and composable UIs using the MVVM pattern. Leveraging
Observable interfaces, developers can subscribe to streams of data and react appropriately. With a healthy and welcoming community, ReactiveUI already has many places folks could contribute: documentation, samples, and issues.
The Marten library provides .NET developers with the ability to use the proven PostgreSQL database engine and its fantastic JSON support as a fully-fledged document database. The Marten team believes that a document database has far-reaching benefits for developer productivity over relational databases with or without an ORM tool.
Marten also provides .NET developers with an ACID-compliant event store with user-defined projections against event streams.
This library is a great way to dip our toes into NoSQL and learn concepts like document modeling and CQRS.
Have you been frustrated writing Azure Resource Manager (ARM) templates in JSON? Don’t be. Farmer makes repeatable Azure deployments easy by providing an F#-based DSL that is strongly typed, supports references, variables, functions, and all that. They have a TODO list, which gives some ideas on what the project would like to see as contributions. There’s also a
good first issues list for those who want to help out.
⭐️ Many others!
We have been asking folks on Twitter, and got quite a few responses from OSS projects and authors who could use a helping hand.
In no particular order:
- DotNetCoreKoans helps people learn C# on .NET Core using short excercises. They compiled a list of Hacktoberfest issues for various topics.
- GoldenEye, a Full Stack framework written in .NET Core.
- Martin Björkström has several projects that could use some README and documentation help:
- XamarinKickstart, a collection of information for people who want to start Xamarin development.
- Alexey Golub’s list of Hacktoberfest issues has quite some larger and smaller tasks.
- JosephGuadagno.NET Broadcasting is a tool for broadcasting blog posts, conferences, and streams, and needs your help with good first issues, and a more catchy name.
- Layla Porter started a Pull Request Tracker for Hacktoberfest. Early days, but it looks like a fun project to learn about many things .NET! Sources are here.
The .NET ecosystem wants and needs your contributions! If you are a project owner or know of other .NET projects looking for contributors, please leave a link to any GitHub repository in the comments below and state the kind of assistance that may be needed.
🍻 Start Your Contributions
For those who may not have the time to contribute and participate in Hacktoberfest, please consider sponsoring these authors and their projects using their chosen sponsorship mechanisms. At a bare minimum, give these projects a star on GitHub.
And if you do participate, make your contributions meaningful. OSS maintainers spend valuable time on triaging issues and PRs, and it would be a shame if we waste that. Hacktoberfest is about helping the OSS we all use, everything else is a nice bonus.
Good luck, everyone, and have a happy Hacktoberfest! Prost!