Welcome to Planet openSUSE

This is a feed aggregator that collects what openSUSE contributors are writing in their respective blogs.

To have your blog added to this aggregator, please read the instructions.


Tuesday
26 August, 2014


face

This is a follow up to Pattern matching in Java, where I demonstrated pattern matching on type and structure using Java 8 features. The first thing most people asked is “does it support matching on nested structures?”

The previous approach did not, at least not without creating excessive boilerplate constructors. So here’s another approach that does.

Let’s suppose we have a nested structure representing a customer like this. Illustrated as a JavaScript object literal for clarity.

{
  firstName: "Benji",
  lastName: "Weber",
  address: {
    firstLine: {
      houseNumber: 123,
      roadName: "Some Street"
    },
    postCode: "AB123CD"
  }
}

What if we want to match customers with my name and pull out my house number, road name, and post code? With pattern matching it becomes straightforward.

First we’ll create Java types to represent it such that we can create the above representation like:

Customer customer = customer(
    "Benji", 
    "Weber", 
    address(
        firstLine(123,"Some Street"), 
        "AB123CD"
    )
);

I’ll use the value object pattern I described previously to create these.

Now we just need a way to build up a structure to match against, which retains the properties we want to extract for the pattern matching we previously implemented.

Here’s what we can do. We use underscores to indicate properties we wish to extract rather than match. All other properties are matched.

// Using the customer instance from above
String address = customer.match()
    .when(a(Customer::customer).matching(
        "Benji",
        "Weber",
        an(Address::address).matching(
            a(FirstLine::firstLine).matching(_,_),
            _
        )
    )).then((houseNo, road, postCode) -> houseNo + " " + road + " " + postCode)
    .otherwise("unknown");
 
assertEquals("123 Some Street AB123CD", address);

So how does it work? Well we get the .match() method by implementing the Case interface on our value types. This interface has a default method match which returns a match builder which we can use to specify our cases.

Last time we implemented overloads to the when(..) method such that we could match on types or instances. Now we can re-use that work and add overloads that take a Match reference. e.g.

public <A,B> BiMatchConstructorBuilder<T, A, B> when(BiMatch<T, A, B> matchRef) {
// Here we can know we are matching for missing properties of types A and B
// So we can expect a function to consume these properties that accepts an A and B
    return new BiMatchConstructorBuilder<T, A, B>() {
        public <R> MatchBuilderR<T, R> then(BiFunction<A, B, R> f) {
            // ...
        }
    };
}

The matchRef can capture method references to the properties we want to extract, and then we can apply these method references to the object we are matching against to check for a match.

Lastly we simply add a couple of static methods: a(constructor) and an(constructor) for building up our matches, which return a builder that accepts either the constructor arguments, or a wildcard underscore to indicate we want to match and extract that value.

Here are some more examples to help illustrate the idea


face

In my last multirotor themed entry I gave an insight into the magical world of flying cameras. I also gave a bit of a promise to write about the open source flight controllers that are out there. Here’s a few that I had the luck laying my hands on. We’ll start with some acro FCs, with a very differt purpose to the proprietary NAZA I started on. These are meant for fast and acrobatic flying, not for flying your expensive cameras on a stabilized gimbal. Keep in mind, I’m still fairly inexperienced so I don’t want to go into specifics and provide my settings just yet.

Blackout: Potsdam from jimmac on Vimeo.

CC3D

The best thing to be said about CC3D is that while being aimed at acro pilots, it’s relatively newbie friendly. The software is fairly straight forward. Getting the QT app built, set up the radio, tune motors and tweak gains is not going to make your eyes roll in the same way APM’s ground station would (more on that in a future post, maybe). The defaults are reasonable and help you achieve a maiden flight rather than a maiden crash. Updating to the latest firmware over the air is seamless.

Large number of receivers and connection methods is supported. Not only the classic PWM, or the more reasonable “one cable” CPPM method, but even Futaba proprietary SBUS can be used with CC3D. I’ve flown it with Futaba 8J, 14SG and even the Phantom radio (I actually quite like the compact receiver and the sticks on the TX feel good. Maybe it’s just that it’s something I’ve started on). As you’re gonna be flying proximity mostly, the range is not an issue, unless you’re dealing with external interference where a more robust frequency hopping radio would be safer. Without a GPS “break” or even a barometer, losing signal for even a second is fatal. It’s extremely nasty to get a perfect 5.8 video of your unresponsive quad plumetting to the ground :)

Overall a great board and software, and with so much competition, the board price has come down considerably recently. You can get non-genuine boards for around EUR20-25 on ebay. You can learn more about CC3D on openpilot website

Naze32

Sounding very similar to the popular DJI flight controller, this open board is built around the 32-bit STM32 processor. Theoretically it could be used to fly a bit larger kites with features like GPS hold. You’re not limited to the popular quad or hexa setups with it either, you can go really custom with defining your own motor mix. But you’d be stepping in the realm of only a few and I don’t think I’d trust my camera equipment to a platform that hasn’t been so extensively tested.

Initially I didn’t manage to get the cheap acro variant ideal for the minis, so I got the ‘bells & whistles


face

I’m pleased to announce a short update for youtube_dlhelper.

What’s happened?

  • Updated bundle dependency of multi-json to newest version 1.8.4
  • Cleanup
  • Structured the terminal output

face

I’m pleased to announce a new 1.19.0 package of calibre for openSUSE. Whats happend in this version?

New features

  • Edit book: A new tool to insert special characters into the text, available via Edit->Insert special character. Supports all unicode characters (over 60,000 of them). See http://manual.calibre-ebook.com/edit.html#inserting-special-characters
  • Edit book: When searching for text in the editor, center the found text on screen
  • Driver for teXet TB-146SE.
  • Edit book: Show tooltips in the File Browser for ‘special’ files, such as the cover, opf, ncx, etc.
  • Edit book: When checking book, check for entries in the OPF whose mimetype does not match the file extension.

Bug fixes

  • Edit book: Fix marking a file as titlepage not working if the opf does not contain a section.
  • Edit book: Fix errors when working on HTML files that parse as valid XML, but do not have the correct XHTML namespace.
  • Fix typing non-English characters using an input method (key composing) in the author/tags/etc fields in the metadata dialog not working.
  • Edit book: Fix error when merging html files that include a currently opened file and a non-html file is also open
  • Fix unnecessary error popup during shutdown if the wireless device driver is running and mdns de-registration fails.
  • Add L´ and D´ as recognized articles when automatically computing sort strings for French.
  • Edit book: Fix changing mimetypes in the opf file not being detected when closing the opf file or running any automated tool like Check Book

