Mail: psimerda AT redhat DOT com, pavlix AT pavlix DOT net
Jabber: pavlix AT pavlix DOT net
IRC Freenode: pavlix (#nm, #gentoo, ...)
Phone: +420 775 996 256
Timezone: Europe/Prague (CET), sometimes available through later hours
After learning a bit of programming, I was attracted by the networking world. I got from petty Pascal/C++ projects through web development using ugly PHP and later Python, to a freelancing work with most of the projects in server administration, network equipment configuration and a bit of programming. Most people in the business know me from my conference talks and articles.
One of my conference talk brought me an offer from Red Hat, which I joined in May 2012 to work on NetworkManager. I was already a Fedora user and package maintainer at that time. Since August 2013 I'm no longer working as a regular NetworkManager developer (staying an upstream contributor, though). Even before that I tried to put my hands on a number of other projects via bug reports, tests and code. I'm now working on name resolution features in Fedora including a local DNS/DNSSEC resolver setup. I'm also interested in various network-related standards and especially bugs and bad assumptions in IETF documents.
- Networking – A starting point for information related to networking.
- Tools/NetworkManager – NetworkManager information page.
Contributions are welcome.
- aiccu (IPv6 tunneling client)
- getdns (with Paul Wouters)
- hostname (taken over from Tomáš Hozza)
- radvd (taken over from Petr Písař)
Help with specific features or integration issues welcome.
- netresolve (author)
- NetworkManager integration scripts (with Tomáš Hozza)
- systemd integration
- Building on any distribution
- Virtual device support (bridging/bonding, with others)
- Valgrind and code coverage support for tests
- Separate platform interaction module (nm-platform, with Dan Winship)
- Refactored NetworkManager's bridging/bonding/vlan configuration
- Refactored NetworkManager's IPv4/IPv6 configuration
- Userspace IPv6 autoconfiguration (nm-rdisc/libndp, with Jiří Pírko)
- Getting IPv6 autoconf features on par with IPv4
- Avoiding loads of kernel IPv6 bugs and design flaws
- Runtime (non-persistent) configuration support (with Dan Winship and Dan Williams)
- A lot of bug triaging
Upstream bug reporting, triaging and minor contributions
- The getaddrinfo() support is very complicated while not giving correct results in many cases.
- Name resolution patches
- Network configuration is a real pain.
- Kernel IPv6 autoconfiguration is only designed for trivial use cases and is very buggy.
- Most of the advanced stuff is very buggy.
- Minor patches
- Missing for IPv6 link-local addresses.
- IPv6 disabled by default.
- Problems with duplicates in discovery.
- make, autotools
Make a fix and a build
bug=123456 message="do something" # ... add/modify files ... rpmdev-bumpspec *.spec -c "Resolves: #$bug - $message" fedpkg commit -c # ... check using gitk ... fedpkg push && fedpkg build
Make a scratch build from locally generated SRPM
fedpkg build --scratch --srpm
Bump a rawhide package to a newer version
In the package git directory:
version=... # Prepare a commit fedpkg switch-branch master rpmdev-bumpspec --new="$version" --comment="new version $version" *.spec spectool -g *.spec fedpkg new-sources `spectool -l *.spec | grep / | sed 's/.*\///'` fedpkg commit -c # Test it fedpkg build --scratch --srpm # Create a public build fedpkg push && fedpkg build
Requires development version, see:
Prepare rawhide to replace branches
Warning: This method discards changes in all branches and should only be used after all of the important changes are incorporated into master. Also, it is only suitable for packages where it's practical to maintain the same version in branches as in rawhide.
branches="f20 f19" # Fake-merge all branches into master: for branch in $branches; do fedpkg switch-branch master git merge -s ours $branch done # Build a new release rpmdev-bumpspec fedpkg commit -c fedpkg push fedpkg build
Update branches to match rawhide and build them
Use the above technique to prepare rawhide if branches can't be fast forwarded to rawhide.
branches="f21 f20" # Fast-forward all branches to master HEAD: for branch in $branches; do fedpkg switch-branch $branch git merge --ff-only master fedpkg push fedpkg build --nowait done # Switch back to master fedpkg switch-branch master
branches="f21 f20" type=bugfix bugs= comment="Bug fix update." # Create updates for all branches for branch in $branches; do fedpkg switch-branch $branch bodhi --new --type="$type" --bugs="$bugs" --notes="$comment" --close-bugs `fedpkg verrel` done # Switch back to master fedpkg switch-branch master
Create a new package
Create a local Git repository
package=... editor=... git init $package cd $package $editor $package.spec git add $package.spec fedpkg new-sources `spectool -l *.spec | grep / | sed 's/.*\///'` rpmdev-bumpspec $package.spec -m 'initial build' fedpkg commit -c
Create a review request
rawhide=f22 fedpkg --dist $rawhide srpm fedora-create-review --no-scratch-build *.spec *.src.rpm
Update a review request
rawhide=f22 message="incorporated review feedback" rpmdev-bumpspec *.spec -m "$message" fedpkg commit -c fedpkg --dist $rawhide srpm fedora-create-review --amend --no-scratch-build *.spec *.src.rpm
Review a new package
yum install @fedora-packager fedora-review ln -s /etc/mock/fedora-devel-x86_64.cfg /etc/mock/default.cfg mockuser=... usermod -a -G mock $mockuser
Review local files:
name=... fedora-review -n $name
bz=... fedora-review -b $bz
Fedora tools on Gentoo
emerge -av layman echo source /var/lib/layman/make.conf > /etc/portage.make.conf layman -a ixit mkdir -p /etc/portage/sets cat > /etc/portage/sets/fedora-packaging <<EOF dev-util/fedora-packager dev-util/quilt EOF emerge -av @fedora-packaging