Open Source

Summary and an overview of Peter Solnica's Open Source work over the years, including projects like Elixir Drops, Hanami, dry-rb and rom-rb.

💖

Support My Open Source Work

If you find my open source projects useful, consider becoming a GitHub Sponsor! Your support helps me dedicate more time to maintaining and improving these tools for the community.

🌟 Become a GitHub Sponsor

This page is a summary of my past and current open source work.

18,486 Total Commits
212 Repositories
5 Organizations
15+ Years Contributing

Current Projects

Elixir Drops

Creator & Maintainer active library 2023 - Present

My latest project that brings dry-rb and rom-rb goodies to the Elixir ecosystem.

  • Schema-based data validation and casting to Elixir
  • High-level Relation API on top of Ecto
  • Composable operations for business logic with a built-in observability framework
  • Standalone Inflector library
🛠️ Tools for working with data effectively - data contracts using types, schemas, domain validation rules, type-safe casting, and more.
🔋-included relation abstraction on top of Ecto with schema inference and composable query API + more ✨
Composable operations with type-safe params validation and exception-free control flows
Inflection utils for Elixir

Past Projects

Hanami

Former Core Team Member active framework 2018 - 2023

A Ruby application framework with a modern component-based architecture. I was part of the core team from 2018-2023, working on its 2.0 release which uses various dry-rb libraries as its foundation as well as rom-rb as the default "model layer".

  • Modern component-based architecture
  • Uses dry-rb and rom-rb as foundation
A flexible framework for maintainable Ruby apps
Views, templates and presenters for Ruby web applications
Hanami command line

dry-rb

Former Core Team Member active organization 2015 - 2023

The organization was created by Andy Holland in 2015. I was thinking about doing a similar thing so I decided to contribute and started working on a couple of gems under this organization. The projects aim to be a modern take on solving common problems. Libraries are small and simple to understand with a great focus on reusability.

  • Modern approach to common problems
  • Small, reusable libraries
  • Great focus on simplicity
Validation library with type-safe schemas and rules
Coercion and validation for data structures
Flexible type system for Ruby with coercions and constraints
Application framework with state management and built-in dependency injection support

rom-rb

Creator & Lead Developer active organization 2014 - 2023

The work on Ruby Object Mapper (rom-rb) initially started as an attempt to build the second major version of the DataMapper project; however, in 2014 I decided to take the project in a different direction and turn it into an FP/OO hybrid toolkit that simplifies working with the data using Ruby language. It consists of a small(ish) core and plenty of adapters and extensions.

  • FP/OO hybrid persistence and mapping toolkit
  • Simplifies working with data
  • Modular architecture with adapters
Data mapping and persistence toolkit for Ruby
SQL support for rom-rb
Data generator with support for persistence backends

Transproc

Creator & Maintainer active library 2014 - 2023

Transproc is a Ruby gem which provides an API for functional composition of arbitrary Proc-like objects. It introduced the left-to-right >> function composition operator, which is now considered as a potential addition to Ruby's core.

  • Functional composition API
  • Left-to-right >> operator
  • Considered for Ruby core
  • Data transformation foundation for rom-rb
The project was ported to dry-rb/dry-transformer

DataMapper

Former Core Team Member discontinued framework 2008 - 2014

DataMapper was a Ruby ORM that was part of the default stack of the Merb framework. I started helping with the project in late 2008 and eventually joined the core team in 2010. I mostly focused on working on the Property API (which later on was extracted into a separate library called Virtus), on-going maintenance, bug fixing, user support and handling releases.

  • Part of Merb framework stack
  • Property API development
  • Core team member from 2010
  • Foundation for later projects
DataMapper plugin providing extra data types

Virtus

Creator & Maintainer discontinued library 2011 - 2019

Virtus is a project that started as an extraction of the DataMapper Property API back in 2011. Eventually it has become very popular and made typed struct-like objects in Ruby a thing and inspired people to build their own solutions too. There were also many other gems that started using Virtus under the hood for coercions, like Representable or Grape.

  • Extracted from DataMapper Property API
  • Made typed structs popular in Ruby
  • Inspired many other solutions
  • Used by Representable, Grape, and others
[DISCONTINUED ] Attributes on Steroids for Plain Old Ruby Objects

Coercible

Creator & Maintainer discontinued library 2011 - 2019

Coercible is the coercion backend extracted from Virtus which provides a set of generic coercions for most common data types like numbers, dates etc.

  • Extracted from Virtus
  • Generic coercions for common data types
  • Backend for type coercion