As far as I can see, besides technical matters, there is some
"marketing" involved in the OS/language/code structure decisions, and
it really should be taken into account.
I'll add my two cents at the end of this letter but first I'd like to
list the criteria that can be used to make a decision.
a) Popularity. How many people feel that this OS/language is the best.
This means more people will trust it, try it, use it, and the bigger
userbase is always good for a healthy product: it attracts more
developers and even more users.
b) Availability of developers. If there are many people in the world
who use some development tool or environment, it would eventually
translate into better product.
c) Image. I believe most of you have heard that "NetBSD runs on any
piece of hardware" and that "OpenBSD is the most hacker-proof", etc.
Such things may be true or not but they do exist and they do influence
decisions of users and developers.
d) Compatibility. If you change the OS or the language it would mean
that every developer has to change his habits and some of them just
won't do that. Sure, others would probably take their places, but it's
not a good thing to lose good loyal people...
e) Technical issues. If the embedded hardware is not going to get much
better in the next year or so, there is a good reason to choose
something lean and fast for the next iteration of development.
So, I think, before Manuel decides what's the next step it would be
useful to consider the priorities and choose accordingly.
Well, now, back to my 2 cents ;-)
First - the OS of choice for a firewall/router project would be some
kind of BSD. It's not as popular as Linux, but it has an image of
industrial-strength OS, and it's already used in the current m0n0wall.
I think the final choice would be between OpenBSD (as most stable and
solid) and NetBSD (as runnig on most hardware), even though FreeBSD 6
and DragonFlyBSD are strong contenders. From PR perspective switching
to Linux means a lot of disappointed users who for some reason prefer
BSD family, and that's not a good idea to disappoint them.
The language issue is more complicated. My first impulse would be to
say "perl would be great - it's powerful, elegant, OO, multithreaded
(and efficient!), has CPAN, and I just like to write in it ;-)". Well,
that fits the general image - perl is considered to be a bit too
complex but very powerful, fast, efficient... There are quite a lot of
perl developers around, so after successful switch there would be a
lot of people willing to help. I believe that there are less
developers working with most of other languages mentioned here (lua,
python, java-as-standalone-language, ruby). Also, having CPAN
available means that even new developers would be able to add rather
complex features very fast by reusing existing stable code.
The only real problem here is compatibility - and I have to say that
it would probably outweigh everything else. There is a lot of
well-debugged code in m0n0wall, there are a lot of people who are
happy with PHP and like it, and there is PFSense out there and,
hopefully, both projects could benefit from each other in the future
if they use the same core language. Probably moving to PHP5 would be
useful, but I don't have enough knowledge to comment on that.
Modular - well, certainly, going modular would be very good, from most
points of view (better scaling to different hardware/memory/etc,
custom-tailoring configurations, parallel development of features,
etc). I just can't find any reasons not too :)
So, to conclude, I think it would be best to use OpenBSD (or NetBSD if
there is a lot of exotic hardware that needs to be supported) and stay
with PHP (even though there are some pretty nice benefits to be gained
from switching to perl) while going to modular architecture.
Pavel mailto:m0n0wall at abletools dot com