[Mongrel] Packet

hemant gethemant at gmail.com
Thu Nov 22 03:30:58 EST 2007

On Nov 22, 2007 1:12 PM, Zed A. Shaw <zedshaw at zedshaw.com> wrote:
> On Wed, 21 Nov 2007 12:45:01 -0800
> Ezra Zygmuntowicz <ezmobius at gmail.com> wrote:
> >
> >       Yeah I ported evented mongrel to run on packet> it does run and is
> > faster than threaded mongrel, not quite as fast as event machine
> > evented mongrel.
> >
> >       The one problem is that the first request after server boot hangs but
> > then all requests after that are fine. I will continue some more work
> > on this. I think it would be nice to provide this as official mongrel
> > *opt in* functionality once it's all worked out.
> There's several problems with Packet's code, which I outlined for Evan over IRC earlier today:
> 1) It has EM code in it with the same GPL boilerplate.  No GPL allowed as that will infect it with the viral license and open the door to malicious legal actions.
> 2) You rewind the data stream in your mongrel code while the parser can handle incremental parsing.
> 3) There's several places where the code takes input from userland and embeds it in either an unpack or a regex thus allowing for userland format string attacks.
> 4) There's quite a lot of dubious stuff going on, like using activesupport, adding weird class attribute accessors via class eval, and just other bad code all around.
> That's just in about 10 minutes of browsing the source.  If I can find that much wrong with it that quick, then it still needs lots of work.  First and foremost is the GPL though.  It's a no-go if it has viral licensing and just borrows code from other projects that has GPL.


There are two files which are there from eventmachine, deferable.rb
and buftok.rb. Heck, there are just libs for aiding users.

Packet doesn't depend on activesupport, It did depend initially, but i
removed that thing altogether. I know, many people don't like,
modifying core classes, and hence i am going to add them in helpers
and it can potentially wreck havoc with other user code. I fully
understand that. But lets see, how many methods were added to core

nothing? #=> not needed
classify #=> needed,but can be replaced with helper methods
clean! => not needed
iattr_accessor => needed
deep_copy => not needed
metaclass => needed

iattr_accessor can't be removed, because it adds attribute accessors
around class intance variables. If you see, its quite useful thing.
Since, class instance attributes aren't shared across inheritance

It sure as hell needs work, whats more, this is my first ever public gem.

Regarding licensing issues i don't have much to say. Code is there,
take it or leave it. But I do not understand, packet is dual licensed,
so effectively one can use it under Ruby license and forget the fact
that its under GPL too, because choice of license is left to the user.

Also, mongrel itself is under GPL2, so how come two code bases, which
are both under GPL can't use each others code? I am missing here
something important .fetch me Eben. This is sure funny.

Let them talk of their oriental summer climes of everlasting
conservatories; give me the privilege of making my own summer with my
own coals.


More information about the Mongrel-users mailing list