[erlang-questions] Split Cowboy's acceptor and HTTP code

55 views
Skip to first unread message

Loïc Hoguin

unread,
Apr 3, 2012, 7:35:05 AM4/3/12
to Erlang Users' List
Hello,

I have received a lot of feedback on Cowboy recently, especially at the
Erlang Factory. The main concern people seem to have today is that many
of you seem to want to use Cowboy's acceptor code and transport
abstraction, but don't want to include the HTTP components.

I argued until now that you can always remove the HTTP modules from the
release if you want, and that it's easier to work on improving both
sides at the same time without the dependency, while still keeping in
mind that the two parts would eventually get split before 1.0.

Considering the feedback, I'm wondering if now would be the time to
split them.

Most people use rebar nowadays, so the dependency should be handled
automatically. But I did receive a few comments before from people who
liked the fact that Cowboy was a single package.

If the split happens, it will be right after the next version tag,
0.6.0, and will most likely include a renaming of most modules all in a
single commit. People who follow master will need to update their code
immediately (I'll give a script to do that automatically), while others
staying at 0.6.0 will have some time to make it happen.

If you don't want the split to happen at this point, you should probably
reply to this mail so we can all discuss what should happen and when.

I hope it won't be too much trouble on everyone, the module renaming
script should take care of most of it.

Thanks for your feedback, as always!

--
Loïc Hoguin
Erlang Cowboy
Nine Nines
_______________________________________________
erlang-questions mailing list
erlang-q...@erlang.org
http://erlang.org/mailman/listinfo/erlang-questions

Max Lapshin

unread,
Apr 3, 2012, 9:35:02 AM4/3/12
to Loïc Hoguin, Erlang Users' List
Loic. I think that splitting cowboy into two repositories is a bad idea.

It will make your life a nightmare if you need git bisect This is
exactly why erlyvideo is monolitic in single repo.

Just keep your http code in separate subfolder src/http. This is really enough.

Loïc Hoguin

unread,
Apr 3, 2012, 9:46:06 AM4/3/12
to Max Lapshin, Erlang Users' List
Cowboy *will* be split in two eventually. It has always been the intent.
The only question is when.

I'm not a fan of monolithic architectures. :)

On 04/03/2012 03:35 PM, Max Lapshin wrote:
> Loic. I think that splitting cowboy into two repositories is a bad idea.
>
> It will make your life a nightmare if you need git bisect This is
> exactly why erlyvideo is monolitic in single repo.
>
> Just keep your http code in separate subfolder src/http. This is really enough.

--
Loïc Hoguin
Erlang Cowboy
Nine Nines

Tim Watson

unread,
Apr 3, 2012, 11:10:34 AM4/3/12
to Loïc Hoguin, Erlang Users' List
+1 for splitting it out. I'm definitely one of those wanting to use
the acceptor code stand alone.

Benoit Chesneau

unread,
Apr 3, 2012, 11:18:40 AM4/3/12
to Loïc Hoguin, Erlang Users' List
+1 for splitting it out. It will make the life easier for people who
are using only the acceptor part . Also it's better to do that early I
guess.

Max Lapshin

unread,
Apr 3, 2012, 11:36:58 AM4/3/12
to Benoit Chesneau, Erlang Users' List
It does not do your life easier. Three files of 20kbytes are not a problem.

But splitting will make impossible using git bisect and will bring exponential number of combinations of cowboy and cowboy-www with exponential number of bugs.

I can promise that in two months after splitting cowboy into two parts will appear next webserver, which is "fast and convenient to use, not like that bloated cowboy, which doesn't fit into one package". 

I understand an idea to push some good part of cowboy into OTP. But plain splitting will bring nothing but pain.

There is really no problem in checkouting several http-related files if you are just using cowboys acceptor.

Max Lapshin

unread,
Apr 3, 2012, 11:43:51 AM4/3/12
to Benoit Chesneau, Erlang Users' List
If someone thinks that splitting single product into many infrastructure packages is "convenient", I want to mention horror with debian packaging of erlang: erlang, erlang-base, erlang-tools, erlang-mnesia, etc

Nothing but problems and as a result conflicting packages when you try to remove all that stuff and install package from esl.

Andrew Thompson

unread,
Apr 3, 2012, 1:48:05 PM4/3/12
to erlang-q...@erlang.org

As a counterpoint, consider how riak is packaged, 25 deps, 19 of which
we maintain.

In practice, we lock all the dependancies at release time, people
running HEAD might run into some temporary issues with out of sync deps,
but its not a common problem we see.

You're also conflating erlang packaging with erlang *library* packaging.
I agree that erlang is often packaged extremely badly by distributions,
but if cowboy-acceptor is a version-locked dependancy of cowboy, there
should be little chance of them getting out of sync.

Andrew

Reply all
Reply to author
Forward
0 new messages