Just a few comments...
I think all of these decisions have to be made not just based on their
technical merit but also on the realities of M0n0wall's usage, community,
First, platform: OpenBSD is a non-starter; think about how many people want
to use this on (currently unsupported) wireless h/w. In addition, FreeBSD is
a known quantity (well, mostly). And their development team is not quite as
combative. ;) While the potential for other platforms using NetBSD is a
plus, there are enough Intel-compatible embedded solutions for the demand.
And Linux is not worth the switch, even though I'm a fan. There's no
performance advantage to switching, and it just introduces a larger learning
curve (and doesn't offer significantly better hardware support in the areas
m0n0wall cares about...)
Second, languages: I think it'd be silly to move away from PHP on the GUI
side. There's a lot of work invested there, and it's completely suitable for
the task. For the "core" -- please please please don't go Java. Larger
customers will turn and run the other way, whether or not it's justified.
I'm a fan of either "native" C++ or of something that is pseudo-compiled,
like Python. Perl is too bloated and clunky, and Ruby is too fringe still
(relative to Python). C++ offers the most in the way of performance but also
the most risk.
Third, footprint/memory: The thing has to run in 64MB RAM. I'd guess we're
at the end of the 8MB flash image (being realistic) but under 16MB would be
preferable. You shut out some segment of folks from upgrading (not sure how
big; aren't most of the Soekris boxes 64MB?) if the memory/storage demands
are too great.
Just a few thoughts. Don't get "happy feet" and feel like things need to
change just because. Pick tools/languages that both make sense and are
comfortable to the developers. There's no point in creating additional work
where it's not needed; this will be a huge undertaking regardless. And
always have one eye towards the target audience -- what does the user of
m0n0wall gain by various parts of the rearchitecture?
That all being said, I wish I had the opportunity at my job to really rip
apart and rebuild some of the crankier pieces of software.