Dennis Doomen

What you can learn from an open-source project with 500 million downloads

What can a project with 500 million downloads teach you about inner sourcing? Discover how to automate quality and prevent breaking changes in your internal libraries.

What you can learn from an open-source project with 500 million downloads
#1about 1 minute

Applying open source principles to internal projects

Lessons learned from maintaining open source projects can be applied within companies, a practice often called inner sourcing.

#2about 2 minutes

Streamlining contributions with issue templates and labels

Use structured issue templates and labels in GitHub to streamline bug reports and feature requests, preventing wasted effort on unapproved work.

#3about 2 minutes

Designing for extensibility and API consistency

Building extensible code requires predicting future use cases, carefully managing breaking changes, and maintaining API consistency.

#4about 1 minute

Improving repository quality with documentation

A well-structured README and a contributing guide are essential for helping new contributors understand, build, and use a project.

#5about 2 minutes

Essential command-line and Git tooling for developers

Enhance productivity with powerful command-line tools like Oh My Posh and ZLocation, alongside graphical Git clients for complex operations.

#6about 2 minutes

Automating code style and quality checks

Use tools like EditorConfig and Roslyn analyzers to enforce coding standards automatically, saving time and frustration during code reviews.

#7about 1 minute

Adopting functional and concise unit test naming

Evolve unit test naming conventions from long, descriptive sentences to shorter, more direct names that clearly state the expected outcome.

#8about 1 minute

Managing project settings and dependencies efficiently

Use Directory.Build.props for shared solution settings and PolySharp to enable modern C# features on older .NET frameworks.

#9about 2 minutes

Applying SOLID principles to package design

Structure dependencies so that packages only rely on more stable or abstract modules, creating separate packages for optional integrations.

#10about 1 minute

Using design patterns as refactoring goals

Design patterns should be used as a tool for refactoring complex code to improve communication and structure, not as an initial design goal.

#11about 2 minutes

Building robust CI/CD pipelines with Nuke

Replace complex YAML pipelines with Nuke, a C# based build automation tool that allows for local execution, debugging, and refactoring.

#12about 1 minute

Preventing breaking changes with API verification

Automatically detect unintended breaking changes by using snapshot testing on your public API surface with tools like PublicApiGenerator.

#13about 1 minute

Using micro-benchmarking for performance hotspots

Identify performance hotspots with a profiler and then create targeted micro-benchmarks to prevent future regressions in critical code paths.

#14about 1 minute

Integrating documentation and automated spell checking

Keep documentation in sync with code by using static site generators like Jekyll and ensure quality with automated spell-checking tools.

#15about 1 minute

Automating dependency management with Dependabot

Leverage Dependabot in GitHub to automatically create pull requests for dependency updates, keeping projects secure and up-to-date.

#16about 1 minute

Using code coverage and emoji-driven reviews

Treat code coverage as a developer insight tool rather than a management KPI and use emojis to add nuance to code review feedback.

#17about 3 minutes

Automating semantic versioning and release notes

Implement semantic versioning and use tools like GitVersion to automatically generate version numbers and release notes from your commit history.

#18about 1 minute

Accelerating projects with a .NET library starter kit

A pre-configured starter kit can bundle best practices for pipelines, issue templates, and API verification to bootstrap new library projects.

Related jobs
Jobs that call for the skills explored in this talk.

Featured Partners

From learning to earning

Jobs that call for the skills explored in this talk.

Rust and GoLang

Rust and GoLang

NHe4a GmbH
Karlsruhe, Germany

Remote
55-65K
Intermediate
Senior
Go
Rust
Cloud Engineer (m/w/d)

Cloud Engineer (m/w/d)

fulfillmenttools
Köln, Germany

50-65K
Intermediate
TypeScript
Google Cloud Platform
Continuous Integration
Backend Engineer (m/w/d)

Backend Engineer (m/w/d)

fulfillmenttools
Köln, Germany

35-65K
Intermediate
TypeScript
Agile Methodologies
Google Cloud Platform