Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

Help needed: Translating Getting Started Guide to Czech (or Slovak)

Standa Horáček just posted information about a shared effort to translate the LibreOffice Getting Started Guide to Czech and Slovak Language. You can find more information also in the original post by Miloš Šrámek.

Why shared?

The Czech and Slovak languages are close enough for Google translate to do a very good job of translating one to the other. So you as a translator can choose if you work on the Czech or the Slovak version, and the other team will use the automatic translation. After that, they will just fix the parts where the machine translation failed, which will save a lot of work.

If you are interested, please help spreading the word. Or even better - help translating! :-)
a silhouette of a person's head and shoulders, used as a default avatar

a silhouette of a person's head and shoulders, used as a default avatar

Thank You!

Dear friends!

From the bottom of my heart I would like to thank you for your support during the past elections for The Document Foundation Board of Directors. Without you my election would be never possible and I never took it for granted. I am thankful for your trust. You cannot even immagine how happy and grateful I am for your support. Especially in a moment where my relationship with our project undergoes major changes.

I pray to be always up to the task to co-guide our project with wisdom and integrity.

I love you

Fridrich

a silhouette of a person's head and shoulders, used as a default avatar

Skype on openSUSE 13.1

I now have Skype working, more or less, on one machine with openSUSE 13.1. I used the instructions at the openSUSE Support Database. The important things to realize here are: (1) Skype does not work out-of-the-box in openSUSE 13.1, but (2) it may start "working" (in a manner of speaking), if you install the right packages and run the Skype binary in the right way.

Update


On another machine where Skype was running fine on openSUSE 12.3, it stopped working (predictably) after I upgraded the machine to 13.1 using zypper dup. I reinstalled Skype, but the behavior was different than on the machine mentioned above. Skype would run, but after successful login it would crash with the following:

*** Error in `/usr/lib/skype/skype': double free or corruption (!prev): 0xec14e1e0 ***
======= Backtrace: =========
/lib/libc.so.6(+0x6dfd3)[0xf29a5fd3]
/lib/libc.so.6(+0x7418a)[0xf29ac18a]
/lib/libc.so.6(+0x74dcc)[0xf29acdcc]
/usr/lib/skype/skype(+0xbfaeba)[0xf6863eba]
[0x61776574]
======= Memory map: ========
de1ff000-de200000 ---p 00000000 00:00 0
...
... on and on, page after page of similar lines
...

Adding MALLOC_CHECK_=0 to the Skype command-line was enough to get it to run. However, I was no longer able to "Allow Skype to automatically adjust my mixer levels", because it would automatically set the microphone level to 100%, causing lots of noise and distortion. So I had to uncheck this option and set my microphone level manually. Sigh.

Overall conclusion


Avoid using Skype under Linux, if at all possible.
the avatar of Jim Fehlig

libvirt support for Xen’s new libxenlight toolstack

I had the pleasure of meeting Russell Pavlicek, who shares Xen community management responsibilities with Lars Kurth, at SUSECon last November and he, along with Dario Faggioli of the Xen community, poked me about writing a blog post describing the state of Xen support in libvirt.  I found this to be an excellent idea and good reason to get off my butt and write!  Far too much time passes between my musings.

Xen has had a long history in libvirt.  In fact, it was the first hypervisor supported by libvirt.  I’ve witnessed an incredible evolution of libvirt over the years and now not only does it support managing many hypervisors such as Xen, KVM/QEMU, LXC, VirtualBox, hyper-v, ESX, etc., but it also supports managing a wide range of host subsystems used in a virtualized environment such as storage pools and volumes, networks, network interfaces, etc.  It has really become the swiss army knife of virtualization management on Linux, and Xen has been along for the entire ride.

libvirt supports multiple hypervisors via a hypervisor driver interface, which is defined in $libvirt_root/src/drvier.h – see struct _virDriver.  libvirt’s virDomain* APIs map to functions in the hypervisor driver interface, which are implemented by the various hypervisor drivers.  The drivers are located under $libvirt_root/src/<hypervisor-name>.  Typically, each driver has a $libvirt_root/src/<hypervisor-name>/<hypervisor-name>_driver.c file which defines a static instance of virDriver and fills in the functions it implements.  As an example, see the definition of libxlDriver in $libvirt_root/src/libxl/libxl_driver.c, the firsh few lines of which are

static virDriver libxlDriver = {
.no = VIR_DRV_LIBXL,
.name = “xenlight”,
.connectOpen = libxlConnectOpen, /* 0.9.0 */
.connectClose = libxlConnectClose, /* 0.9.0 */
.connectGetType = libxlConnectGetType, /* 0.9.0 */
….
}

The original Xen hypervisor driver is implemented using a variety of Xen tools: xend, xm, xenstore, and the hypervisor domctrl and sysctrl interfaces.  All of these “sub-drivers” are controlled by an “uber driver” known simply as the “xen driver”, which resides in $libvirt_root/src/xen/.  When an API in the hypervisor driver is called on a Xen system, e.g. virDomainCreateXML, it makes its way to the xen driver, which funnels the request to the most appropriate sub-driver.  In most cases, this is the xend sub-driver, although the other sub-drivers are used for some APIs.  And IIRC, there are a few APIs for which the xen driver will iterate over the sub-drivers until the function succeeds.  I like to refer to this xen driver, and its collection of sub-drivers, as the “legacy Xen driver”.  Due to its heavy reliance on xend, and xend’s deprecation in the Xen community, the legacy driver became just that – legacy.  With the introduction of libxenlight (aka libxl), libvirt needed a new driver for Xen.

In 2011 I had a bit of free time to work on a hypervisor driver for libxl, committing the initial driver in 2b84e445.  As mentioned above, this driver resides in $libvirt_root/src/libxl/.  Subsequent work by SUSE, Univention, Redhat, Citrix, Ubuntu, and other community contributors has resulted in a quite functional libvirt driver for the libxl toolstack.

The libxl driver only supports Xen >= 4.2.  The legacy Xen driver should be used on earlier versions of Xen, or installations where the xend toolstack is used.  In fact, if xend is running, the libxl driver won’t even load.  So if you want to use the libxl driver but have xend running, xend must be shutdown followed by a restart of libvirtd to load the libxl driver.  Note that if xend is not running, the legacy Xen driver will not load.

Currently, there are a few differences between the libxl driver and the legacy Xen driver.  First, the libxl driver is clueless about domains created by other libxl applications such as xl.  ‘virsh list’ will not show domains created with ‘xl create …’.  This is not the case with the legacy Xen driver, which is just a broker to xend.  Any domains managed by xend are also manageable with the legacy Xen driver.  Users of the legacy Xen driver in libvirt are probably well aware that ‘virsh list’ will show domains defined with ‘xm new …’ or created with ‘xm create …’, and might be a bit surprised to find this in not the case with the libxl driver.  But this could be addressed by implementing functionality similar to the ‘qemu-attach’ capability supported by the QEMU driver, which allows “importing” a QEMU instance created directly with e.g. ‘qemu -m 1024 -smp …’.  Contributions are warmly welcomed if this functionality is important to you :-).

A second difference between the libxl and legacy Xen drivers is related to the first one.  xend is the stateful service in the legacy stack, maintaining state of defined and running domains.  As a result, the legacy libvirt Xen driver is stateless, generally forwarding requests to xend and allowing xend to maintain state.  In the new stack, however, libxl is stateless.  Thererfore, the libvirt libxl driver itself must now maintain the state of all domains.  An interesting side affect of this is losing all your domains when upgrading from libvirt+xend to libvirt+libxl.  For a smooth upgrade, all running domains should be shutdown and their libvirt domXML configuration exported for post-upgrade import into the libvirt libxl driver.  For example, in psuedo-code

for each domain
virsh shutdown domain
virsh dumpxml > domain-name.xml
perform xend -> libxl upgrade
restart libvirtd
for each domain
virsh define domain-name.xml

It may also be possible to import xend managed domains after upgrading to libxl.  On most installations, the configuration of xend managed domains is stored in /var/lib/xend/domains/<dom-uuid>/config.sxp.  Since the legacy Xen driver already supports parsing SXP, this code could be used read any existing xend managed domains and import those into libvirt.  I will need to investigate the feasibility of this approach, and report any findings in a future blog post.

The last (known) difference between the drivers is the handling of domain0.  The legacy xen driver handles domain0 as any other domain.  The libxl driver currently treats domain0 as part of the host, thus e.g. it is not shown in ‘virsh list’.  This behavior is similar to the QEMU driver, but is not necessarily correct.  Afterall, domain0 is just another domain in Xen, which can have devices attached and detached, memory ballooned, etc., and should probably be handled as such by the libvirt libxl driver.  Contributions welcomed!

Otherwise, the libxl driver should behave the same as the legacy Xen driver, making xend to libxl upgrades quite painless, outside of the statefullness issue discussed above. Any other differences between the legacy Xen driver and the libxl driver are bugs – or missing features.  Afterall, the goal of libvirt is to insulate users from underlying churn in hypervisor-specific tools.

At the time of this writing, the important missing features in the libxl driver relative to the legacy Xen driver are PCI passthrough and migration.  Chunyan Liu has provided patches for both of these features, the first of which is close to committing upstream IMO

https://www.redhat.com/archives/libvir-list/2014-January/msg00400.html
https://www.redhat.com/archives/libvir-list/2013-September/msg00667.html

The libxl driver is also in need of improved parallelization.  Currently, long running operations such as create, save, restore, core dump, etc. lock the driver, blocking other operations, even those that simply get state.  I have some initial patches that introduce job support in the libxl driver, similar to the QEMU driver.  These patches allow classifying driver operations into jobs that modify state, and thus block any other operations on the domain, and jobs that can run concurrently.  Bamvor Jian Zhang is working on a patch series to make use of libxl’s asynchronous variants of these long running operations.  Together, these patch sets will greatly improve parallelism in the libxl driver, which is certainly important in for example cloud environments where many virtual machine instances can be started in parallel.

Beyond these sorely needed features and improvements, there is quite a bit of work required to reach feature parity with the QEMU driver, where it makes sense.  The hypervisor driver interface currently supports 193 functions, 186 of which are implemented in the QEMU driver.  By contrast, only 86 functions are implemented in the the libxl driver.  To be fair, quite a few of the unimplemented functions don’t apply to Xen and will never be implemented.  Nonetheless, for any enthusiastic volunteers, there is quite a bit of work to be done in the libvirt libxl driver.

Although I thoroughly enjoy working on libvirt and have healthy respect for the upstream community, my available time to work on upstream libvirt is limited.  Currently, I’m the primary maintainer of the Xen drivers, so my limited availability is a bottleneck.  Other libvirt maintainers review and commit Xen stuff, but their primary focus is on the rapid development of other hypervisor drivers and host subsystems.  I’m always looking for help in not only implementation of new features, but also reviewing and testing patches from other contributors.  If you are part of the greater Xen ecosystem, consider lending a hand with improving Xen support in libvirt!

a silhouette of a person's head and shoulders, used as a default avatar

A new idea for the openSUSE 'app store' that simplifies and builds on the basis of our existing technologies.

For a long time now there has been a great deal of buzz about potentially having a fully featured app store on +openSUSE . Whether it was Bretzn or porting the +Ubuntu Software Center, we certainly would like to have a more informative GUI for discovering and installing software. At present we do in fact have a halfway solution in our software.opensuse.org interface with it's direct install (formerly 'one-click') which is awesome, and certainly is one thing that makes my job easier when I bring new users from Windows.



However, there are a number of areas where this interface falls short. The most glaring can be that often the applications lack a description or have one so short as to be nearly useless. Another significant point is the lack of user reviews. Reviews help flesh out things that may be missed in a description, as well as provide tips at a glance on what the new user should expect. I believe reviews would be reasonably easy to implement in the current domain, and getting more robust descriptions should not be terribly difficult.

I think using our current technologies as a base, we could easily create a simple, elegant, and easy to maintain app store.

  • Add reviews, ratings, pictures, and robust descriptions to http://www.software.opensuse.org
  • Add a 'cart' to the domain, where a user could select multiple software packages for installation. To 'check out' with this cart would prompt the domain to generate a YMP with all the packages selected previously, installing all of them akin to our Multimedia One-Click.
  • Refine the search function to more easily search by descriptions or meta tags vs. the current search which works best for specific package names.
  • Create a small browser window (probably using QWebView) which would exclusively display the domain, and allow the download and opening of a YMP.
In this solution we create an interface that would be intuitive and user friendly to any new user, without having to make any changes to our package management stack or having to maintain especially complicated software. Also, since most of the 'app store' would be running on web standard technologies it would be highly maintainable considering the massive volume of developers who have web experience and knowledge.

Of course we can later add a number of social functions such as Facebook and Google+ integrations. We may also find it useful to tie in an authentication system tied in with the social desktop. But for core functions, this is not even remotely necessary.


a silhouette of a person's head and shoulders, used as a default avatar

LibreOffice 4.2: Better Windows bug reports

If you are not a programmer, and still want to help LibreOffice, there are many ways; one of them is submitting good bug reports. And a good bug report means a report with as much information as possible - one that contains the exact version, file(s) that caused the issue, description of the steps that lead to the problem.

In case LibreOffice crashes for you (sorry for that! - we are trying hard to avoid such situations, but it still may happen), and you are on Windows, description of the problem used to be all you were able to do - but now you can do more: you can attach a backtrace, and help the developers tremendously.

What is a backtrace? It is a log describing where exactly the program failed. It used to be very hard to get one on Windows, as you had to build your own LibreOffice.

Now it is much easier - you can provide such backtraces either using the official builds starting with LibreOffice 4.2.0rc1, or using the daily builds, without the need to build anything - you can just connect to a so called symbols server, and that's it.

Official releases

Just install LibreOffice 4.2.0rc1 (or later when available), and follow the information on the How to get a backtrace wiki page, it will lead you through the process. Thank you +Christian Lohmaier so much for setting that up!

Daily builds

I have updated my tinderbox to produce daily builds that are ready for debugging too. If you see a crash, it is worth checking if it happens in the most recent daily builds too - so installing this will allow you to check it, and directly provide a backtrace too.

Please try it out - I am looking forward to seeing backtraces in the your bugreports. In case you have trouble with the How to get a backtrace description, or the process itself, please let me know - or improve the page yourself; it is wiki, after all :-)

Oh, and all this wouldn't be possible without Luboš Luňák, +Fridrich Strba and others who have helped to connect various pieces together - thank you!

a silhouette of a person's head and shoulders, used as a default avatar

a silhouette of a person's head and shoulders, used as a default avatar

Perl development workflow

There is a Perl module that I have been developing. It is now finding its way onto CPAN and the openSUSE Build Service; the process of reaching that goal, however, was a bit tedious -- hence this blog entry which will describe the workflow so I won't have to reinvent the wheel each time I want to do this again.
Read more »

a silhouette of a person's head and shoulders, used as a default avatar

Moved my blog

Recently I decided to update my blog to something that will be less awkward than NanoBlogger I have been using until now. I mean, writing the entries in vim is great, running the nb script is easy, but the turnover to preview it, fix, run the script again etc. is just annoying.

Now I moved my old blog to holesovsky.blogspot.com, which will be much easier for me to handle. With some Perl scripting, I even converted all the old entries here, so that the old blog can really RIP.

Small note to the conversion

When you are using the blogger.com's Import XML feature, and it looks like the import is taking too long (minutes or so), the answer is simple: Your XML was not accepted by blogger.com. I have seen reports of people waiting several hours to import the blog.

Don't wait in such cases - it was just that an error occurred, and the UI has not reported that. Just try to find out what is in the XML that could have caused the import to get stuck - usual suspects are &'s instead of &quot; or OTOH things like &Acaron;, or other less common escapes.