Skip to content
I'll be back
I'll be back


@kaspermeyer @shioyama @Bugagazavr @gadimbaylisahil @swistaczek @panSarin @skarlcf @milushov @GabrielMalakias @yuszuv @Morozzzko @tak1n @radar


@hanami @rom-rb @dry-rb
Block or Report

Block or report solnic

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse

You can now support my Open Source work by becoming a GitHub Sponsor!


I started contributing to Open Source projects in 2008 and over time I created, contributed to and helped with over 100 libraries and frameworks. This page lists the most notable of my contributions.


Hanami is a Ruby application framework with a modern component-based architecture. I've been part of the core team since 2018, 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".


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.

My main contributions include:

  • dry-validation - validation library with type-safe schemas and rules
  • dry-schema - schema DSL that was originally provided by dry-validation
  • dry-types - a flexible "type system" for Ruby projects. Currently it's the foundation for other libraries, like rom-rb, dry-validation, hanami or reform
  • dry-struct - a virtus-like attributes API for POROs
  • dry-logic - composable rule objects
  • dry-system - a modern way of organizing Ruby applications using dependency injection as the architectural foundation
  • dry-auto_inject - container-agnostic auto-injection abstraction
  • dry-events - a simple pub/sub solution
  • dry-monitor - a set of abstractions that help with application monitoring

Make sure to check out our official website!


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.

My contributions include:

  • rom-core - design and implementation of the core APIs, such asROM::GatewayROM::RelationROM::Command or ROM::Mapper
  • rom-repository - design and implementation of the repository component
  • rom-changeset - design and implementation of the changeset component

Apart from its main components, I've also created or contributed to:

Make sure to check out our official website!


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.

The gem comes with a ton of built-in data transformation functions, which initially was its main purpose. It is used as the data transformation foundation in rom-rb.

Past projects

These are the projects that I used to work in the past that are now discontinued.


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.


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.

The project has been discontinued in 2019 because I shifted my focus on dry-rb which provides much better solutions to the same kind of problems that virtus tried to solve.


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


  1. Data mapping and persistence toolkit for Ruby

    Ruby 2k 147

  2. SQL support for rom-rb

    Ruby 184 87

  3. Validation library with type-safe schemas and rules

    Ruby 1.1k 160

  4. Coercion and validation for data structures

    Ruby 283 64

  5. Flexible type system for Ruby with coercions and constraints

    Ruby 719 103

  6. Organize your code into reusable components

    Ruby 244 51

1,375 contributions in the last year

Oct Nov Dec Jan Feb Mar Apr May Jun Jul Aug Sep Oct Mon Wed Fri
Activity overview
Contributed to rom-rb/rom, action-hero/actions, rom-rb/rom-sql and 5 other repositories

Contribution activity

October 2021

solnic has no activity yet for this period.

Seeing something unexpected? Take a look at the GitHub profile guide.