Developer Conference - day 2
Feb. 22nd, 2012 | 03:43 pm
Lukáš Czerner had a one of the best talk here. Benefits of btrfs are a scalability more than 16EiB (ext4 can reach 16TB). It should be possible to do a very fast file system checking, incremental backups and snapshots. It should be easy add/remove drives or add subvolumes. The main deficiencies at the moment are: fsync (not fully functional), virtualization is quite slow and also encryption is not implemented. It sounds to me like not ready as default for Fedora, but it might be good choice in the future.

Later that day presented Edward "Joe" Thornber and Zdeněk Kabeláč Thin provisioning and snapshots in device mapper. Joe showed the theoretical part of thin provisioning and Kabi showed how does it work in few easy commands. Lvm commands are often seen as too complex and hard to use by an average user, but the howto showed it doesn't have to be true.
Bryn Reeves had his second talk - How to lose data and implicate people, which was the best talk from the whole conference.
He made a summary of common scenarios how to lose data. His presentation skills are awesome, so better look on the video, but the most funniest quotes were:

Don't forget to vote for your favourites.
Later that day presented Edward "Joe" Thornber and Zdeněk Kabeláč Thin provisioning and snapshots in device mapper. Joe showed the theoretical part of thin provisioning and Kabi showed how does it work in few easy commands. Lvm commands are often seen as too complex and hard to use by an average user, but the howto showed it doesn't have to be true.
Bryn Reeves had his second talk - How to lose data and implicate people, which was the best talk from the whole conference.
He made a summary of common scenarios how to lose data. His presentation skills are awesome, so better look on the video, but the most funniest quotes were:
- How long is an ohnosecond? Elapsed time between making a catastrophic error and realising what happened.
- Backups? We've heard of them...
Don't forget to vote for your favourites.
Link | Leave a comment | Add to Memories | Share
Developer Conference - day 1
Feb. 21st, 2012 | 01:53 pm
Radovan started the event with a short speech and also announced the Open House in Red Hat Brno office on April 4th as the next Red Hat related event.

