Friday, December 14, 2007

Getting rid of warnings

If you have ever built Samba4, you will have noticed that gcc spits tons of warnings. As fixing little things all over the code is a good and easy way to get an idea what's done where, I have decided to go and fix as many of those warnings as possible.

Wednesday, September 19, 2007

Improving Samba4 winbind, a look back

What the project is about Samba4 contains a basic winbind implementation, but it is still lacking many features. The goal of my project was to improve Samba4 winbind so that the nsswitch and pam functionality provided by Samba3's winbindd would be present in Samba4, too. Simply copying code over from Samba3 would not do, of course, as the underlying architecture in Samba4 is different. Also, the goal was to improve readability of the code, as opposed to the more organically "grown" look of the Samba3 winbindd code. In Samba4, there is a library taking care of user/group management called libnet. Samba4 winbind uses this library extensively. What was done so far
  • Porting nsstest to Samba4 nsstest is a binary that test basic functionality of a nsswitch library. Once all the tests in nsstest work for libnss_winbind from Samba4, the winbind implementation is useable.
  • Getting information about users / SIDs This is the basic nsswitch getpwnam/getpwuid functionality returning a pwent structure. It is also possible to query for AD / NT domain information about the user/sid.
  • User listing / enumeration nsswitch provides a set of functions (setpwent/getpwent/endpwent) to iterate over a password database. The classic database is the /etc/passwd file, but of course using nsswitch, it's possible to use a directory like LDAP or AD.
  • Mapping SIDs to user ids and back This one is only stubbed out, as Samba4 doesn't handle that mapping yet. However, functions for this were needed to make winbind work, so I had to stub these out. The advantage is that the other code will automagically start to work correctly once these functions are implemented for real.
  • Mapping SIDs to group ids and back Much the same applies here, once idmapping is supported in Samba4, this will be replaced by real code.
What is left to do
  • Group enumeration The libnet functions for group enumeration were not implemented by the time GSoC was up. Now these functions are in, so support for groups identical to the user functions will follow soon.
  • NTLM caching Due to time constraints, caching of NTLM blobs was discarded. The nsswitch/pam functionality was regarded as core importance.
  • PAC/info3 caching As with NTLM caching, PAC/info3 caching was discarded. Caching is only interesting once the other features are working and will be implemented eventually.
  • Automated tests Currently the only way to test all of the functionality is to wrap the wbinfo binary and let that take care of constructing the necessary winbind queries. This is a bit clumsy. Jerry Carter is currently working on a winbind client library that will allow to access the functionality of wbinfo without a wrapper. The tests will be implemented using that API once it is in the tree.
Future (related) work First of all, the features still left on the TODO list will be implemented. Group functions first, testing next if possible. There is more to winbind than this GSoC project was about, so the more missing features will be implemented. The caching will follow once the other features are working and tested. An improved winbind will help Samba4 to not only act as an AD controller but also as a domain member. A look back Complying with long-standing computer science tradition, I underestimated the amount of work that had to be done before I could start working on the actual features I was planning to implement. In the end I had to prioritize features and drop the least important ones to get finished in time. I did not expect to spend so much time figuring out my way around the libnet code. However, the foundation for implementing the dropped features is laid, so I do not feel too bad about it. Samba4 winbind already works better than before. Pending group support and id mapping, it will be usable for simple scenarios. Conclusions I still need to be more careful about the scheduling of projects and estimating the amount of work required to get features to work. Still, the only way to improve is to try and adjust the estimations accordingly. I feel more confident around the Samba4 code now, thanks to Metze, Jelmer and Andrew's help. Of course thanks to all the other team members for the help and advice offered, on IRC and the mailing lists. Last but not least I would like to thank Google in general and Leslie Hawthorn in particular for running the third Summer of Code program in an efficient manner, making this a really enjoyable experience.

Friday, July 27, 2007

Having a Campus Party

¡Buenas tardes, compaƱeros!

Spending all of this week in Valencia, Spain for Campus Party 2007, I'm having loads of fun hanging out with the other Summer of Code students and all the nice people from Google.

I have tried hard to get some work done for my Summer of Code project this week, but it's rather hard to really concentrate when you're in a room with thousands of people playing computer games, having shouting competitions and generally a lot of noise. I wish I had noise-canceling earphones.
Still, I'm currently working on some code that should make my life easier next week. Writing utility functions is lots of work, but usually worth it.


Yesterday, I had a fun time delivering my presentation about experiences with Google Summer of Code and tips how to get into Google Summer of Code in 2008. The small lecture room that Google uses for the talks and tutorials was pretty full, so I hope some of these people will actually get into Google Summer of Code next year. I did not really get into details on my current and previous projects but rather talked about personal experiences and strategies to get your proposal accepted.

Apart from writing code for my SoC project, preparing and giving the talk, I'm having fun with the Googlers and SoCers, hanging out at the beach at 3 in the night, having nice food and generally enjoying myself. Sleep is a bit short, but there's always something.

¡Hasta luego!

Monday, July 23, 2007

En route to Valencia

Finally on my way to Campus Party 2007. I really need to get my talk for thursday done, hopefully I'll be able to finish it before my plane touches down in Valencia. (I'm currently waiting for my first flight to depart, not blogging from a plane.) Originally I was planning to take care of my talk last weekend, but some nice virus decided that I'd rather spend all weekend in bed, sick. Oh well, this won't be the first just-in-time presentation. I'm just hoping my stomach will settle down a bit so I can actually enjoy all the nice Spanish food. I'm looking forward to a nice week in Spain, even though I will have to spend my time working on my GSoC project, as well as my LinuxConf.EU talk. I will be blogging from the event, too.

Thursday, July 12, 2007

LinuxConf.EU

The talk I proposed for LinuxConf.EU was accepted, so I'm going to Cambridge early September. Unfortunately this means that I actually have to write the talk I proposed to give. Also, as I need to hand in my talk by 30th of July, I'll probably need to write it while I'm at Campus Party in Valencia. Oh well. I'm looking forward to another nice conference.

Wednesday, July 4, 2007

Traveling to Spain

Google invited me and three other students to join them for the 2007 version of Campus Party. This means that I will travel to one of Spain's largest technology events to meet some other GSoCers and give a presentation about my GSoC project and my experience with GSoC in general. It looks like this is going to be lots of fun. Time to go and work on my presentation.

Saturday, June 30, 2007

plunger moves to Google project hosting.

So far, plunger has existed in the WorldForge cvs tree out of convenience. However, as there are quite some people interested in plunger from outside the WorldForge project, I've decided to provide more infrastructure than what WorldForge has right now. This includes an issue tracker to allow people to more easily create bug reports and give feedback. After spending some hours to move the code from cvs to google's svn, plunger now lives at http://code.google.com/p/plunger/ Expect some changes while I sort out the infrastructure I want to have set up at the new site.

Hello World

This being the traditional first program for any programming language, I think it's a fitting title for the first post to a development blog. Now, what is this blog all about? I'm not a big fan of blogging in general, but I have to admit that they are a good way to provide news and status updates for projects. I'm developing for a couple of different projects and I'd like to have a single place to write about this, instead of having to go to a different blog site for each.