kernel development is probably the best example of 'agile methods' that you can find.
there is no planned feature set for each release, instead each development team works on their set of features and when the merge window starts, anything that's ready gets pushed upstream.
but this only works if the development teams work on smallish features (or does their development in a way that gradually changes the result rather than big bang changes)