> [Jason:]
>
> But anyway, the question is, what happens to methods defined at the
> top-level like that? Are they just added to Object? And if that's the
> case, why do we even have Kernel?

Top-level methods become private methods of Object, so I'm told.  That
should make them invisible to subclasses.  Ho hum.

Anyway, we have Kernel so that lots of methods can be gathered together
and made available (via inclusion in Object).

It is my opinion that Kernel should only contain genuine kernel-type
methods (i.e. those that only the Ruby interpreter can provide, like
at_exit, autoload, caller, local_variables, ...).  About half of Kernel is
simply convenience methods (sprintf, Array, loop, ...) which could easily
be implemented in Ruby.  These should be in a "Convenience" module, which
is also included in Object.  Not that it's a big deal, of course.

You should never feel the need to add anything to Kernel.

Gavin