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.
This page is a summary of my past and current open source work.
Current Projects

Elixir Drops
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
Past Projects

Hanami
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

dry-rb
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

rom-rb
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
Transproc
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
DataMapper
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
Virtus
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
Coercible
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