Downloading

You can find the latest version in the Documentation:Tools Repository. As example for openSUSE 13.1: http://download.opensuse.org/repositories/Documentation:/Tools/openSUSE_13.1/ .

Bugreports

You can send Bugreports for the calibre package to the Novell Bugzilla

Donations

Donations for the packager are everytime welcome. Just click on: Donate


face

I’m pleased to announce a new 1.18.0 package of calibre for openSUSE. Whats happend in this version?

New features

  • Add an option to control how completion works when editing authors/tags/series/etc.
  • Edit book: Add a check for too large HTML files when running the check book tool.
  • Conversion: Sort the CSS rules in the output stylesheet using a ‘natural’ sort algorithm, so that calibre2 sorts before calibre10.
  • Cybook Orizon driver: Upload cover thumbnails in the correct format and add an option to control what directory books are sent to on the SD card
  • Portable installer: Do not ask the user for confirmation when upgrading an existing installation during an automated install
  • Linux/OS X driver for Trekstor Pyrus LED
  • Driver for Tagus Lux

Bug fixes

  • MOBI Output: When text indent is specified as a percentage in the input document, prevent the generated MOBI from having too large an indent if the user chooses a large output profile like tablet.
  • Edit book: Fix live replacement of entities not working on some non-US keyboard layouts.
  • Fix titlecasing of words not capitalizing the first letter, if the first letter is not an English character.
  • Edit book: Ensure that multiple edit book windows are grouped in a separate group from viewer windows in the Windows 7 taskbar. Also change the icon color to blue to more easily distinguish it from the viewer icon
  • Edit book: Fix a bug in the regex engine that calibre uses that could cause various incorrect results in some special circumstances.
  • Edit book: Replace buggy Qt supplied actions in the context menu for the editor widget with properly implemented ones
  • Book list: Fix sorting on fields that are not viewable as columns not being restored on calibre restart. Also fix sorting on the Title field via the right click menu not being restored.
  • Windows 64bit build: Fix corrupted images in MOBI files causing crash.
  • Edit book: Prettify html in newly created books.
  • AZW3 Input: Handle azw3 files that contain some empty individual HTML files
  • Comic Input: Fix a regression to comic input in 1.15 that could cause some comics to be rendered as black or white pages.

Downloading

You can find the latest version in the Documentation:Tools Repository. As example for openSUSE 13.1: http://download.opensuse.org/repositories/Documentation:/Tools/openSUSE_13.1/ .

Bugreports

You can send Bugreports for the calibre package to the Novell Bugzilla

Donations

Donations for the packager are everytime welcome. Just click on: Donate


face

I’m pleased to announce a new 1.17.0 package of calibre for openSUSE. Whats happend in this version?

New features

  • Merry Christmas everyone! Early release this week, as I will be travelling.
  • Edit book: Allow drag and drop of images onto the image editor
  • Edit book: Allow import of multiple files at once, via File->Import files into book
  • Edit book: Show the name of the current character to the left of the cursor in the status bar. Can be turned off via Preferences.
  • Edit book: Automatically replace HTML entities as they are typed. This can be turned off in the Preferences.
  • ToC Editor: Allow bulk renaming of items. Simply select the items you want to rename, right click and choose bulk rename. Useful if, for instance, you want to rename all the items to be Chapter 1, Chapter 2 and so on.
  • Edit book: Allow linking of stylesheets into HTML files automatically. Right click on the selected HTML files in the File browser and choose ‘Link stylesheets’ to have the tags for the sheets automatically inserted.
  • Edit book: When deleting files, automatically remove all entries that refer to them from the ToC

Bug fixes

  • ToC Editor: When auto-generating the table of contents from headings or XPath, if an element is at the top of the file, link only to the file instead of to the element.
  • Edit book: When splitting files, name the newly created file with a ‘_split suffix’.
  • Edit book: Fix position syncing incorrect when in HTML files that contain tags with charset encoding declarations over more than a single line
  • Edit book: Automatic correction of font family names not quoting family names with spaces in them if the original, incorrect family name did not have a space.
  • Title casing: Fix presence of some non-English characters or smart punctuation causing all-caps text to not be properly titlecased
  • Edit book: Fix a bug preventing marking an image as cover in a book that previously had no cover
  • Edit book: Fix a typo causing the preferences for which windows occupy which corners to not work
  • Edit book: Fix crash that happens sometimes when deleting multiple files.
  • Edit book: Handle EPUB files which contain opf files with no tags
  • Edit book: Fix deleting a file that is currently open in an editor, not auto-closing the editor
  • DOCX Input: Fix error when converting DOCX file that contains only image based links and no text based links.

Downloading

You can find the latest version in the Documentation:Tools Repository. As example for openSUSE 13.1: http://download.opensuse.org/repositories/Documentation:/Tools/openSUSE_13.1/ .

Bugreports

You can send Bugreports for the calibre package to the Novell Bugzilla

Donations

Donations are everytime welcome. Just click on: Donate


face

A new gem

A new gem has started in the world. Youtube_helper is not just another Youtube gem. It’s the helper gem. What it does? The Youtube_dlhelper gem downloads a youtube video from a defined space, creates the needed directories and transcodes the filde from *.m4a to *.mp3. Read the full README for using the gem.

Where is it?

You can find it there: https://github.com/saigkill/youtube_dlhelper (It goes directly to the README).

Ho to use?

Just run it with: youtube_dlhelper.rb YourUrl The new file is shown inside your $Musicfolder/Groupname/Youtube-Music or if you have choosen a Interpret it goes to $Musicfolder/Surname_Firstname/Youtube-Videos.

Have a lot of fun :-)


Sascha Manns: Welcome

05:00 UTCmember

face

Welcome

Hello and welcome to my new Jekyll Bootstrap Page. Because of some Bandwidth problems i moved my blog out to Github.


Sascha Manns: Jekyll Introduction

05:00 UTCmember

face

This Jekyll introduction will outline specifically what Jekyll is and why you would want to use it. Directly following the intro we’ll learn exactly how Jekyll does what it does.

Overview

What is Jekyll?

Jekyll is a parsing engine bundled as a ruby gem used to build static websites from dynamic components such as templates, partials, liquid code, markdown, etc. Jekyll is known as “a simple, blog aware, static site generator”.

Examples

This website is created with Jekyll. Other Jekyll websites.