František Řezníček from MRG (Messaging, Realtime, Grid) spoke after him. His talk was called Towards Unified Messaging, where he presented their work, mentioned protocols used in their project - qpid and amqp. He shortly explained the asynchronous messaging and how the cooperation works between server and users.
Bryn Reeves from support of storage had a lovely talk called - Supporting the Open Source Enterprise. He mentioned few examples from his area of work, but it's probably the same for all open source projects. Problems with support of a project in various branches, support of older releases, which are unsupported by upstream and so on. What has changed in last few years are tools. Git made things easier, but there are also other tools worth looking at like OpenGrok or cscope.
Jan Hutař presented "Software Robot Competition around the world". He made an overview of different competitions in different disciplines and showed the most funniest videos. For my colleagues was important the Red Bot competition based on FIbot, where he announced the winner of the internal competition. Jan promissed the best videos from the Red Bot on youtube.
Stanislav Kozina spoke about What can Linux learn from others. I felt that this talk was about how cool is Solaris, namely zfs and dtrace. I heard many times praise of both and they probably have many cool features. But I would prefer a comparison of programs or what are the deficiencies of these two. I guess drawbacks are everywhere.
Phil Knirsch made an overview of rpm and yum. I assume they spent a lot of time on looking into "yum is so slow" issues and aimed their work on the most irritating bugs. According to their research is rpm+yum only 4x slower than untar, so it's very good because rpm+yum are doing installation and scriptlets, SElinux, depsolving and many more. Some projects claimed to be faster, but in that case they are "cheating", because they are skipping some work. The most important future plan is using libsolv by SUSE as the depsolver. On the top of depsolver will be a new project, which will merge rpm+yum functionality into one tool, which will be introduced in Fedora 18.
Jarda Škarvada presented news from the Power Management. He announced the test day, where anyone can bring his/her own laptop into Red Hat Brno office for measurement or do the testing at home. They introduced new release of tuned 2.0, which have new profiles for power saving. He proposed a little controversial change to stop desktop application to run their flash/javascript/whatever during their minimalization. It would require patching for all Desktop Environments.
Harald Hoyer and Kai Sievers presented their new look on FHS called - A streamlined and fully compatible Linux Filesystem Hierarchy. IMHO it's another change for a change, which will probably create more problems for Fedora maintainers. I'm not quite sure what this change should bring to the user or the developer. Audience was arguing and they were arguing with Harald and Kai. We spoke afterwards, but I can't say I'm convinced...
František Řezníček from MRG (Messaging, Realtime, Grid) spoke after him. His talk was called Towards Unified Messaging, where he presented their work, mentioned protocols used in their project - qpid and amqp. He shortly explained the asynchronous messaging and how the cooperation works between server and users.
Bryn Reeves from support of storage had a lovely talk called - Supporting the Open Source Enterprise. He mentioned few examples from his area of work, but it's probably the same for all open source projects. Problems with support of a project in various branches, support of older releases, which are unsupported by upstream and so on. What has changed in last few years are tools. Git made things easier, but there are also other tools worth looking at like OpenGrok or cscope.
Jan Hutař presented "Software Robot Competition around the world". He made an overview of different competitions in different disciplines and showed the most funniest videos. For my colleagues was important the Red Bot competition based on FIbot, where he announced the winner of the internal competition. Jan promissed the best videos from the Red Bot on youtube.
Stanislav Kozina spoke about What can Linux learn from others. I felt that this talk was about how cool is Solaris, namely zfs and dtrace. I heard many times praise of both and they probably have many cool features. But I would prefer a comparison of programs or what are the deficiencies of these two. I guess drawbacks are everywhere.
Phil Knirsch made an overview of rpm and yum. I assume they spent a lot of time on looking into "yum is so slow" issues and aimed their work on the most irritating bugs. According to their research is rpm+yum only 4x slower than untar, so it's very good because rpm+yum are doing installation and scriptlets, SElinux, depsolving and many more. Some projects claimed to be faster, but in that case they are "cheating", because they are skipping some work. The most important future plan is using libsolv by SUSE as the depsolver. On the top of depsolver will be a new project, which will merge rpm+yum functionality into one tool, which will be introduced in Fedora 18.
Jarda Škarvada presented news from the Power Management. He announced the test day, where anyone can bring his/her own laptop into Red Hat Brno office for measurement or do the testing at home. They introduced new release of tuned 2.0, which have new profiles for power saving. He proposed a little controversial change to stop desktop application to run their flash/javascript/whatever during their minimalization. It would require patching for all Desktop Environments.
Harald Hoyer and Kai Sievers presented their new look on FHS called - A streamlined and fully compatible Linux Filesystem Hierarchy. IMHO it's another change for a change, which will probably create more problems for Fedora maintainers. I'm not quite sure what this change should bring to the user or the developer. Audience was arguing and they were arguing with Harald and Kai. We spoke afterwards, but I can't say I'm convinced...
Link | Leave a comment | Add to Memories | Share
ruby 1.9.3 in EL-6 branch
Jan. 16th, 2012 | 03:28 pm
The Ruby repository contains ruby-1.9.3, rails-3.0.10, and group of essential gems. Everything from collection can be installed by: yum install stack_rails_3.0 Now, when the collection is installed, the rails version can be verified.
stack enable rails_3.0 'rails -v' As mentioned above, the only difference between running commands inside and outside stack is using the stack command. If you want run your own rails3 application, then you simply install the Ruby stack. In the directory, where is located your application run:
stack enable rails_3.0 'rails new app_name' Now you can develop in this directory, but everything must be executed within the stack environment. For running rails server you can use the command: stack enable rails_3.0 'rails server' But you can also run a new shell: 2/ stack enable rails_3.0 bash where the Stack Ruby will override the system Ruby. In the new shell will be used the Ruby from Stack, but also all gems and everything, what is provided by this software collection.
Link | Leave a comment | Add to Memories | Share
Dynamic Software Collections
Jan. 12th, 2012 | 09:00 am
Collections should provide new or old version of software packaged in rpm. Imagine you have for example EL-6 and you want use new features from Perl 5.14.x. Update of system Perl is not possible, because it would bring changes incompatible with other system packages. Or you have application running on Ruby 1.8.x and in Fedora 17 will be Ruby 1.9. Collections are groups of packages, which are using different paths for installation, so those packages shouldn't influence the system environment. It should be possible work with both versions. The system one is linked to application like vim or netsnmp and the collection package could be executed in his own shell and used only there.
Currently, there are prepared few repositories of Ruby and one repository of Perl for testing purposes.
As the maintainer of Perl I'll show all examples on perl 5.14.2, which is prepared for EL-6.
How does it work:
* install scl-utils. This package will provide macros, which are needed for running software collection. The scl-utils-build package is needed only as build requirement.
* pick a collection, in this case Perl. yum install perl514* Perl collection includes upstream tar ball, DBI, FCGI.
The installed version can be verified by:
scl enable perl514 'perl -V'
Setting SElinux rules should be easy by using same contexts on new directories:
semanage fcontext -a -e /usr /opt/rh/perl514/
restorecon -R -v /opt/rh/perl514/
If you run new session, you can use there new version only:
scl enable perl514 bash
For example execute perl -V, which shows information about your Perl. Let's look at paths specific for this collection:
@INC:
/opt/rh/perl514/root/usr/local/lib64/per l5
/opt/rh/perl514/root/usr/local/share/per l5
/opt/rh/perl514/root/usr/lib64/perl5/ven dor_perl
/opt/rh/perl514/root/usr/share/perl5/ven dor_perl
/opt/rh/perl514/root/usr/lib64/perl5
/opt/rh/perl514/root/usr/share/perl5
.
Ruby collection is using rails_3.0 instead of perl514 in path. They started creating their collection sooner than me, so they are using old macros. For working with their ruby stack, you need install macros and enable the repository for Fedora or EL-6.
yum install stack_rails_3.0 should install whole Ruby stack and stack enable rails_3.0 'rails -v' should verify the path.
Update: Next article should be about the functional installation of Ruby 1.9.x on EL-6.
Currently, there are prepared few repositories of Ruby and one repository of Perl for testing purposes.
As the maintainer of Perl I'll show all examples on perl 5.14.2, which is prepared for EL-6.
How does it work:
* install scl-utils. This package will provide macros, which are needed for running software collection. The scl-utils-build package is needed only as build requirement.
* pick a collection, in this case Perl. yum install perl514* Perl collection includes upstream tar ball, DBI, FCGI.
The installed version can be verified by:
scl enable perl514 'perl -V'
Setting SElinux rules should be easy by using same contexts on new directories:
semanage fcontext -a -e /usr /opt/rh/perl514/
restorecon -R -v /opt/rh/perl514/
If you run new session, you can use there new version only:
scl enable perl514 bash
For example execute perl -V, which shows information about your Perl. Let's look at paths specific for this collection:
@INC:
/opt/rh/perl514/root/usr/local/lib64/per
/opt/rh/perl514/root/usr/local/share/per
/opt/rh/perl514/root/usr/lib64/perl5/ven
/opt/rh/perl514/root/usr/share/perl5/ven
/opt/rh/perl514/root/usr/lib64/perl5
/opt/rh/perl514/root/usr/share/perl5
.
yum install stack_rails_3.0 should install whole Ruby stack and stack enable rails_3.0 'rails -v' should verify the path.
Update: Next article should be about the functional installation of Ruby 1.9.x on EL-6.
Link | Leave a comment | Add to Memories | Share
Fedora elections
Jun. 4th, 2011 | 09:32 pm
Did you know that Fedora elections already started? End of voting is 8th June for FESCo and 9th for Board. Don't forget to vote for your favourites!

