[erlang-questions] Including other peoples code in my code in a future proof way

Joe Armstrong <>
Tue Mar 17 14:53:12 CET 2015


How do I include another application in my application?

I've written a program that I want to distibute.
I'll make it available on github.

The problem is that my program uses cowboy and a few other
things (which are also on github)

I'd like my program to work "out of the box" - just type Make and off
you go.

I'd also like my to work for a long time so if rebar and
cowboy change in the future I'd like my program to still build
correctly.

Now what I could do is:

    use rebar and a rebar.config file that point to cowboy etc.

My rebar-config is like this

{deps, [
   ...
  {cowboy, ".*", {git, "git://github.com/extend/cowboy.git", "master"}}
]}.

The problem with this is that

   1) my version of rebar might not be the same as on the target machine
      where the makefile is run
   2) The cowboy reference is to "the latest version" and not
      an immutable version that I know works

So How should I fix this? Is the answer:

    a) Include rebar in my distribution
      (I don't really like this, since I'd just like to have my code in
       my project archive)
    b) Point to a absolute version of cowboy - but how do I do this?

Or c)
      Include all the source code of cowboy etc in my release

I also don't want mutiple versions of rebar and libraries in different
directories, branches, views or whatever you call them.

What's the best thing to do here?

Cheers

/Joe


More information about the erlang-questions mailing list