
West Virginia Democrats vote today in a primary that Senator Clinton will win. Not will probably win, she will win it but it hardly matters now. The scorecard of delegates is shaping up to an Obama candidacy now. Senator Obama has more regular delegates and more Super-delegates than the New York senator and there aren't a great deal left to play for.
Now, were I an American, I could personally support either of the two Democratic candidates. Were I an American and a member of the Democratic party, it would have to be Clinton for me. Why? Look at the Electoral College situation based on the latest polls. I've blogged about this before but the difference between a Clinton-McCain race and an Obama-McCain contest is now even more marked. The latest polls show Clinton beating McCain by such a large margin that even if the tied states all went to McCain, Mrs Clinton would still win. On the other hand, the polls show McCain crushing Obama by an even larger margin than Clinton would beat him by.
So, what happens now? It's hard to see Obama not winning the candidacy and that's why I think Clinton is still pushing hard. If she shows the determination not to quit and the resolve that it takes to fight to the last, she can begin her campaign to stand against McCain in 2012 on November 5th, as soon as the votes have been counted. Then, who knows, perhaps a Clinton will unseat an incumbent Republican for the second time, twenty years on...

If you’re a Twitter user, and you’re “tweeting” about openSUSE, here’s a way to add some additional context to your tweets and help get the word out about openSUSE. While I was at Sun’s CommunityOne, I started noticing other users adding a hash tag in their posts — i.e., posting about #communityone instead of just “communityone.”
While Twitter doesn’t do anything special with hash tags, you can track hash tags on (of course) hashtags.org. As you can see, there’s not a lot of activity under #openSUSE just yet, but I’d like to see that change. I’ve been using #openSUSE a lot on Twitter lately, but I just realized this morning that your tweets are only indexed by hashtags.org if you follow the @hashtags bot, but (at least for now) the bot doesn’t post often (last post was about 3 months ago) so it’s not going to be a major pain to follow.
I’ve wondered whether it’d be reasonable to suggest following Twitter accounts on Planet SUSE, but it might be better if interested users could follow the #openSUSE RSS feed instead.
It’s still important for openSUSE contributors to blog about their work, I think, but Twitter might be a good supplement for blogging when you have something short and sweet to say. (You’d be surprised what you can pack into 140 characters, if you try.)
On an unrelated note — I think the 140 character limit might be a good one for slides in presentations: If you can’t fit an idea into a 140 character tweet, it’s too complicated to go on a single side.
Maybe we should have some real-time Twitter presentations about openSUSE for new users when 11.0 is released? Is that a good idea, or do I need more coffee? I’ll have some more coffee just in case, but any ideas about how to to use Twitter (and other methods…) to promote openSUSE are welcome in the comments.
Josh Berkus has a good piece on his IT Toolbox blog about his “Ten Ways to Destroy Your Project” (PDF and ODF here) presentation. He calls it community destroyers, I just call it community sabotage — ways to ensure that there’s no community around an open source project.
I’ve known Josh for quite a few years, and he’s definitely someone to listen to when it comes to building community. In my reporting days, I ran into Josh quite a bit — first when covering OpenOffice.org — he was a marketing volunteer for OpenOffice.org back in 2003 when I wrote about the project for LWN, about its efforts in creating a Community Council. And Josh has been heavily involved with PostgreSQL for many years, and is a tireless advocate for PostgreSQL and a very effective member of that community.
According to Josh, there are 10 ways (at least) to effectively hinder community around an open source project. (Taken from Zack Urlocker’s post about Josh’s talk…)
1. Have difficult tools
2. Encourage poisonous people
3. No documentation
4. Closed door meetings (or poorly announced ones)
5. Lots of legalese
6. Bad liason
7. Governance obfuscation
8. Screw around with the license
9. No outside contributors
10. Be silent
And, of course, the reverse is almost true — that is, look at the list, figure out the opposite of each item and do that instead. So, be sure to avoid unnecessary legalese (some, unfortunately, is probably necessary…), make sure your meetings are open and well-publicized, encourage contribution, provide documentation, and communicate, communicate, communicate.
I say almost true because the central point of community when talking about open source is, of course, a worthwhile project. Even if you do everything else right, you can’t really build community around software that nobody cares about.
I suspect you could come up with some ideas for building (or if you’re in the mood, destroying) a community that aren’t on the list here, but I think Josh has neatly summarized some of the most important functioning parts of community.

