Hi Max,
On Mon, May 08, 2017 at 10:28:21AM +0200, Max wrote:
I'd like to share my opinion after recent
experience with OpenGGSN. It's very
portable - supports GNU/Linux, SunOS, FreeBSD and even Darwin. And that makes code
into horrible mess of ifdefs which is hard to follow and update.
Well, it's not as bad as you put it. But maybe I'm just remembering too
much 1990ies Unix aplication code, where that was more or less the
standard, you had to care about portability about a lot of platfomrms...
I also have an
idea: what if we could build our projects with several
compilers (GCC and clang) and with their several versions (the three
latest for example) on Jenkins at the same time? I think, it would be
great to keep our projects as portable as possible.
Personally I don't see any benefit in this - if smth compiles on platform X it
doesn't mean it really supports it. We can guess that it does but unless someone
actually uses it on platform X on a regular basis, it's more of a handwaving: it can
fail at runtime, it can fail due to some obscure configuration or file path
differences etc.
This is correct.
On the downside - it makes code more complex and
harder to follow. I think we should
only care about portability to platform X iff there's maintainer who cares about
platform X. Someone who's willing to contribute his time (or money) into ensuring
that Osmocom stack actually works on it (not just compiles). Otherwise all the
efforts spent on making various compiler versions happy are simply wasted.
I agree, but only in as far as it goes beyond FreeBSD. There's quite
some point in supporting builds for FreeBSD, as
a) a lot of Osmocom infrastructure is running on FreeBSD itself
b) FreeBSD has a more reliable SCTP implementation. With AoIP becoming
part of the standard setup between OsmoBSC and OsmoMSC (as well as
M3UA based Iu on the 3G side), there is quite some value if users can
run Osmo* on FreeBSD and not just on Linux.
So I agree with you for cases like Darwin, Solaris, etc. - but not for
FreeBSD.
--
- Harald Welte <laforge(a)gnumonks.org>
http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)