
Welcome, visitor!
netconf is a network configuration management system designed with modern network infrastructures and the needs of roaming users in mind. It is currently in development and not yet usable.
Motivation & overview
On Linux systems nowadays, network configuration is handled differently on each distro. The solutions are usually quite mature and flexible, but are starting to reach their limits given today’s requirements, which include roaming laptops and wireless networks, VPNs, LinkLocal networks, etc… The distro-specific methods usually employ hooks to configure everything beyond the simple IP interface, but the solutions are quite brittle in the event of errors or exceptional situations.
Projects, such as NetworkManager, address the needs of the roaming laptop user, but they cannot cater for other, more general use cases. In addition, its GUI-centric approach often leaves advanced users with a feeling of lack of control, and imposes unneccessary dependencies for minimal systems.
netconf aims to address these problems. It is a daemon designed from the bottom up with only minimal functionality. It uses an event-driven model and well-defined, bidirectional interfaces, which make it possible to integrate advanced functionality: link and location autodetection; configuration of printers, smarthosts, proxies, etc. from DHCP data; LinkLocal addressing; wireless LAN; VPN; firewalling; advanced routing and traffic control, including bridging, various user interfaces (including the NetworkManager GUI), and so on.
The daemon is implemented without threads and only uses polling where absolutely necessary, thus letting the processor sleep, which reduces power consumption.
netconf is being developed for Debian systems but its design makes it trivial for other distributions (even those using non-Linux kernels) to deploy it without the need to adopt Debian’s network configuration paradigms — in fact, the compatibility with Debian’s well-established ifupdown is implemented as an extension to the netconf core.
The code is currently in alpha state. It is implemented in Python and will eventually be ported to C or C++.
Licence & copyright
netconf is the brainchild and copyright © martin f. krafft. The code is available under the terms of the GNU General Public License v2.
The logo has been designed by Aurore D., who holds the copyright. She placed it under the same license. It is available as SVG file from the Git repository.
Links & development resources
-
we have a planet (blog aggregator).
-
braindumps and feature wishlist are on the wiki page. Please do not use this wiki page anymore.
-
an (initial, incomplete) roadmap for version 1.0 is available in the git repository
-
a TODO list is available.
-
there is a mailing list with archives.
-
we hang out in the
#netconfIRC channel onirc.debian.org. -
the design document, is anything but final, but it gives a good overview of the structure of the code.
-
you can get the source via git:
git clone git://git.debian.org/git/netconf/netconf.gitI like the workflow in use by the
gitproject itself a lot, so have a look at their guidelines on submitting patches and have a go; feel free to ask on the list for advice.Do not hesitate to heckle me (IRC nickname ‘madduck’) with Git questions! It’s a great system and I truly enjoy helping others learn it.
If you have an
alioth.debian.orgaccount, you can also use thesshtransport:git clone ssh://git.debian.org/git/netconf/netconf.gitIf you would like to be able to push your commits, prod me for an account.
-
commit messages (will) go to this (unarchived) list. I have disabled them for now as they were more of a burden than gain. Feel free to sign up to the list, they’ll be turned on as soon as there’s working code.
-
the repository is also accessible via a web browser.
-
netconf also has an alioth project page.
Talks & presentations
-
slides from my FOSDEM 2008 presentation are available, as is a video recording.
-
slides from my LCA 2008 talk are available, as is a video recording.
-
I presented the code to a small audience at DebConf7. The session has been recorded on video and files will be available in low/high quality shortly.
-
slides from two early talks on
netconfare here and here. Note that their content does not really correspond to currentnetconfany longer. The latter talk has been recorded and the video will be available in low/high quality soon.
How can you help?
I’d much rather be a part of a team behind netconf and am looking forward to working with you. There are plenty of opportunities to contribute to netconf:
-
spread the word and get other people to join.
-
heckle us, give us crazy ideas and share your most intimate network configuration desires.
-
write doc strings. I have not really documented the code. Well, actually, I have not documented the code at all. It should be pretty straight-forward and well organised, thus easy to understand and so if you make sense of it, you might just want to write it down?
-
write unit tests. Those are trivial and don’t even require Python knowledge. They are just a good way to get acquainted with the code and the language, and for extra benefit, they’re incredibly useful.
-
write code. This ranges from shell script methods to complex entities, such as the policy backend. The low/high quality recording of a code introduction session I held in June may be of help (videos available soon).
-
implement stuff off the TODO list.
-
understand the code and conceptualise complex scenarios, such as WPA and network bridging, location auto-detection and VPN. You may also benefit from the code introductory session linked from the last bullet point.
If any of the above strike your fancy, git the code and subscribe to the mailing list and let us know. Or write to me (madduck) only if you’d prefer not to go public just yet.