What does Jekyll Do?

Jekyll is a ruby gem you install on your local system. Once there you can call jekyll --server on a directory and provided that directory is setup in a way jekyll expects, it will do magic stuff like parse markdown/textile files, compute categories, tags, permalinks, and construct your pages from layout templates and partials.

Once parsed, Jekyll stores the result in a self-contained static _site folder. The intention here is that you can serve all contents in this folder statically from a plain static web-server.

You can think of Jekyll as a normalish dynamic blog but rather than parsing content, templates, and tags on each request, Jekyll does this once beforehand and caches the entire website in a folder for serving statically.

Jekyll is Not Blogging Software

Jekyll is a parsing engine.

Jekyll does not come with any content nor does it have any templates or design elements. This is a common source of confusion when getting started. Jekyll does not come with anything you actually use or see on your website - you have to make it.

Why Should I Care?

Jekyll is very minimalistic and very efficient. The most important thing to realize about Jekyll is that it creates a static representation of your website requiring only a static web-server. Traditional dynamic blogs like Wordpress require a database and server-side code. Heavily trafficked dynamic blogs must employ a caching layer that ultimately performs the same job Jekyll sets out to do; serve static content.

Therefore if you like to keep things simple and you prefer the command-line over an admin panel UI then give Jekyll a try.

Developers like Jekyll because we can write content like we write code:

  • Ability to write content in markdown or textile in your favorite text-editor.
  • Ability to write and preview your content via localhost.
  • No internet connection required.
  • Ability to publish via git.
  • Ability to host your blog on a static web-server.
  • Ability to host freely on GitHub Pages.
  • No database required.

How Jekyll Works

The following is a complete but concise outline of exactly how Jekyll works.

Be aware that core concepts are introduced in rapid succession without code examples. This information is not intended to specifically teach you how to do anything, rather it is intended to give you the full picture relative to what is going on in Jekyll-world.

Learning these core concepts should help you avoid common frustrations and ultimately help you better understand the code examples contained throughout Jekyll-Bootstrap.

Initial Setup


Monday
25 August, 2014


face

This is a big thank you, a thank you to all the people who made the Randa Meeting 2014 possible, the people who invested their time and their energy to go there and work on free software, and the people who made donations to support this.

Tons of things happened at Randa this year. Among other things there was lot of porting work to KDE Frameworks 5 done on kdevplatform, KMyMoney, Gwenview, KMix, Artikulate, and Kig. KDevelop got QML and Javascript support, the API docs got some love, Phonon 4.8 Beta was released, KStars tools got polishing, Kdenlive got a roadmap, and the first alpha of the Inqlude tool was released. We wrote a book, and made a movie:


It can't be overestimated what kind of magic place Mario created at Randa. It is such a focused and supportive environment, that it's hard to not be productive. It generates a sense of community which reaches way beyond the meeting itself, and fuels so much of future work. I have written about what makes this special spirit. But I suspect that the real secret is that Mario runs us on Swiss cheese and chocolate for a week.

So thanks again to the donors, to the sponsors, to the people who wrote code, or text, or took photos, or brought their kids, or organized, or simply provided happiness, or helped in any other way. It was an awesome event.


face

As it has taken an extra ordinary amount of time for LSB to move forward a predicament has developed for many distributions, including openSUSE. Many of the requirements for LSB 4.1 can no longer be met and thus while the lsb package still builds it is not installable, see . The technically correct solution would be to drop the lsb package from the distribution, Factory now and thus 13.2 when it is released) as we can no longer be LSB compliant. However, the negative side effect is that some applications we do not and cannot package will no longer install, probably most notably google-chrome. Thus, having no lsb package, or no package that provides “lsb”, is a problem and has negative effects on many users. Therefore, the only way forward is to have an “lsb” package which provides LSB on a best effort basis.

Since LSB 4.1 and previous releases is a monolithic requirement, i.e. if you depend on lsb you depend/get everything that is in the standard, whether you want it or not, it is very likely that many applications depend on lsb while needing only a subset of the features. Thus, while we do not know all of those applications and cannot provide a list of “this will work and that will not“, there is a good chance that many external packages depending on lsb will not only install, but the payload they deliver will work with an lsb best effort approach. For those applications that are broken there is pretty much nothing we can do, sorry.

At a meeting last week at LinuxCon NA the goal was set to have LSB 5.0 released by the end of October. LSB 5.0 is incompatible with LSB 4.1 and prior releases. Thus, even if we provide an lsb 5.0 compliant package in short order after LSB 5.0 is released we still have the same risk as we do with the best effort approach. Basically some application packages that depend on “lsb” will deliver a payload that is broken. Exactly the opposite of what the LSB is trying to achieve, but hey one cannot hang on to Qt3 forever. Therefore, our “lsb best effort” approach to cover the gap does not create any additional pain.

Moving forward the LSB working group decided that the current approach, while providing value, has significant drawbacks. Predominantly there are not enough fingers on the keyboard to continue releases of such extensive “accepted standard” documentation. This is what we presently experience with the non installable lsb package. A for the LSB is being worked out. As this next/new LSB develops we will have to see how application providers deal with this. Without a formal LSB specification in the future, this problem will recur in a few years if application packages depend on a package named “lsb” which at some point may need to seize to exist. We will see how this plays out as the world we create keeps evolving.


face
randa-mascot

Konqi Randa Mascot

2 Weeks ago myself and Françoise had joined the [http://www.randa-meetings.ch/ Randa Meeting] in Switzerland.

This event is a full hack-week where between around fifty people, that help to change the world, met together and hack around [http://www.kde.org KDE Community] related stuff. More on
KDE sprint page

I’ve heard about Randa from years, and had seen numerous reports about how Randa hack-week has allowed lots of changes : Plasma, Software collection, etc…

This year, we decided not only to financially sponsor the event, but also be part of as simple helper, with the status of newcomers in the KDE community contributors. Just to check how it goes.
Mario Fux (the organizer) didn’t fake his involvement to make this week a success, in a full open source spirit.



We’re reporting below a number of blog post that have been made during the hackweek.
And as the icing on the cake, you could just watch the video realized during the week.

videomaker

Where’s the Geeko at Randa?

I was proud to see number of people wearing openSUSE t-shirt, using openSUSE on their computer.
Mario still has a number of old 11.4 t-shirts to spread. I’ve also given a very limited number of new usb key.

Interesting enough to note that the big marketing effort done years ago, is still used.
Yeah I’m looking at you dear big openSUSE’s Sponsor :-)

car

Geeko’s car at Randa 2014


Packed in the Geeko’s car, which was highly complimented, we brought my laptop, a new "MacBroken pro 13.1 retina" with OSX & live usb Frameworks5, the camera and also a camcorder. While I was helping a bit for creating the new Frameworks5 book, proposing a cover for it in collaboration with people in the visual group forum.
Françoise made a lot of pictures, participate to the book’s direction and target brainstorm. Then she met Lucie.

Lucie is a professional Video-maker, working with kdenlive. The temptation to do something with the camcorder, Lucie’s competencies, and all the attendee was high enough to start a new spontaneous “PRESS” team :-)

