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

Tuncer Ayaz <>
Fri Sep 27 21:58:52 CEST 2013


On Fri, Sep 27, 2013 at 9:05 PM, Joao Neves <> wrote:
> I haven't given too much thought into it, but I did try to write
> iota in a way that it could be plugged in to as much as possible, so
> it's definitely not out of my mind.
>
> I might look into it soon. Thanks for your feedback and I hope it's
> useful!

Alternatively, you could try to turn it into a predefined Xref
query, but I don't know how feasible that is.

> 2013/9/27 Tuncer Ayaz <>
>>
>> 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