<div dir="ltr">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.<div><br></div><div>I might look into it soon. Thanks for your feedback and I hope it's useful!</div>

</div><div class="gmail_extra"><br clear="all"><div>--<br>João Neves</div>
<br><br><div class="gmail_quote">2013/9/27 Tuncer Ayaz <span dir="ltr"><<a href="mailto:tuncer.ayaz@gmail.com" target="_blank">tuncer.ayaz@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

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