Thank you!

Once again, we would like to give a special hug to Mario Fux, for his enthusiasm, and kindness. Yes Mario, it will be an honor to be part of Randa Verein, to help you to achieve more next year.
Also we send our warmest thanks to all participants. You were all impressive about your friendly welcome, your guidance, the work you achieved.

Conclusion, we’ll be there next year!
Shouldn’t we, openSUSE Community, model this success for our Free Future?

Picture collections about the meeting

* Vijay Dhameliya on Panoramio
* Bruno Friedmann on Google+ Sat Sun
* Bruno Friedmann on G+ Monday
* Bruno Friedmann on G+ Tuesday
* Bruno Friedman post about Randa Meeting 2014 video

Blogs

* Mirko Boehm (25 Aug 2014): How to contribute to the KDE FrameworksCookbook
* Valorie Zimmerman (23 Aug 2014): Counting the days until Akademy!
* Călin


face
An update on my talk submission for the OpenStack summit this year in Paris: my speech about Ceph performance analysis was not chosen by the committee for the official agenda. 

But at least one piece of good news: Marc's talk will be part of the OpenStack QA track.

Monday
18 August, 2014


Jos Poortvliet: How else to help out

12:09 UTCmember

face
Yesterday I blogged about how to help testing. Today, let me share how you can facilitate development in other ways. First of all - you can enable testers!

Help testers

As I mentioned, openSUSE moved to a rolling release of Factory to facilitate testing. KDE software has development snapshots for a few distributions. ownCloud is actually looking for some help with packaging - if you're interested, ping dragotin or danimo on the owncloud-client-dev IRC channel on freenode (web interface for IRC here). Thanks to everybody helping developers with this!

KDE developers hacking in the mountains of Switzerland

Coding

Of course, there is code. Almost all projects I know have developer documentation. ownCloud has the developer manual and the KDE community is writing nothing less than a book about writing software for KDE!

Of course - if you want to get into coding ownCloud, you can join us at the ownCloud Contributor Conference in in two weeks in Berlin and KDE has Akademy coming just two weeks later!

And more

Not everybody has the skills to integrate zsync in ownCloud to make it only upload changes to files or to juggle complicated API's in search for better performance in Plasma but there is plenty more you can do. Here is a KDE call for promo help as well as KDE's generic get involved page. ownCloud also features a list of what you can do to help and so does openSUSE.

Or donate...

If you don't have the time to help, there is still something: donate to support development. KDE has a page asking for donations and spends the donations mostly on organizing developer events. For example, right now, planet KDE is full of posts about Randa. Your donation makes a difference!

You can support ownCloud feature development on bountysource, where you can even put money on a specific feature you want. This provides no guarantees - a feature can easily cost tens to hundreds of hours to implement, so multiple people will have to support a feature. But your support can help a developer spend time on this feature instead of working for a client and still be able to put food on the table at home.

So, there are plenty of ways in which you can help to get the features and improvements you want. Open Source software might be available for free, but its development still costs resources - and without your help, it won't happen.

face

I’ve been talking about how code construction is necessary to your coding project. With Javascript obfuscation or making code shine is more important than ever. There will be many many eyes looking at your code and see if it’s worth of nothing. After getting friend with js-beautify there ain’t no excuse to keep you ugly looking code laying around.

js-beautify

Js-beautify lives as (like last time JSHint tool) as a web service. If you just want to drop you Javascript code to http://jsbeautifier.org/ and see is this tools working go ahead. You can also use site to find your code guidelines parameters because you can test instantly how parameters looks like. Js-beautify github repository can be found https://github.com/beautify-web/js-beautify

How does it work?

Like last time we torture leaflet 0.7.2 minified code. It’s pain to make it look good with hand (and why one should there is good looking source available without touching minified version) with this king of example one can see how this tool really works. After installation with npm-tool or from my personal repo https://build.opensuse.org/project/show/home:illuusio:nodejs-fedora you have tool called js-beautify in you path. Running it is simple as this

js-beautify leaflet.js

after typing command one sees code outputted to STDOUT more readable form. So one can only get this like code style? No you can customize it until the bitter end of you life. If you like more K&R style formatting you can get one with:

js-beautify --brace-style=expand --indent-size=4 -f leaflet.js

Ok one have remember command line parameters every time.. nice. Actually not. There can be JSON formatted config file and defaults are like this: https://github.com/beautify-web/js-beautify/blob/master/js/config/defaults.json so using command line like this you can use your own defaults.

js-beautify --config=yourjsonconfig.json leaflet.js

Wait it’s not over yet!

With this tool there is also possibility to format CSS and HTML. You can use same js-beautify tool or short cuts css-beautify or html-beautify. These are nice tools to format HTML or CSS. There is also Python version of Js-beautify available but it’s not in focus of this post. It have same capabilities than Node.js version. So if you have read this and you code still look like dog have eat your home work then it’s your own fault. Now we have make code looking very good next time i’ll make it ugly..


Sunday
17 August, 2014


Cornelius Schumacher: The Book

21:02 UTCmember

face

When inviting to the Randa 2014 meeting, Mario had the idea to write a book about KDE Frameworks. Valorie picked up this idea and kicked off a small team to tackle the task. So in the middle of August, Valorie, Rohan, Mirko, Bruno, and me gathered in a small room under the roof of the Randa house and started to ponder how to accomplish writing a book in the week of the meeting. Three days later and with the help of many others, Valorie showed around the first version of the book on her Kindle at breakfast. Mission accomplished.


Mission accomplished is a bit of an exaggeration, as you might have suspected. While we had a first version of the book, of course there still is a lot to be added, more content, more structure, more beautiful appearance. But we had quickly settled on the idea that the book shouldn't be a one-time effort, but an on-going project, which grows over time, and is continuously updated as the Frameworks develop, and people find the time and energy to contribute content.