The real situation: A bug previously posted on this blog. I received a comment talking about bugs reports to Novell, and I reported on “bugzilla” of Novell. The new Beta 3 version of openSUSE 11 will be solve the bugs.
I don´t know if I made something reporting this bug(maybe already reported), but I remembered: Please report bugs to your favorite distribution. Its so important to know, to find some errors to be fixed and improve your distro.
Special post to people which wants development, but don´t know how develop. Reporting bugs is a good start to help your distribution, without develop.
A personal project that is very close to my heart reached the great milestone of v3.0 last night at 2111 BST. Our daughter Felicity was born weighing in at a healthy 8lbs 15oz / 4.04kgs and measuring 20in / 52cm.

One of the things I’ve been working on today is a reviewer’s guide for openSUSE 11.0 — something to send out to those who are reviewing openSUSE 11.0 for the press (as well as anyone else who might want to read it…)
So, I’ve been compiling a list of features we need to cover, from large (KDE4, GNOME 2.22, new installer) to small (RPM payload switched to lzma). Of course, two heads are better than one, so I thought it’d be worth polling the openSUSE community to see what new features or improvements in openSUSE 11.0 are making life better for users.
I am close to my graduation (school leaving exam), but I still can't focus to study, so I think, I should make something usable for me and other community member. I try upgrade my openSUSE 10.3 on notebook to openSUSE 11.0 Beta2 via integrated updater. I was startled, but upgrade ...
It’s no secret that virtualization can offer immediate returns by reducing infrastructure, power usage and cooling costs, but as many companies are learning, virtualization is not enough. In a recent eWeek video, contributing editor Stan Gibson reports on how, what and who can help you to manage virtualization in your organization. Check it out here.

jslezacek shares a tip on how to save Kernel boot messages after a server crash/hang when access to a serial console is not available.
Over the past week, I've been spending some time hacking on Evolution again because of my frustration with the current IMAP backend. This got me to wondering... why hasn't anyone stepped up to the plate and rewritten Evolution's IMAP code yet?
The Novell/SUSE development offices in Prague, Czech Republic have on the 15th an event called “otevreneSUSE” which means “openSUSE” in Czech.
This event is for local people who are interested to experience how it is going in our Prague office, how developers look when they are working, what funny stuff we have done so far etc. This event is especially for people who are joining or thinking of joining the community - and like to get to talk live with some real persons that are working on openSUSE.
Detailed information are provided in Czech language only on http://www.suse.cz/akce/otevrenesuse08.html. If you need details in English or have further questions, please contact office@suse.cz.

javaldx. The purpose of javaldx is to
(cunningly) grope your system - to look for performance-enhancing
java goodness: here are some stats:
| syscalls | 182000 |
|---|---|
| of which lstat64's | 161000 | normal (warm) start | 0.74 secs |
/usr, 14k of /usr/lib, 13k of
/home etc. sigh. Perhaps the frenzy is just revenge for
not having any java on the live-CD system.
sudo; su - prompts
for a non-obvious password; interestingly vs. openSUSE's 11.0' LiveCD
there is no OpenOffice included; odd. Interesting to poke at baobab
to see the size breakdown of the live-cd - odd to have 130Mb of
fonts included, and nothing much to use them; Solaris suffers from
the gconf.xml.defaults malaise too - of ramming tons of translations
into a single file: when will the world stop doing this: 50Mb of
irrelevance ?
I am excited to be mentoring Andrew Wytyczak-Partyka this summer as part of GSoC. Andrew will create a library implementing the Digital Photo Access Protocol (DPAP) and integrate it into F-Spot. I'm not familiar with DPAP, so any experts please feel free to give us pointers.
A bit of a delay in getting this one uploaded because of a wee problem with the CD but it's now available.
Recorded May 4th at St Paul's in our monthly Celebration service, 19 minutes, 45 seconds long available as Ogg Vorbis or MP3:

Please, watch Zeitgeist.
ZeitGeist - The Movie
I´m not a radical. But I really believe on many point of views. Like a friend said: Open Mind.
This morning I released the first development release in the 0.11.x series. Tomboy 0.11.0 features Boyd's Tasque add-in, the beginning of John Anderson's rewrite of the printing add-in (goodbye libgnomeprint!), and even a patch or two from our founding father. The new printing add-in lacks a few features, most notably text styling/formatting. We'll make sure to get it fixed before 0.12.0 is released, but if you want to see it fixed faster, patches are welcome. :-P

On Thursday, May 9th, 2008 the Utah Python User Group decided to settle the debate that has plagued us developers since the beginning of time: If you were a programming language, what editor would you use?
I was tasked with showing Eclipse with the PyDev plugin in all its glory–but we all know–real men / developers don’t use IDE’s, so we are going to talk about using Python and Vim together, reaching a state of Zen that the Dalai LLama would be jealous of and establishing more Feng Shui than Martha Stewart’s Kitchen.
Freely jump between your code and python class libraries
There are 2 ways to add your ability to jump between python class libraries, the first is to setup vim to know where the Python libs are so you can use ‘gf’ to get to them (gf is goto file). You can do this by adding this snippet to your .vimrc:
python << EOF
import os
import sys
import vim
for p in sys.path:
if os.path.isdir(p):
vim.command(r"set path+=%s" % (p.replace(" ", r"\ ")))
EOF
With that snippet you will be able to go to your import statements and hit ‘gf’ on one of them and it’ll jump you to that file.
Continuing accessibility of the Python class libraries we are going to want to use ctags to generate an index of all the code for vim to reference:
$ ctags -R -f ~/.vim/tags/python.ctags /usr/lib/python2.5/
and then in your .vimrc
set tags+=/.vim/tags/python.ctags
This will give you the ability to use CTRL+] to jump to the method/property under your cursor in the system libraries and CTRL+T to jump back to your source code.
I also have 2 tweaks in my .vimrc so you can use CTRL+LeftArrow and CTRL+RightArrow to move between the files with more natural key bindings.
map <silent><C-Left> <C-T>
map <silent><C-Right> <C-]>
You can also see all the tags you’ve been to with “:tags”
Code Completion
To enable code completion support for Python in Vim you should be able to add the following line to your .vimrc:
autocmd FileType python set omnifunc=pythoncomplete#Complete
but this relies on the fact that your distro compiled python support into vim (which they should!).
Then all you have to do to use your code completion is hit the unnatural, wrist breaking, keystrokes CTRL+X, CTRL+O. I’ve re-bound the code completion to CTRL+Space since we are making vim an IDE! Add this command to your .vimrc to get the better keybinding:
inoremap <Nul> <C-x><C-o>
Along with code completion, you will also have call tip support. Here is a screenshot:

Documentation
No IDE is complete without the ability to access the class libraries documentation! You’ll need to grab this vim plugin. This gives you the ability to type :Pydoc os.path or use the keystrokes <Leader>pw and <Leader>pW to search for the item under the cursor. (Vim’s default <Leader> is “\”). Here is a screenshot:

