GNOME on Facebook
You have Facebook and you enjoy GNOME? Want to become a fan of GNOME ? Just click "Like" on the GNOME page.
GNOME have a team of hackers ready to show you cool content (not spamming i promise) about this project!
See you there! :)
Details that sometimes do matter
KDE Project:
Some things are really really tiny details, yet they can be annoying in way. Something that's been occassionally bugging me is that fact that KDE uses the same wallpaper as KDM background, the splashscreen background and desktop background, yet depending on the screen resolution it may not be exactly the same background - during login the picture may stretch or shrink at certain points. The times when decent monitor screens had a 4:3 ratio are a thing of the past, starting with LCD makers making 5:4 "narrow-screens", then changing their minds and making 16:10 or 16:9 wide-screens. The choice of screen resolutions is not that limited either and that means that the wallpaper has to be scaled ... and that was the problem. Plasma has code to select how to do the scaling, KSplashX has code for that and KDM has code for that, and yes, you guessed it, it's always a different code. So unlucky resolutions get different wallpapers from different code. Since I actually spent some time in the past trying to make the login as seamless as possible, this indeed made me twitch whenever I saw it.
Seeing this again while testing openSUSE 11.3 made me finally spend the time to patch the openSUSE package to use the same selection code in all the three components. We really lack polish in so many places :(. But now it looks like the change is almost not there - there's just a progressbar and logo shown during startup and that changes to the desktop. With compositing enabled there would be also the fade-in animation.

Seeing that 4.4's KDM had no support for differently sized wallpapers, I was about to submit a copy of Plasma's code there when I noticed that trunk has some code for it. Of course, different from the rest again. Also, the login sequence is basically just lucky to be so smooth. The splashscreen is supposed to stay visible until Plasma is ready with its wallpapers and panel layout. And there is code in KSMServer to ensure this. And Plasma uses it. Yet it's apparently not used properly - during the first login, when there is more setup to be done during login, it's perfectly possible to see how the panels are set up. Well ... maybe in time for openSUSE 11.3 + 1.
Let’s beat the drum for openSUSE conference 2010
Robert and myself visited most open source projects attending LinuxTag 2 weeks ago and invited them to come to the openSUSE Conference – be it as visitor, giving a presentation or doing a workshop. Feedback was all over the place positive. But feedback isn’t enough – we’ll do some follow up to make some of them participate and all of us should now promote the openSUSE Conference where possible.
Let’s spread the word about the openSUSE Conference and its motto “Collaboration across borders”, invite developers of other communities and other projects to join as a visitor or to give a presentation on a topic which affects all of us or lets do a workshop, hack session or just having fun. Call for papers is open till July 31 – so now is the time to shape the conference. Send in our proposal or idea to cfp@opensuse.org.
Robert and gnokii created some artwork for the openSUSE conference which is perfect to add it on web pages or to print out the posters to do some promotion in your area.
openSUSE Conference in short:
- October 20-23 in Nürnberg, Germany
- Free entrance
- 4 days conference with 4 tracks plus hack sessions and workshops
- Topics:
- Technology and Upstream Development
- Education and Science
- Business
- User and Home
- Everything is possible – just send an email to cfp@opensuse.org
Hack Week project: Cydin
https://test.googlecode.com/svn/trunk/tags/test-project/*
Hackweek V: mkdiststats
When Coolo mentioned that he is looking into improving the rebuild time of Factory
I couldn’t resist to try the script he was using myself. It turned
out that the script was extremly slow, it took about 15 minutes for
the calculation on my computer. The script was originally written a
long time ago for the old autobuild with a much lower number of
packages and dependencies to take care of. The ad-hoc method used
for the ‘rebuild simulation’ just didn’t scale well. Hackweek was a
good opportunity to improve the performance and to add some more
options.
The improved script now simply uses a boring, standard depth first
search to prepare the dense dependency graph for the simulation run.
After that step running simulations on the data is a piece of cake.
Overall the improved script now takes about 10 seconds.
Originally the script assumed an infinite number of build hosts ie
maximal parallelism. That’s a good method for visualizing the
bottlenecks. In reality the number of build hosts is limited though.
So I’ve added options to run the simulation with a fixed number of
build hosts and different algorithms to choose which package needs
to be built next. By using the script in a loop it’s even possible
to produce an animation:

The image shows the amount of blocked, scheduled and currently
building packages at each point in time
Source code is available at gitorious if you want to try it out yourself.
You need an account in the openSUSE build service as mkdiststats
uses osc to download dependency information.
openSUSE Community Question Time
I survived LinuxTag 2010
Sucky talk on the usual suspect. Better let some projects die.
Saw Matthias SuperStar Ettrich live. Yes, and QML rocks too.
Disappointed to see no hackers in OpenOffice booth.
Got introduced to lovely Jacqueline (German community lead).
Seen Szabgab's talk on Perl testing, didn't manage to say shalom to him.
Currywurst (the best in the world) with Oliver and Thomas.
Absolutely fantastic talk by Ivanka on how to make usability happen in Linux.
More talks, on how Microsoft and SAP care about open source.
Didn't quite enjoy the party (anti-social event).
Enlightened by AJ on why Berlin cycling lanes are red (it's all blood of the tourists).
Attended OOo usability workshop ...
... turned out to be " what's wrong with OOo community, oh and btw also with OOo interoperability" discussion.
Met Elizabeth and Talented Mr.Noack. Long chat about Rennaisance. Wish I could participate
Interview for Radio Tux. Must've been lousy companion.
Saw what has remained of Berlin Wall (wish for tearing down the wall between Israel and Palestine one day).
More fatigue. Waiting for the circle to close.
Hackweek V: osc bash completion
During last week , I was working on my Hackweek V project: bash completion for osc. It’s still far from being complete, but IMHO it is usable already, so here we go.
Download
The project is hosted on gitorious.org. To get the sources, use git:
git clone git://gitorious.org/opensuse/osc-bash-completion.git
Installation
You need working and configured osc. I have tested the completion with osc-0.126git, but it should more or less work with older/newer versions too. Naturally, your shell has to be bash (I used bash-4.x). The easiest way how to try the completion is simply to do
~> source osc.shThis will enable the completion for the given shell only – see README for more “persistent” ways how to enable the osc completion.
Features
The script provides support for completing:
- osc subcommand names (checkout, commit, …)
- global long osc options (e.g. –quiet, –debug, …)
- long subcommand options
- project names
- package names (in given project)
- file names (in given project/package)
- repository names (openSUSE_Factory, …)
- architectures (i586, x86_64, …)
- …
Some examples:
osc com<tab><tab> => osc commit
osc --ht<tab><tab> => osc --http-debug
osc build --a<tab><tab> => osc build --alternative-project
osc ls Ar<tab><tab> => osc ls Archiving
osc ls Base:System pa<tab><tab> => osc ls Base:System parted
osc cat Base:System parted ba<tab><tab> => osc cat Base:System parted baselibs.conf
osc buildlog openSUSE_<tab><tab> => osc buildlog openSUSE_
openSUSE_Factory openSUSE_11.0 openSUSE_11.1 openSUSE_11.2
osc buildlog openSUSE_Factory x<tab><tab> => osc buildlog openSUSE_Factory x86_64
osc createrequest -a<tab><tab> => osc createrequest -a
add_role delete change_devel set_bugowner submit
osc ? d<tab><tab> => osc ?
delete deleterequest dependson dif
osc meta a<tab><tab> => osc meta attribute
osc my <tab><tab> => osc my
pkg prj rq sr
osc request <tab><tab> => osc request
accept approvenew co decline checkout
list log revoke show wipe
osc getpac for<tab><tab> => osc gepac fortune
At the moment, the script DOES NOT provide support for completing
- short options
- arguments for most of the options
- some complex combinations of arguments
Caching
To avoid long delays and spamming OBS server too much, the script caches several information:
- list of projects in OBS
- list of packages in individual projects (only in those that have been accessed by osc)
- output of “osc repos prj” (dtto)
Please see the README file for more information about how the caching works and how to customize it (to make the completion significantly faster).
Known issues, TODO
- The script does not work correctly if there is a long option with argument and there is ‘=’ between the option and argument (–long-option=arg). Please use the ‘–long-option arg’ form instead.
- For the time being, the script does not recognize alternative apiurl (-A|–apiurl) and thus it works only with default (https://api.opensuse.org) api.
- Sourcing the script removes the colon from COMP_WORDBREAKS variable to make completion of Build Service projects easier. This was known to break e.g. git completion in the past (however, I didn’t notice any issues). In the future, the script should be fixed so that modifying of COMP_WORDBREAKS is not necessary.
- The script should dynamically create list of osc subcommands and lists of their options by parsing osc help output (or something similar). Now the lists and logic are hardcoded in the script, which will make it maintenance nightmare when osc changes.
- Completing of “osc {chroot,build}” is not yet implemented.
- See TODO file
Testing and feedback
The completion script is very new, tested only by me and mvyskocil for a while, so it definitely has a lot of bugs. Before releasing it as a separate package, I’d like to collect some feedback first (and fix the already known problems and TODOs), so, if you are interested, please give it a try and report any bugs, suggestions or patches directly to me (petr.uzel@suse.cz). Also, feel free to ping me on IRC: ptr_uzl @ freenode.net.
I hope at least somebody (except me
) will find the completion useful. Thanks and happy completing.
Hackweek V: Local caching for CIFS network file system
Hackweek
It’s that time of the year when SUSE/Novell developers use their Innovation Time-off to do a project of their interest/wish – called as Hackweek. Last week was Hackweek V. I worked on making the Common Internet File System (CIFS) cache aware, i.e. local caching for CIFS Network File System.
Linux FS-Cache
Caching can result in performance improvements in network filesystems where access to network and media is slow. The cache can indirectly improve performance of the network and the server by reduced network calls. Caching can be also viewed as a preparatory work for making disconnected operation (Offline) work with network filesystems.
The Linux Kernel recently added a generic caching facility (FS-Cache) that any network filesystem like NFS or CIFS or other service can use to cache data locally. FS-Cache supports a variety of cache backends i.e. different types of cache that have different trade-offs (like CacheFiles, CacheFS etc.) FS-Cache mediates between cache backends and the network filesystems. Some of the network filesystems such as NFS and AFS are already integrated with FS-Cache.
Making CIFS FS-Cache capable
To make any network filesystem FS-Cache aware, there are a few things to consider. Let’s consider them step by step (though not in detail):
* First, we need to define the network filesystem and it should be able to register/unregister with the FS-Cache interface.
* The network filesystem has to define the index hierarchy which could be used to locate a file object or discard a certain subset of all the files cached.
* We need to define the objects and the methods associated.
* All the indices in the index hierarchy and the data file need to be registered. This could be done by requesting a cookie for each index or data file. Upon successful registration, a corresponding cookie is returned.
* Functions to store and retrieve pages in the cache.
* Way to identify whether the cache for a file is valid or not.
* Function to release any in-memory representation for the network filesystem page.
* Way to invalidate a data file or index subtree and relinquish cookies.
Implementation
I wanted to get the prototype working within a week. So the way I have implemented it is rudimentary and has lot of room for improvement.
The index hierarchy is not very deep. It has three levels – Server, Share and Inode. The only way that I know of identifying files with CIFS is by ‘UniqueId’ which is supposed to be unique. However, some server do not ensure that the ‘UniqueId’ is always unique (for example when there is more than one filesystem in the exported share). The cache coherency is currently ensured by verifying the ‘LastWriteTime’ and size of the file. This is not a reliable way of detecting changes as some CIFS servers will not update the time until the filehandle is closed.
The rudimentary implementation is ready and the cumulative patch can be found here:
http://www.kernel.org/pub/linux/kernel/people/jays/patches/
[WARNING: The patch is lightly tested and of prototype quality.]
Here are some initial performance numbers with the patch:
Copying one big file of size ~150 MB.
$time cp /mnt/cifs/amuse.zip .
(Cache initialized)
real 1m18.603s
user 0m0.016s
sys 0m8.569s
$time cp /mnt/cifs/amuse.zip /
(Read from Cache)
real 0m28.055s
user 0m0.008s
sys 0m1.140s
Some wrap-up from LinuxTag
Just traveling back by train from LinuxTag, Berlin to Nürnberg. How was LinuxTag? In general it seems to me that LinuxTag may should change their motto “Were .com meets .org” as the event changed over the years more and more to an community project events with a few companies attending and a few business visitors passing by. I wonder who’s willing to pay the bill for LinuxTag ongoing? But that’s not of my business. Apart of the trade show the LinuxTag team served a pretty broad and high quality 4 days conference. For the community guys and girls I’d say it was a pretty good event with much conversation and meeting of people you normally just meet on mailingslists, forums or IRC and with a bunch of poeple new or intersted in Linux and open source.
We had big fun at the openSUSE booth showing mainly the openSUSE Build Service 2.0 and milestone 7 of openSUSE 11.3. Additional of this usual trade show program we served daily 3-4 small hack sessions on the booth to teach people in things like, Roll your first package in the Build Service, Insights into GNOME 3.0 or learning some Inkscape magic. They all were well attended and gave room for intensive 1:few conversations. The biggest fun we had with “Henne’s handicraft workshop” which took place daily at 5pm at the booth and covered stuff like creating your openSUSE bag, match LinuxNacht dress cody by wearing an openSUSE pin etc.
In the conference I visited a few presentation to get more knowledge about SUSE Studio, Mono, open sourc in companies etc. I visited as well Microsoft’s keynote and I was not alone in the room 
The keynote was given by James Utzschneider who’s heading the open source department at Microsoft since less then a year but is with Microsoft for over 15 years. He’s a good talker and it looks to me that he’s a smart guy as well. He was pretty clear on the open source strategy Microsoft is following:
- Microsoft changed heavily. Everything can be put on the table for disussion today but should be backed with good arguments.
- Customer are asking that Microsoft products work seamlessly with open source products where ever they are used at customers location. So, main goal here is to follow common standards and improve the interoperability in literally all areas to make the customers confident and stay with Microsoft products.
- Microsoft is a business company and is mainly driven through business cases – if the open source path is beneficial in $ for Microsoft – Microsoft will take it further down. Its pretty unlikely that things are done for the open source community just to make them happy.
We might get in touch with James as Microsoft could spice up the openSUSE conference in October. Ahh, with regards to that we informed pretty many other projects and developers at LinuxTag about the openSUSE conference and this years motto “Collaboration accross borders” and it was well received and we should be able to cover a number of interesting topics working together with communities other then the openSUSE one. Now it the time to shape the conference, call for papers is open till July 31.
Pavol put up a collection of photos which give a good summary of openSUSE @ LinuxTag 2010. We had fun at LinuxTag 2010, had many good conversations, got new valuable input in many areas and are keen on how LinuxTag evolves in the future.






