Status of development
aland at deployingradius.com
Wed Jan 22 01:23:55 CET 2014
This is a short message to note recent changes in the development process.
We've managed to get the server to build with *zero* compile-time
warnings. This is the culmination of a nearly 15 year-dream.
We're now working on getting it to build with zero issues noted by
clang analyzer and Coverity. Most of the issues left can be fixed by
adding asserts. i.e. telling the analyzer that "no, this pointer can't
be NULL. So it's OK to de-reference it".
We now have unit tests in src/tests/. These are tests for:
- attribute encoding / decoding
- functionality for "unlang" keywords
- basic authentication methods
Each commit that is pushed to github gets built via travis
(https://travis-ci.org/FreeRADIUS/freeradius-server/) The three
maintained branches are all built. v3.0.x and "master" have 4 builds
each. Two builds are with clang / gcc. The other two builds are clang
/ gcc, but without threads, OpenSSL, and some other functionality.
A "cron" job submits every nightly build of the "master" branch to
Coverity. Any new issues are flagged immediately via email, and fixed.
This is all good news. However, it's not enough. Ten years ago (!!!)
Release 1.0.0 had 50K LoC. Today, Release 3.0.1 has 89K LoC. (Which is
smaller than Release 2.2.3, but has more functionality.)
All of that new code adds new code paths, and new functionality to
test. There are *large* portions of the server which are only tested in
the field, by users. That's bad. We'd like to have more automated
tests, but that requires time and effort which is not available right now.
Still, we've come a long ways. The server continues to be used
*everywhere*. If you see a RADIUS solution from a smaller switch or AP
vendor, odds are that it's FreeRADIUS. It's used in more places than
any other RADIUS server on the planet.
Our goals for the future are as follows. Version 2.2.x is the "long
term stable" release. The goal is to make as few changes as possible,
to ensure that users have a server which is as stable as possible.
Version 3.0.x is the "new features" release. It may be more unstable
than 2.2.x, simple because it's being actively developed. Most of the
new features here *cannot* be back-ported to 2.2.x. Also, most of the
minor Coverity / clang complaints *will not* be addressed in 2.2.x.
We've checked them, and they're not a problem, so we'll leave them alone.
In contrast, a goal for v3 is to have a clean code base. So any and
all fixes will be applied.
I'd like to finish by saying "Thanks" to everyone for the least 15
years. FreeRADIUS could not have been done without your continued
involvement, testing, and support. Well done, everyone.
More information about the Freeradius-Devel