Syntax Checking
Vim already has built in syntax highlighting for python but I have a small tweak to vim to give you notifications of small syntax errors like forgetting a colon after a for loop. Create a file called ~/.vim/syntax/python.vim and add the following into it:
syn match pythonError "^\s*def\s\+\w\+(.*)\s*$" display
syn match pythonError "^\s*class\s\+\w\+(.*)\s*$" display
syn match pythonError "^\s*for\s.*[^:]$” display
syn match pythonError “^\s*except\s*$” display
syn match pythonError “^\s*finally\s*$” display
syn match pythonError “^\s*try\s*$” display
syn match pythonError “^\s*else\s*$” display
syn match pythonError “^\s*else\s*[^:].*” display
syn match pythonError “^\s*if\s.*[^\:]$” display
syn match pythonError “^\s*except\s.*[^\:]$” display
syn match pythonError “[;]$” display
syn keyword pythonError do
Now that you have the basics covered, lets get more complicated checking added. Add these 2 lines to your .vimrc so you can type :make and get a list of syntax errors:
autocmd BufRead *.py set makeprg=python\ -c\ \"import\ py_compile,sys;\ sys.stderr=sys.stdout;\ py_compile.compile(r'%')\"
autocmd BufRead *.py set efm=%C\ %.%#,%A\ \ File\ \"%f\"\,\ line\ %l%.%#,%Z%[%^\ ]%\@=%m
You will have the ability to to type :cn and :cp to move around the error list. You can also type :clist to see all the errors, and finally, sometimes you will want to check the syntax of small chunks of code, so we’ll add the ability to execute visually selected lines of code, add this snippet to your .vimrc:
python << EOL
import vim
def EvaluateCurrentRange():
eval(compile('
'.join(vim.current.range),'','exec'),globals())
EOL
map <C-h> :py EvaluateCurrentRange()
Now you will be able to visually select a method/class and execute it by hitting “Ctrl+h”.
Browsing the source
Moving around the source code is an important feature in most IDE’s with their project explorers, so to get that type of functionality in vim we grab the Tag List plugin. This will give you the ability to view all opened buffers easily and jump to certain method calls in those buffers. Here is a screenshot of it in action:

The other must-have feature of an IDE when browsing code is being able to open up multiple files in tabs. To do this you type :tabnew to open up a file in a new tab and than :tabn and :tabp to move around the tabs. Add these to lines to your .vimrc to be able to move between the tabs with ALT+LeftArrow and ALT+RightArrow:
map <silent><A-Right> :tabnext<CR>
map <silent><A-Left> :tabprevious<CR>
Debugging
To add debugging support into vim, we use the pdb module. Add this to your ~/.vim/ftplugin/python.vim to have the ability to quickly add break points and clear them out when you are done debugging:
python << EOF
def SetBreakpoint():
import re
nLine = int( vim.eval( 'line(".")'))
strLine = vim.current.line
strWhite = re.search( '^(\s*)', strLine).group(1)
vim.current.buffer.append(
"%(space)spdb.set_trace() %(mark)s Breakpoint %(mark)s" %
{'space':strWhite, 'mark': '#' * 30}, nLine - 1)
for strLine in vim.current.buffer:
if strLine == "import pdb":
break
else:
vim.current.buffer.append( 'import pdb', 0)
vim.command( 'normal j1')
vim.command( 'map <f7> :py SetBreakpoint()<cr>')
def RemoveBreakpoints():
import re
nCurrentLine = int( vim.eval( 'line(".")'))
nLines = []
nLine = 1
for strLine in vim.current.buffer:
if strLine == ‘import pdb’ or strLine.lstrip()[:15] == ‘pdb.set_trace()’:
nLines.append( nLine)
nLine += 1
nLines.reverse()
for nLine in nLines:
vim.command( ‘normal %dG’ % nLine)
vim.command( ‘normal dd’)
if nLine < nCurrentLine:
nCurrentLine -= 1
vim.command( ‘normal %dG’ % nCurrentLine)
vim.command( ‘map <s-f7> :py RemoveBreakpoints()<cr>’)
EOF
With that code you can now hit F7 and Shift-F7 to add/remove breakpoints. Then you just launch your application with !python % (percent being the current file, you can declare your main file here if its different).
Another tweak I use is to have my vim inside screen with a horizontal split, that way I can see the python interpreter and debug while still having vim there so I can easily fix my code. Here is a screenshot of that in action:

Snippets
A great time saver with stanard IDE’s is code snippets, so you can type a few key strokes and get a lot of code out of it. An example of this would be a django model, instead of typing out the complete declaration you could type ‘mmo<tab><tab>’ and have a skeleton of your model done for you. To do this in vim we grab the Snippets EMU plugin.
Check out a great screencast of snippetsEmu in action here
You can get my full setup here
Emacs
Here is a great post on how to do the same with Emacs.

In two and half weeks the likely biggest Linux Event kicks off: LinuxTag 2008 in Berlin. Four days of exhibition and more talks (the organizers say 240, German/English mixed) than ever before. I plan to be around all the time. 
On Wednesday everyone's darling, the multi-headed president of KDE e.V. and the galaxy, Aaron Seigo will give a keynote about KDE4. On Friday is a day-long track with KDE talks, on Saturday is openSUSE day and there are separate talks about Amarok and Kontact planned. Additionally there will be of course KDE and openSUSE booths all the time.
Special tip: one can travel for 59 Euro from everywhere in Germany with ICE to LinuxTag/IT Profits and back.
Just want to point out four improvements of the YaST Qt package selector in the upcoming openSUSE 11.0 that were missing too long, much requested (at least by me) and now added
:
The first screenshot shows the new special package groups "Suggested packages" and "Recommended packages" to list packages which enhance your installed packages. Also the strange "zzz All" package group of previous releases is renamed to "All packages" and visible without endless scrolling.
On the second screenshot you can see the new "@System" meta repository to list all installed packages only. And note the new secondary filter "Unmaintained packages" to detect which packages are not contained in your activated repositories (also a nice way to detect which old packages were wrongly not obsoleted by a distro upgrade).
Update: Let me add a fifth one. As you can see on the screenshots we have a yast2-theme-openSUSE-Oxygen package with Oxygen style like icons everywhere thanks to Martin Schlander.


Apologies to maintainers of Planet type sites that aggregate my blog (including to myself for Planet SUSE) as those sites will be picking up some of the non-blog bits of my site at the moment. As part of sorting out the site, I've moved those pages into the blog tree rather than having to maintain two versions of the look of the site (one for the blog script the other for the PHP pages) and, having also edited some, they now have a datestamp of today.
I've also changed the look of my site slightly, tweaking the style I launched at the start of the year. There's less dead-space now and larger fonts make it easier to read. It also defaults to the Free DejaVu fonts when they're available.

Despite being a openSUSE member and a platinum member of the PackMan team packaging several widely-used applications he also helps the Build Service team with osc code contributions.
With no more talk, today we nominate Marcus Hüwe as part of ‘People of openSUSE’!
Given that you're here, and apparently reading this tripe, I assume you
want to know something about me. Well, I'm in my early 30s and I currently
live near Southampton on the south coast of England.
I've been married to Amanda since March 1998 and we have a son, Callum, who was
born in January 2007.
I used to be a UNIX Systems Administrator for an insurance company. Before that I was Network Manager at SUSE Linux UK. I am probably best known for my work on the openSUSE GNOME repositories and for running Planet SUSE, where you can read the latest blogs from the openSUSE community.
I've been a curate at an Anglican church here since July 2007 and before that I was training at St John's College, Nottingham. Before starting my training, we lived in Watford, which is in Hertfordshire, just north-west of London.
Oeste Digital Network (ODN), a tech group part of a Portuguese association which I am involved in, some days ago was invited by ANAE (Education and Animation National Association) to join a *particularly* mini LAN party for children between 4 and 7 years old. This LAN party will take three days (Friday to Sunday, and afternoons only obviously) in June, and the goal is to ODN take care of the games. Therefore computer games will be needed!


Dear FOSDEM 2008 attendees,
Unfortunately I couldn't go to FOSDEM 2008. I can't either find much photos available on the Internet nor videos at all. So... I'm begging you to upload some photos and videos from FOSDEM 2008, specially from the openSUSE booth and talks.
Best regards,
Carlos Gonçalves

There has been a discussion on the HAL development list regarding DeviceKit, a corresponding power management subsystem daemon, and a possible CPU frequency scaling interface.
During the discussion, it turned out, and I realised this quite late, that KPowersave still exports the possibility to set either the powersave or performance governor. That is basically a bad idea, and still there because of former times. See this journal for a good rationale. However, the author quite unfriendly rants towards the developers. Unfortunately, I’ve not seen a bugreport in sourceforge’s bugtracker for that, nor anywhere else. Maybe he could have pointed this out in a more elegant way, instead of immediately telling people they are dangerous. How emotional. And funny after all. I filed it here, just to be sure it is not missed for upcoming openSUSE 11.0.
So that is the one issue of the discussion, a completely other one is about if we need a D-Bus interface for tuning CPU frequency scaling (related to the ondemand governor) knobs. As an example, the ondemand governor provides an up_threshold setting you can tune through sysfs. Basically it defines how long a CPU burst has to be so that the frequency is increased. Quoting the kernel documentation:
up_threshold: defines what the average CPU usaged between the samplings of 'sampling_rate' needs to be for the kernel to make a decision on whether it should increase the frequency. For example when it is set to its default value of '80' it means that between the checking intervals the CPU needs to be on average more than 80% in use to then decide that the CPU frequency needs to be increased.
When having only short CPU bursts, it is better to stay at a low frequency for a short period of time when it comes down to power consumption. And the typical desktop use consists of those short CPU bursts. Browsing a web page, opening a mail folder, etc.
The kernel sets a sane default for this setting. It is nearly self-evident for a default to be sane, someone should have thought carefully about it. However, that does not mean it is ideal. It just cannot be for all different kind of use cases. Servers, desktops, what applications are running, “on battery”, “on AC”, namely, depending on the current power source.
So I am an advocator of having a D-Bus interface somewhere at the system level (we already have in HAL, but this will most likely vanish sooner or later due to its successor called DeviceKit) for tuning such knobs by someone who cares about policy. And policy is more and more put to Desktop applications these days.


If you have a few minutes to spare this weekend, and haven’t done this yet, contribute just a few minutes to the open source census. What’s the aim of the Census? Pretty ambitious:
The Open Source Census is the first collaborative, global project to count the number of installations for each open source software package. We realize that’s pretty ambitious, but we figure you have to think big. Of course, we know we can’t count every single installation of open source software in the world, but we believe it’s possible to obtain a sample large enough to be representative.
Since open source is not subject to a single point of control, it’s really hard to gather accurate data. So it’s vitally important for open source advocates to participate in efforts like this to help gather more accurate data.
Instructions are here - it’s really simple and only takes a little while. I think it took about 15 minutes on my ThinkPad T61 for the scanner to run, but it’s something you can kick off and then go do something else. So, download the client, register with the project, and then run the client before you go out to lunch or start your normal weekend activities — it’ll be done long before you come back.
So, take a few minutes to be counted, and have a lot of fun this weekend.

We're looking for a neat, meticulous person to help us rack and wire some servers next week, on Tuesday and Wednesday. The tasks are unboxing, carrying, mounting, screwing, wiring, and testing the servers. Pay is $20/hour, duration is until we're done, location is in Waltham (we'll pay for your transport).
If you're interested, send mail to pzb@novell.com and mention any relevant experience or skills.

Thanks to Rodrigo’s work, simple-ccsm now has a switch to easily enable/disable Compiz.
On openSUSE 11.0 users will not have to fiddle with any commandline, hack scripts or xorg.conf to enable Compiz. AIGLX is enabled by default on all the supported hardwares, and as soon as ATI/NVIDIA drivers are installed via 1-click, so all that is required is launch simple-ccsm (Desktop Effects) application and enable compiz.

In case you are wondering what theme I am using, it is just the default openSUSE gilouch theme, greened just the way I like it. Download and drag and drop the tarball on “Appearence” caplet if you want it too.
Monsoon
Participants in the Google Summer of Code will now be recognised on Planet SUSE by having GSoC in front of their names at the top of their posts.
If you're a student on the GSoC and you don't see this with your posts, please drop me a line and let me know.

Its about time I start writing reports so you can see what am I working on. First in the series is a bi-weekly one due to community bonding and learning period, but I intend to switch to regular weekly cycles once things settle down a bit.
That would be all for now. Although according to GSoC timeline hacking starts on May 26, I hope to start writing some prototype code sooner. Hacking is fun ![]()


I’ve just finished designing a new dialog for Calc’s sheet protection functionality to allow optional sheet protection options. This was actually my first time designing a dialog from scratch instead of modifying an existing one, so I had to dig around and figure out how to add a dialog. It turns out that it is actually very simple once you know what to do. After several hours of creative designing process, I’ve come up with something I can show to people. So here it is:

One thing to note: obviously this dialog is inspired by the similar functionality offered by Excel, and Excel provides many more options for sheet protection than just the two I’m showing here. The reason I only have two at the moment is because I’ve only implemented support for those two options in Calc core. When we support more options in the core, we can easily add them to the dialog.
This work is on-going in scsheetprotection02 CWS. Aside from the new dialog and sheet protection options, this CWS contains my other work on the binary Excel export encryption as well as sheet and document password interoperability between Excel and Calc. I’m trying to wrap this up, so hopefully I can come up with something that people can try out soon.