Here's my proposal on the general steps to modernize Riak's repos to work with OTP20 and rebar3:
- Replace bundled copy of rebar with a chosen version of rebar3
- Add any required rebar3 plugins (eqc, port compiler, etc)
- Rework any EQC tests to work with the rebar3 EQC plugin and not be eunit tests
- Remove tools.mk and Makefile if present
- Add a generic Makefile which has targets for compile/dialyzer/eunit/common_test/xref/coverage/eqc and a 'check' meta-target
- We can also add Travis/coveralls support (example: helium/erlang-libp2p#33 (comment))
- Commit the rebar3 rebar.lock file - this replaces the old lock-deps rebar2 plugin
The reason for bundling rebar3 and a Makefile are so that people unfamiliar with the Erlang ecosystem can use the familiar 'just run make' approach to building software. Bundling rebar3 is because rebar is still not consistently packaged for operating systems or bundled with OTP and so we can't rely on any local version being present or correct.