So in addition to writing initial content we spend our thoughts and work on setting up an infrastructure, which will support a sustained effort to develop and maintain the book. While there will come more, having the book on the Kindle to show it around indeed was the first part of our mission accomplished.

Content-wise we decided to target beginning and mildly experienced Qt developers, and present the book in some form of cook book, with sections about how to solve specific problems, for example writing file archives, storing configuration, spell-checking, concurrent execution of tasks, or starting to write a new application.



There already is a lot of good content in our API documentation and on techbase.kde.org, so the book is more a remix of existing documentation spiced with a bit of new content to keep the pieces together or to adapt it to the changes between kdelibs 4 and Frameworks 5.

The book lives in a git repository. We will move it to a more official location a bit later. It's a combination of articles written in markdown and compiling code, from which snippets are dragged into the text as examples. A little bit of tooling around pandoc gives us the toolchain and infrastructure to generate the book without much effort. We actually intend to automatically generate current versions with our continuous integration system, whenever something changes.

While some content now is in the book git repository, we intend to maintain the examples and their documentation as close to the Frameworks they describe. So most of the text and code is supposed to live in the same repositories where the code is maintained as well. They are aggregated in the book repository via git submodules.

Comments and contributions are very welcome. If you are maintaining one of the Frameworks or you are otherwise familiar with them, please don't hesitate to let us know, send


face

Back on line after several weeks in late, I’ve tried from my best to resolve the case of Factory rolling releases.

After some hacks on the latest Sebastian Siebert beta version (Made in June), I’ve been able to build now BETA fglrx rpm for several openSUSE version.

one day AMD will release or not a stable version. (On my side I prefer to see more efforts made on the free radeon driver.)

Notice

This release concern only owners of radeon HD5xxx or above. All owner of HD2xx and HD4xx are really encouraged to use the free radeon driver (which received a lot of improvement in 3.11+ kernels)

This is experimental & BETA software, it could fix issues you encountered (FGLRX not working for openSUSE 13.1),

What happen to Sebastian

I would like to have some news about Sebastian Siebert, he’s a essential key for future updates.
This time I was able (even with several weeks in late) to adjust the script to create a build for openSUSE Factory.
But one day something will broke in kernel or somewhere else, and we all need to find a way to fix it.

So if you’re in touch with Sebastian, could you drop me a comment or a private mail?