Link | Leave a comment | Add to Memories | Share
Howto create RPM filters
Jun. 3rd, 2011 | 08:54 pm
Rpm 4.9 brought change of macros. They do not have much documentation, but I was able to create something with help of rpm guys. Thanks.
Now you can define and use your own generator of dependency, which could be handy if your packages have specific needs. New macros have only extended regular expressions, not Perl regular expressions :(
1. create filter for your favourite package:
/etc/rpm/macros.myfavourite
2. define your own generator
%global __favourite_provides /usr/lib/rpm/favourite.prov
%global __favourite_requires /home/user/favourite_inprocess.req
3. filter *.so, which don't have to be provided
%favourite_default_filter %{expand: \
%global __provides_exclude_from %{_share}/favourite/.*\.so|%{_sbindir}/. *\.so
}
4. change it to filter *.so and also unwanted require MyPage
%favourite_default_filter %{expand: \
%global __provides_exclude_from %{_share}/favourite/.*\.so|%{_sbindir}/. *\.so
%global __requires_exclude favourite\\\\(MyPage\\\\)
}
5. use it in your favourite package before prep
%description
This is favourite package..
%{?favourite_default_filter}
%prep
6. Provides and requires added manually before prep section are not filtered, because they are added after filtering.
And example for perl-DBI package. In case there is more provides to be filtered, it's getting uglier.
# filter provides, which you don't want in all Perl packages
%perl_default_filter
# don't overwrite exclusion of provides, just add another
%global __provides_exclude %{?__provides_exclude}|perl\\(DBI\\)
%global __requires_exclude %{?__requires_exclude}|perl\\(RPC::
Now you can define and use your own generator of dependency, which could be handy if your packages have specific needs. New macros have only extended regular expressions, not Perl regular expressions :(
1. create filter for your favourite package:
/etc/rpm/macros.myfavourite
2. define your own generator
%global __favourite_provides /usr/lib/rpm/favourite.prov
%global __favourite_requires /home/user/favourite_inprocess.req
3. filter *.so, which don't have to be provided
%favourite_default_filter %{expand: \
%global __provides_exclude_from %{_share}/favourite/.*\.so|%{_sbindir}/.
}
4. change it to filter *.so and also unwanted require MyPage
%favourite_default_filter %{expand: \
%global __provides_exclude_from %{_share}/favourite/.*\.so|%{_sbindir}/.
%global __requires_exclude favourite\\\\(MyPage\\\\)
}
5. use it in your favourite package before prep
%description
This is favourite package..
%{?favourite_default_filter}
%prep
6. Provides and requires added manually before prep section are not filtered, because they are added after filtering.
And example for perl-DBI package. In case there is more provides to be filtered, it's getting uglier.
# filter provides, which you don't want in all Perl packages
%perl_default_filter
# don't overwrite exclusion of provides, just add another
%global __provides_exclude %{?__provides_exclude}|perl\\(DBI\\)
%global __requires_exclude %{?__requires_exclude}|perl\\(RPC::
Link | Leave a comment | Add to Memories | Share
Perl is used everywhere and 5.14 is out
Mar. 31st, 2011 | 08:13 pm
Probably, not only I have to answer again and again that Perl is life and widely used. Gabor Szabo had nice idea to make a social net, where are stored list of Perl products, companies and employers. At the moment there is growing list of companies using Perl. I was very happy to hear that even CERN is using Perl to manage their grids, and not only them. There is also list of applications, which are written in Perl, web-pages like www.imdb.com or BBC and frameworks like Catalyst, Dancer, and many more.
New Perl 5.14 was released few weeks ago and I'd like to bring it as a feature into F-16. Hopefully, this time will be possible to do rebuild of all Perl related packages in more automatic way and the whole process will take less time. So, for Perl in F-16 we are preparing:
* better generating of provides and requires by external generator
* using new rpm macros, which works since rpm4.9 and there will be in updated guidelines
* and script for automatic rebuilds based on dependencies
New Perl 5.14 was released few weeks ago and I'd like to bring it as a feature into F-16. Hopefully, this time will be possible to do rebuild of all Perl related packages in more automatic way and the whole process will take less time. So, for Perl in F-16 we are preparing:
* better generating of provides and requires by external generator
* using new rpm macros, which works since rpm4.9 and there will be in updated guidelines
* and script for automatic rebuilds based on dependencies
Link | Leave a comment | Add to Memories | Share
systemd in Fedora
Dec. 3rd, 2010 | 02:18 pm
Lennart's systemd doesn't replace only sysvinit/upstart, but also make chkconfig redundant if sysvinit rc scripts are thrown away and only systemd units are used.
There is the systemd packaging guideline draft, which suggest use only systemctl command which can set up correct units symlinks.
But what should be done with chkconfig, which is used for upstart/sysvinit is still not known. I'm running my rawhide machine with upstart, so I rewrote cronie scriptlets with both options for the mean time. Other possibility would be to:
# scriptlets in cronie
%post
/sbin/chkconfig --add crond
# systemd
/bin/systemctl enable crond.service >/dev/null 2>&1 || :
%preun
if [ "$1" = "0" ]; then
service crond stop >/dev/null 2>&1 ||:
/sbin/chkconfig --del crond
# systemd
/bin/systemctl disable crond.service >/dev/null 2>&1 || :
/bin/systemctl stop crond.service > /dev/null 2>&1 || :
fi
%postun
if [ "$1" -ge "1" ]; then
service crond condrestart > /dev/null 2>&1 ||:
# systemd
/bin/systemctl try-restart crond.service >/dev/null 2>&1 || :
fi
Another interesting change is that some (suggested) deamons runs in foreground (crond -n). Systemd's initscript is completely different from sysvinit's.
# cronie.systemd
[Unit]
Description=Command Scheduler
After=syslog.target
[Service]
EnvironmentFile=/etc/sysconfig/crond
ExecStart=/usr/sbin/crond -n $CRONDARGS
[Install]
WantedBy=multi-user.target
There is the systemd packaging guideline draft, which suggest use only systemctl command which can set up correct units symlinks.
But what should be done with chkconfig, which is used for upstart/sysvinit is still not known. I'm running my rawhide machine with upstart, so I rewrote cronie scriptlets with both options for the mean time. Other possibility would be to:
- package all old scriptlets into new-package, probably upstart-initscripts. Upstart maintainer has to be contact for every change.
- create sub-packages for every daemon with legacy initscripts.
# scriptlets in cronie
%post
/sbin/chkconfig --add crond
# systemd
/bin/systemctl enable crond.service >/dev/null 2>&1 || :
%preun
if [ "$1" = "0" ]; then
service crond stop >/dev/null 2>&1 ||:
/sbin/chkconfig --del crond
# systemd
/bin/systemctl disable crond.service >/dev/null 2>&1 || :
/bin/systemctl stop crond.service > /dev/null 2>&1 || :
fi
%postun
if [ "$1" -ge "1" ]; then
service crond condrestart > /dev/null 2>&1 ||:
# systemd
/bin/systemctl try-restart crond.service >/dev/null 2>&1 || :
fi
Another interesting change is that some (suggested) deamons runs in foreground (crond -n). Systemd's initscript is completely different from sysvinit's.
# cronie.systemd
[Unit]
Description=Command Scheduler
After=syslog.target
[Service]
EnvironmentFile=/etc/sysconfig/crond
ExecStart=/usr/sbin/crond -n $CRONDARGS
[Install]
WantedBy=multi-user.target
Link | Leave a comment | Add to Memories | Share
Thanks
Nov. 29th, 2010 | 07:29 pm
Thanks to all of you who voted for me. I will try to do my best.
Results:
http://lwn.net/Articles/417600/
(...and thanks for fixing my name ;-) ).
Results:
http://lwn.net/Articles/417600/
(...and thanks for fixing my name ;-) ).
Link | Leave a comment | Add to Memories | Share
Fedora elections
Nov. 20th, 2010 | 01:54 pm
Today started Fedora elections. I candidate for FESCO, because I believe there should be represented also non-desktop developers.
Statements, questionnaire and IRC log with answers could be found on wiki pages.
You can vote here until the 28th November.
Statements, questionnaire and IRC log with answers could be found on wiki pages.
You can vote here until the 28th November.