[erlang-questions] [ANN] iota - a tool for enforcing clean separation of responsibilities

Tuncer Ayaz <>
Fri Sep 27 18:12:34 CEST 2013


On Thu, Sep 19, 2013 at 7:56 PM, Joao Neves wrote:
> Did you ever wish you could tell someone "just because I'm exporting
> this it doesn't mean you should be using it" through your code?
>
> iota is a tool (and a library) that uses Erlang attributes to allow
> you to specify application-level APIs implicitly by declaring what
> exported functions in each module compose the overall API external
> applications should use to interact with yours, with more checks
> coming soon(TM).
>
> iota was mostly inspired by the Kappa tool used internally at Klarna
> and mentioned by Cons T Åhs in his latest talk at the EUC in
> Stockholm. Kappa is used to make some sense of the free-for-all
> Erlang allows by having only a broad concept of exported and
> non-exported functions and performs a number of tasks and techniques
> that are in part an artifact of the development environment of
> Klarna and are probably not appropriate for most other people.
>
> With iota, you have a more generic tool that allows you to keep some
> sanity regarding the interactions between OTP applications while
> allowing you to export the functions you need inside your own
> application more freely. By using Erlang attributes we make these
> checks entirely up to you, so if you feel you must ignore them or
> don't want to use iota, no one is going to stop you!
>
> iota is hopefully also ready to be turned into rebar or EDTS plugins
> for a more streamlined integration into your workflows, like as a
> post-compilation hook.
>
> But enough with the chit-chat! You can get it (and more details on
> how to use it) here: https://github.com/jpgneves/iota
>
> If you find it useful (or not), let me know! Any comments, questions
> and pull requests are welcome!
>
> Many thanks to Samuel Rivas, Håkan Nilsson and Thomas Järvstrand for
> providing feedback and useful libraries to build this with, and to
> Klarna Engineering in general for providing the necessary
> inspiration and ideas for this initial release.

Thanks for sharing, this looks useful.

Have you considered adding support to erlc or Dialyzer similar to
-callback?



More information about the erlang-questions mailing list