I would like to continue the good support we created 3.5 years ago, or at least knowning if I’m orphan :-(

Beta Repository

To make things clear about the status of the drivers, it will not be published under the normal stable repository http://geeko.ioda.net/mirror/amd-fglrx.
I’ve created some times ago a beta repository located at http://geeko.ioda.net/mirror/amd-fglrx-beta.
The FGLRX 14.20 beta1 rpm are released for openSUSE version 12.3, 13.1 (+Tumbleweed), Factory

Signer of package my generic builder gpg key at Ioda-Net. (gpg key id 65BE584C)

For those interested by contributing or patches done to last Sebastian version, the raw-src on the server contain all the material used
http://geeko.ioda.net/mirror/amd-fglrx-beta/raw-src.

Installing the new repository

Admitting you’ve the normal repository named FGLRX, (use zypper lr -d to find the number or name you give it). You have to start by disabling it
so you could fallback to it quickly when new stable version will be published. Open a root console or add sudo at your convenience and issue the following command:

zypper mr -dR FGLRX

amd-fglrx-beta

To add another repository in the same console as root issue the following command which will install normally the right repository for your distribution

zypper ar -n FGLRX-BETA -cgf http://geeko.ioda.net/mirror/amd-fglrx-beta/openSUSE_`lsb-release -r | awk '{print $2}'` FGLRX-BETA

If you are using Tumbleweed use this one

zypper ar -n FGLRX-BETA -cgf http://geeko.ioda.net/mirror/amd-fglrx-beta/openSUSE_Tumbleweed FGLRX-BETA

Now the update/upgrade process

zypper dup -r FGLRX-BETA

Let the system upgrade the package, and try to enjoy the new beta.

Upgrading from the previous beta

Let the magic of zypper


face

A few weeks ago, during SUSE Hack Week 10 and the Berlin Qt Dev Days 2013, I started to look for Qt-based libraries, set myself the goal of creating one place to collect all Qt-based libraries, and made some good progress. We had come up with this idea when a couple of KDE people came together in the Swiss mountains for some intensive hacking, and where the idea of Inqlude, the Qt library archive was born. We were thinking of something like CPAN for Qt back then. Since then there was a little bit of progress here and there, but my goal for the Hack Week was to complete the data to cover all relevant Qt-based libraries out there.


The mission is accomplished so far. Thanks to the help of lots of people who contributed pointers, meta data, feedback, and help, we have a pretty comprehensive list of Qt libraries now. Some nuts and bolts are still missing in the infrastructure, which are required to put everything on the web site, and I'm sure we'll discover some hidden gems of Qt libraries later, but what is there is useful and up to date. If some pieces are not yet, contributions are more than welcome.

Many thanks as well to the people at the Qt Dev Days, who gave me the opportunity to present the project to the awesome audience of the Qt user and developer community.

Format


The first key component of the project is the format for describing a Qt-based library. It's a JSON format, which is quite straightforward. That makes it easy to be handled programmatically by tools and other software, but is also still quite friendly to the human eye and a text editor.


The schema describes the meta data of a library and its releases, like name, description, release date and version, links to documentation and packages, etc. The data for Inqlude is centrally collected in a git repository using this schema, and the tools and the web site make use of it to provide nice and easy access to users.

Tools


The second key component is the tooling around the format. The big advantage of having a structured format to describe the data is that it makes it easy to write tools to deal with the data. We have a command line client, which currently is mostly used to validate and process the data, for example for generation of the web site, but is also meant to help users with installing and downloading libraries. It's not meant to replace a native package manager, but integrate with whatever your platform provides. This area needs some more work, though.


In the future it would be nice to have some more tools. I would like to see a graphical client for managing libraries, and integration with IDEs, such as Qt Creator or KDevelop would also be awesome.

Web site


The third key component is the web site. This is the central place for users


face

Three years ago, at Randa 2011, the idea and first implementation of Inqlude, the Qt library archive, was born. So I'm particularly happy today to announce the first alpha release of the Inqlude tool, live from Randa 2014.

Picture by Bruno Friedmann

I use the tool for creating the web site since quite a while and it works nicely for that. It also can create and check manifest files, which is handy when you are creating or updating these for publication on the web site.

The handling of download and installation of packages of libraries listed on Inqlude is not ready yet. There is some basic implementation, but the meta data needed for it, is not there yet. This is something for a future release.

I put down the plan for the future into a roadmap. This release 0.7 is the first alpha. The second alpha 0.8 will mostly come with some more documentation about how to contribute. Then there will be a beta 0.9, which marks the point where we will keep the schema for the manifest stable. Release 1.0 will then be the point where the Inqlude tool will come with support for managing local packages, so that it's useful for developers writing Qt applications as end users. This plan is not set in stone, but it should provide a good starting point. Longer term I intend to have frequent releases to address the needs reported by users.

You will here more in my lightning talk Everything Qt at Akademy.

Inqlude is one part of the story to make the libraries created by the KDE community more accessible to Qt developers. With the recent first stable release of Frameworks 5, we have made a huge step towards that goal, and we just released the first update. A lot of porting of applications is going on here at the meeting, and we are having discussion about various other aspects how to get there, such as a KDE SDK, how to address 3rd party developers, documentation of frameworks, and more. This will continue to be an interesting ride.


Friday
15 August, 2014


face

#1: openSUSE Factory Rolling Release Distribution

Over the course of the last several months a lot of changes were made to the development process for openSUSE Factory. Meaning it’s no longer a highly experimental testing dump, but it’s now a viable rolling release distribution in its own right. You can read all about the details here. I installed openSUSE Factory in a virtual machine yesterday and it seems to run pretty great. Of course to really judge a rolling release distribution you need to run it for a sustained period of time.

No rolling release distribution will ever be my preferred day-to-day operating system, but nevertheless I’m pretty excited about the “new” openSUSE Factory. I think the changes will enable version whores and bleeding edge explorers to finally have a truly symbiotic relationship with the users who value productivity and predictability in their PC operating system.

installer2

#2: KDE Frameworks 5 and Plasma 5

Since I was already testing openSUSE Factory it was a great opportunity to finally get my feet wet with the new KDE Frameworks 5 and Qt5 based KDE Plasma 5 workspace, initially released about a month ago. Obviously it’s still lacking some features and polish, but it’s already usable for forgiving users who know what they’re doing and showing great promise.

plasma52

#3: 4G on the Jolla

My provider enabled 4G on my subscription and offered to send me a new SIM Card gratis. So now my Jolla is sporting 4G. Unfortunately it only took about 5-10 minutes of speed testing (peaking at 12 MB/s, averaging about 10 MB/s) to use all my available bandwidth for the month, so for the rest of August I’ve been speed dropped to 64 Kbps, but hey, it’s still 4G!

20140807112741

#4: Richard Stallman presenting with a slideshow

Who’d have ever thought they’d see the day that Stallman would do a presentation with accompanying slides? Well it happened, and I think this great use of slides helps him communicate more effectively. Watch the video and judge for yourselves (27 MB, 13 minutes).

shot0001



face

Motivations


Creating high quality contents takes time. A lot of people write nowadays but very few are writers. In the software industry, most of those who write very well are in the marketing side not on the technical side.

The impact of high quality contents is very high over time. Engineers and other profiles related with technology tend to underestimate this fact. When approaching the creation of contents, their first reaction is to think about the effort that takes, not the impact. Marketers have exactly on the opposite view. They tend to focus in the short term impact.

Successful organizations have something in common. They focus a lot of effort and energy in reporting efficiently across the entire organization, not just vertically but horizontally, not just internally but also externally. Knowing what other around you are doing, their goals, motivations and progress is as important as communicating results

One of the sentences that I do not stop repeating is that a good team gets further than a bunch of rock stars. I think that a collective approach to content creation provides better results in general, in the mid term, than individual ones. Specially if we consider how mainstream Free Software has become. There are so many people doing incredible things out there, it is becoming so hard to get attention....

Technology is everywhere. Everybody is interested on it. We all understand that it has a significant impact in our lives and it will have even more in the future. That doesn't mean everybody understands it. For many of us, that work in the software industry, speaking an understandable language for wider audiences do not comes naturally or simply by practising. It requires learning/training.

Very often is not enough to create something outstanding once in a while to be widely recognized. The dark work counts as much as the one that shines. The hows and whys are relevant. Reputation is not in direct relation with popularity and short term successes. Being recognized for your work is an everyday task, a mid term achievement. The good thing about reputation is that once you achieve it,  the impact of your following actions multiplies.

We need to remember that code is meant to die, to disappear, to be replaced by better code, faster code, simpler code. A lot of the work we do ends nowhere. Both facts, that are not restricted to software, mean That doesn't mean that creating that code or project was not worth it. Creating good content, helps increasing the life time of our work, specially if we do not restrict them to results.

All the above are some of the motivations that drives me to promote the creation of a team blog wherever I work. Sometimes I succeed and sometimes not, obviously.

What is a team blog for me? 

  • It is a team effort. Each post should be led by a person, an author, but created by the team.
  • It focuses on what the team/group do

Thursday
14 August, 2014


face

Because it is still reported that the ownCloud Client has an increasing memory footprint when running for long time I am trying to monitor the QObject tree of the client. Valgrind does not report any memory problems with it so my suspicion was that somewhere QObjects are created with valid parent pointers referencing a long living object. These objects might accumulate unexpectedly over time and waste memory.

So I tried to investigate the app with Qt Inspector of Robert Knight. That’s a great tool, but it does not yet completely do what I need because it only shows QWidget based objects. But Robert was kind enough to put me on the right track, thanks a lot for that!

I tried this naive approach:

In the clients main.cpp, I implemented these both callback functions:

 QSet<QObject*> mObjects;

 extern "C" Q_DECL_EXPORT void qt_addObject(QObject *obj)
 {
    mObjects.insert(obj);
 }

 extern "C" Q_DECL_EXPORT void qt_removeObject(QObject *obj)
 {
    mObjects.remove(obj);
 }

Qt calls these callbacks whenever a QObject is created or deleted respectively. When the object is created I add it’s pointer to the QSet mObjects, and if it is deleted, it is removed from the QSet. My idea was that after the QApp::exec() call returns, I would have to see which QObjects are still in the mObjects QSet. After a longer run of the client, I hoped to see an artificial amount of objects being left over.

Well, what should I say… No success so far: After first tests, it seems that the amount of left-over objects is pretty constant. Also, I don’t see any objects that I would not kind of expect.

So this little experiment left more questions than answer: Is the suspicion correct that QObjects with a valid parent pointer can cause the memory growth? Is my test code as I did it so far able to detect that at all? Is it correct to do the analysis after the app.exec() call returned?

If you have any hints for me, please let me know! How would you tackle the problem?

Thanks!

This is the link to my modified main.cpp:

https://github.com/owncloud/mirall/blob/qobject_monitor/src/main.cpp



face

In the past 4 months during this years Google Summer of Code (GSoC), a global program that offers student developers stipends to write code for open source software projects, Christian Bruckmayer collaborated with other students and mentors to code a dashboard for the Open Source Event Manager (OSEM). In this series of posts Christian will tell you about his project and what he has learned from this experience.

Google Summer of Code 2014 Logo

Christian BruckmayerHey there, Christian here again. This is my last post in a series about my GSoC project. I have already explained the two big features I have implemented: The dashboard and Conference Goals & Campaigns. I hope you enjoyed those articles, if you haven’t read them I recommend you head over and do so. Today I would like to tell you about the most important part of GSoC for me personally: What I have learned during this summer!

The Open Source Way

Open Retrospective I can really say that I gained much experience, both technically and personally, during GSoC. Working together, the open source way, was a great experience. It goes like this: I discuss a feature with the OSEM team in GitHub issues, then I start to implement the feature and send a Pull Request to our Repository. The mentors then review my code and tell me their suggestions to improve it. After I have worked in the suggestions the progress starts again.

This feedback helped me a lot. We discussed code smells, bad design decisions or a wrong assumptions, right there, next to the code on github. And as four eyes see more than two, this process assured that only good code get’s into repository!

Working together, but self-driven

On the one hand it was awesome to work together with experienced and very skilled developers. The constructive criticism that I got for my work helped me a lot to get better every day, and it still does. But on the other hand I was responsible for my own project. It was a challenge because no one would tell me when I had to work, no one gave me a step by step list. I had to learn to organize the work myself somehow. Being a child of self-employed parents was a big advantage for me in GSoC, as I have a basic understanding of prioritization, scheduling my day and being self-dependent. Still, working together with the other students and mentors, but self-driven was something I learned this summer.

Test Driven Development

Another nice thing I got to know was test driven development. During previous student jobs I already programmed software tests but only after other developers implemented the features. In my GSoC project I got to think about the tests first and then I started to implement the feature. Implementing something this way around, tests first, you are forced to think about the design decisions. ‘Does it belong to the model or to the controller?’ or ‘How can I split this up to make it easier testable?’ are questions I


face

Heya geekos!

We love the fact that the openSUSE News section is being generally well-adopted and well read. But, we’d like to do more, and do better! And for that, we need your input. Don’t worry, we won’t demand any 10000 characters super-articles (for now :P), but what we would like from you is to fill out a little survey. It’s very very very short, as we don’t want it to be too time consuming, but we would like to know if, generally speaking, we’re heading in the right direction. Or in a wrong one. Any way, it would be nice to know what the openSUSE news readers think about its content, so we can make it better. There’s nothing we’d like more than to bring you additional enjoyment while you’re drinking your morning coffee and clicking through your favorite news sites!

So, what we politely ask you to do is drop everything, and click here to fill out the survey. It’s short and shouldn’t take more than a minute or two of your time, but it would help us a great deal.

The survey will be open until the 31st of August. We’ll post the results in the first days of September right here at openSUSE News. And there will be a graph included:

statistics geeko inside

There shall be a fancy graph!

This is just the first step in the news team’s interaction with its geeko reader base. Needless to say the survey is anonymous. Also, I’d like to ask you if you could share this survey through your social networks or with other readers, so we can get the most representative possible input.

Thanks again for helping us out, and remember to…

 

…have a lot of fun!

Wednesday
13 August, 2014


face
Short answer: because you should.

When somebody asks about their missing pet feature in KDE or ownCloud software, I always trow in a request for help in the answer. Software development is hard work and these features don't appear out of nowhere. There are only so many hours in a day to work on the a million things we all agree are important. There are many ways to help out and speed things up a little. In this blog I'd like to highlight testing because I see developers spend a lot of time testing their own software - and that is not as good as it sounds.

Developers also do testing!

You see, developers really want their software to be good. So when a Alpha or Release Candidate does not receive much testing from users, the developers take it on themselves to test it.

Developers testing software has two downsides:
  • Developers tend to test the things they wrote the software to do. It might sound obvious, but usually the things that break are things the developer didn't think off: "you have 51,000 songs? Oh, I never tested the music app with more than 4,000" is what I heard just yesterday.
  • And of course, it should be obvious: early and lots of testing speeds up development so you get those features you want!
Take two lessons from this:
  • If you want things to work for you, YOU have to test it.
  • If you want those other features, too, helping out is the name of the game.

It isn't hard

In the past I wrote an extensive article on how to test for KDE and ownCloud, too, has real nice testing documentation.

If you want to get on it now, Klaas Freitag just released ownCloud client 1.7 alpha 1 and openSUSE has moved factory to a rolling release process to make it easy to help test. KDE Applications 4.14 is at the third beta and the Release Candidate is around the corner.

Your testing doesn't just save time: it is inspiring and fun. For everybody involved. For added kicks, consider joining us at the ownCloud Contributor Conference in in two weeks in Berlin and KDE has Akademy coming just two weeks later!

Help make sure we can get our features done in time - help test and contribute your creativity and thoughts!


note: I'm not argueing here against testing by developers, rather that users should help out more! Of course, developers should make sure their code works and unit tests and automated testing are great tools for that. But I believe nothing can replace proper end-user testing in real-life environments and that can only really be properly done by end users.


face

openSUSE, despite the vastness of the www stating it’s primarily a KDE distro, prides itself in offering a one stop shop for your operating system needs, regardless of your desktop environment preferences. And it’s true. For a couple of months, I’ve been running openSUSE GNOME exclusively on my laptop. And it worked like a charm. But there was one problem.

Whichever system I’m running, I absolutely must have a wallpaper slideshow complementing my desktop theme preferences. That way, I ensure my desktop is fresh and attractive to look at every time I close a window. But, as already stated, there was a problem. The wallpaper slideshow from extensions.gnome.org didn’t seem to work for me and kept on crashing. So I had to find an alternative. How? While search engines can be a good friend, I decided to ask on the forums, to get a first-hand experience. As always,  the kind geekos on the green side of the fence looked into the issue, found a solution and helped a brother out. I’ve been offered a solution, and it’s called Variety.

There was a problem in using Variety on openSUSE – the packages didn’t exist. So, naturally, malcolmlewis stepped in and packaged Variety for us to use!

How to install Variety?

Malcolm created a one-click install for this fantastic wallpaper changer. You can get it here. But, before installing, make sure to install python pillow, as it’s a dependency. You can get it here.

So what’s so special about Variety?

Along with the obvious function, which is changing wallpapers, it’s how it changes them, what really matters. You can add a local pictures folder, or, if you don’t feel like it, you can let Variety download wallpapers directly from the internet from different sources (flickr, wallbase etc.). To learn more about the app’s preferences, check out this video made by a Linux Mint user.

Variety

Do you have any experience with Variety or would maybe like to suggest a wallpaper slideshow app? Join us in the comments! And until then, remember to…

…have a lot of fun!

Tuesday
12 August, 2014


face

Yo yo, geekos! Here we are, for the final chapter of our CLT hangout. Today, we’ll be talking about job control through which we’ll learn how to control processes running on our computer!

An Example

As we have learned, we can run programs directly from the CLI by simply typing the name of the program. For example, dolphin. If we type:

dolphin

…dolphin, the file manager, opens. If you look at the terminal while this process is opened, you can not access the command prompt and you can not write a new command inside the same window. If you terminate dolphin, the prompt reappears and you can type a new command into the shell. Now, how can we run a program from CLI, while also having our prompt available for further command issuing.

dolphin &

…and you have your dolphin file manager running in background, with the terminal free to type another command you need.

Now imagine you forgot to type the ‘&’ character after dolphin. Simply type ‘ctrl+z’, which will stop your process and put it in idle. To resume the stopped process, type:

bg

…which will restart the process from the background.

jobs, ps

Now that we have processes running in the background, you can list them either using jobs, or using ps. Try it. Just type jobs, or type ps. Here’s what I get:

nenad@linux-zr04:~> ps
PID TTY          TIME CMD
8356 pts/1    00:00:00 bash
8401 pts/1    00:00:00 dolphin
8406 pts/1    00:00:00 kbuildsycoca4
8456 pts/1    00:00:00 ps

 

Kill a Process

How do you get rid of a process if it’s become unresponsive? By using the kill command. Let’s try it out on our previously mentioned dolphin process. First, we have to identify the PID of the process by using ps. In my aforementioned case it’s 8401 for dolphin. So to kill it, I simply type:

kill 8401

…and it kills off dolphin.

More About Kill

Kill doesn’t exist only for terminating processes, but it was originally designed to send signals to processes. And of course, there are a number of kill signals you can use, which can be different in regard to the application you use. See the table below:

killDo try them out.

Conclusion

With this lesson, we conclude our CLT series and our tuesday hanging out. I hope that other n00bs like me managed to demistify the console in their minds and learn the basics. Now all that’s left is for you to play around (just don’t mess around the / directory too much so you don’t bork something :D).

We’ll be seeing a lot more of each other soon, as there’s more series of articles from where these came from. Stay tuned, and meanwhile…

 

…have a lot of fun!

face

BuwgqPdCQAAlDvOSo some more bits have arrived for #FrankenPi First up, we have the Samsung Multi Charging Cable for Galaxy S5. It’s basically a USB cable but with three Micro USB ends. This will allow me to power three Pi’s from one source rather than three power bricks, as it’ s a cable the ‘juice’ output will be whatever you chuck down it.

Bu083PGCUAACJ4_Also the Plugable USB 2.0 7 Port Hub and BC 1.2 Fast Charger with 60 Watt Power Adapter arrived this morning.  It was not originally my intention to power the Pi’s off the Hub, that is until I came across this piece of kit. Now a few people have questioned the power output which tbh is all Voodoo to me however the tec specs say the following: The supplied power adapter delivers 10A of available current across all USB ports which leaves us 500mA short (7 * 1.5A = 10.5A). I read that to mean “The more you plug in the less juice” unless it’s managed in some way so that each port only gets 1.5A? At the end of the day the Hub was going to be for the Pi’s to communicate with a 2.5 external drive anyway.

flattr this!


face

Dan Collins “That’s a nerd ménage à trois!”

flattr this!


Sunday
10 August, 2014


face
I few weeks ago I announced I was joining Linaro. I work there as Director of Core Development Group. I moved from Prague to Cambridge (the original), that is, from continental to oceanic climate. From dry, cold in winter and hot in summer to wet, soft in summer and above zero most of the winter. In theory an improvement, you might think. Well, depending on much it rains. I will tell you better in spring.

A few days ago The Mukt published and interview where I explained a little what is Linaro and what do I do as Core Development Director. 

Core Development Group


I can add that Linaro is an engineering focused organization, divided in Engineering Groups. Some of them, like the one I am part of, are formed by several engineering teams, some of them called Working Groups. Core Development is formed by four:

 You can find more details in the Core Development wiki page, at Linaro Wiki.

These first few weeks I have gone through the natural landing process, meeting my colleagues and managers, knowing how we operate, learning about my responsibilities, the work engineers are doing, the plans for the future, analysing our internal processes, etc. Nothing unusual in these cases.

In July I had the opportunity to attend to the Linaro Kernel and Power Management Sprint, hosted by one of our Members, ST, in Le Mans. It was a very interesting week.

Linaro Connect


My following event will be Linaro Connect, in San Francisco, USA, in September. Linaro Connect are the events where all the Linaro employees meet. Those of you who are familiar with the Ubuntu Developer Summit knows what I am talking about. Linaro Connect takes place twice a year in a different continent and it is also an opportunity to have a direct contact with our Members.

Factory as a rolling release: openSUSE development version

A few days ago it was announced that Factory moved to a rolling release model. So the first step of the 2014/2016 plan has been completed. I was very happy to see that the openSUSE team could lead the execution of this relevant step for the distro in time. The Development version of openSUSE is now a reality that not just can increase the overall number of contributors, but also bring significant innovation to SUSE Linux Enterprise integration process. Congratulations. I am very proud of being part of the team. I will always be.

I would like to specially congratulate Roland Haidl, the Director of Communities at SUSE. The most important (and hardest) thing you can get from a manager is trust, and the openSUSE team had it from him to build a good team, support the changes the team went through back in 2012 (tough times), stand strong behind the new strategy defined in 2013 and support the team during the design and execution of this first milestone. And he did this without making noise, letting the results speak. A

Older blog entries ->