Skip to main content

the avatar of Klaas Freitag

Csync for ownCloud Client 1.1.0 - A New Sync Engine

Along with todays ownCloud 4.5 release we released the new ownCloud Client 1.1.0 with a new syncing concept.

This blog will shed some light on the details. I apologize, it’s a long read.

Time Issues

ownCloud Client versions 1.0.x worked with csyncs traditional way of using the file modification times to detect updates between the two repositories that should be synced to each other. That works fine and conforms to our idea to ideally not use any other metadata in syncing than what the file system has anyway.

Time flies

However, there is one drawback which we all know from daily life: If at least two parties sync on time its important that all clocks are set exactly the same way. Remember good crime movies where a bank robbery always starts with a clock adjustment of all gangsters? We have exactly the same in ownClouds syncing: All involved have to have the same time setting, otherwise modification times of files can not be compared reliably.

There are solutions for computers to set the exact time (like ntp) so in general that works. However, in real life scenarios these are not reliable because either people do not have them started on the system or because the daemon updates the time once in a while and in that time span the clock skews already too much.

Users all the time reported problems with that and other experts continued to advise that we never get around that problems if we don’t change something fundamental and go away from pure time based syncing.

Well, we did that with our csync version 0.60.0 which is the sync engine for ownCloud Client 1.1.0.

An Unique Id

Now, every file and directory inside a sync directory has an unique Id associated. The idea is that the Id changes if the file changes. So in the sync process the need for a file update in either direction can be computed by comparing the two Ids of the file. If the id has changed on one repository the file was changed there and needs to be synced to the other side.

The Ids are generated on the ownCloud server and one challenge for the client is to always download the correct Id of a file. The Ids are just random tags for a file version. It is not associated to the file content as MD5 sums would be. Actually it was a frequent advise to use MD5 sums or a similar approach which digests the files content to detect updates. That would have come very handy because that means comparing file contents directly and, more important, it’s reproducable on either side. Also the client would have been able to recalculate the MD5-Sum of the local files and would not have depended on a local database with Ids that were pulled from the server before.

But we decided against hashes. Calculating MD5-Sums is costly in terms of CPU and time, especially for large files. The CPU problem is small on clients, but not on servers where a lot of clients connect to. Even though the sums can be calculated during upload, the problems remain for the case where the server does not see the upload stream, think of the “mount my Dropbox” case.

For files on the ownCloud server, the Id is always updated when the file gets updated. On the client side the last Id of a file is in the client database. It is invalidated in case the files modification time changed meanwhile to detect local changes.

Change Propagation

Another remarkable change in the 1.1.0 client is that change events in the file tree propagate up to the top directory on the owncloud server, ie. if a file changes in a directory, the id of the directory changes as well as the one of its parent directory etc.

That means that to detect if a file tree has changed, it’s enough to check the top most directories Id. If that has changed, ok, than the client needs to dig deeper, but in the not so rare case that nothing has changed, the one call is enough to detect that. That dramatically lowers the server load with clients because instead of digging through the whole directory structure what we did with the 1.0.x series it is a few requests now.

CSync and ownCloud for Success

These are very intrusive changes to csync. For example, we had to add two additional fields to the database, add code that is able to build a representation of the local file tree from the database and make csync query for the file Ids from the server if needed. Deep under the hood the updater, reconciler and propagator code needed changes to work with the Ids. All these changes did not go back to csync upstream yet.

To not conflict with the upstream version of csync we decided to rename our csync version to ocsync. But: This is a temporar solution for the time we need to catch up with upstream again. That will take a while until everything is sorted again but we will work on that.

I am are very excited about the new version of csync. But obviously there are other changes in the ownCloud Client 1.1.0 which will be subject of another blog post.

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

the avatar of Sandy Armstrong

My Letter to Amazon

Dear Amazon,

I am writing to ask you to make my Amazon Instant Video purchases available for download, DRM-free.

I am a big fan of your service, and in the last year I have cancelled my cable service and begun to rely heavily on digital purchases from your store to bring new content to my family.

However, as we have settled into this, some major disadvantages of your service have become clear:

1) Many of my devices (phones, tablets, etc) do not have support for viewing Amazon Instant Video content.
2) If I'm having a bad internet night, I cannot watch the content I purchased.
3) If I am making a long drive for a vacation, my son cannot watch any Amazon content I have purchased.
4) I cannot lend my content to friends who want to check it out for themselves, like I can with DVDs.
5) I cannot back up my content in case something catastrophic happens to your service.

I am aware of the existing download option.  It is Windows-only and uses DRM and is therefore useless to me.  DRM'd files cannot be unlocked in the event of you turning off your authentication servers.  And, obviously, they cannot be played in arbitrary devices.

Now, if there were good tools for removing the DRM, this would not be as big of an issue for me as a consumer.  I would just remove it and go on my merry way.

Unfortunately, such tools do not exist.  It would be far easier for me to pirate content I've already purchased from Amazon Instant Video in order to watch on my tablet, make backups, lend to friends, and have offline access.

But it seems inevitable to me that if I begin taking the risk to pirate content I've paid for, I will quickly find that it is easier to never pay for it in the first place.  At that point, you will have lost me as a recurring customer.

I'm not trying to threaten you, but I think you should realize that I am becoming a dissatisfied customer of yours, and the natural consequence in order to get the sort of access I want to the content I buy appears to be piracy.

I love that your Amazon MP3 service is DRM-free.  I don't buy a lot of music, but I have very happily used your service for years when an album came out that I wanted.  I have preferred it heavily when compared to iTunes and similar services.

Please follow the great example you set with Amazon MP3, and make Amazon Instant Video purchases available for download without DRM as well.

Trying to stay a loyal customer,
Sandy Armstrong

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

Gnome 3.6 Release party

Yesterday in Thessaloniki, Greece we went to celebrate the Release of Gnome 3.6 with the Greek Gnome Community. The release party was held at Cafe Alfa, i attended the event with a couple more LinuxTeam members mostly as volunteers for the event.

The party was very nice and full of attendees, friends we haven’t seen for a looong time and a load of new people :) There were discussions about The new Gnome release of course but also about Open Source in general, communities, a lot of drinking and people networking.

Attendees

Photos from G+ album

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

shadow-utils vs. pwdutils

Существуют два пакета утилит: shadow-utils и pwdutils (применяется в SUSE). Служат они для одной цели — редактирования групп и пользователей, но при этом значения набора параметров отличаются. Среди шестерки утилит user{add,mod,del} и group{add,mod,del}, к счастью, наблюдается некоторая систематика.

В shadow-utils следующие параметры имеют всегда одинаковое значение (в pwdutils отсутствуют, если явно не указано обратное):
Ключ Значение
-D изменяет значения по умолчанию
-K key=value для значений по умолчанию
-R запускать в chroot
-Z пользователь SELinux

При этом ключи pwdutils другое (в shadow-utils отсутствуют, если явно не указано обратное):
Ключ Значение
-D DN для LDAP
-P путь к /etc/passwd и /etc/shadow

Кроме этого, для каждой команды присутствуют индивидуальные особенности. Их условно можно поделить на три группы: ключ означает разные вещи; ключ отсутствует в одной из реализаций; ключ присутствует, значение совпадает, но это не отражено в документации.

С проблемами первой условной группы можно было бы бороться используя явные длинные названия. Это делает скрипт более длинным, но и более явным. Однако, для -e длинные варианты отличаются: --expiredate и --expire.

useradd

Ключ Shadow Pwd
-M не создавать /home нет
-N не создавать группу пользователю нет
-U создать пользователю одноименную группу маска umask для домашней директории
-b базовый каталог, вместо /home нет
-l не добавлять в lastlog нет

usermod

Ключ Shadow Pwd
-A нет добавить в группу (аналог -a -G)
-R запускать в chroot удалить из группы
-a (вместе с -G) добавить в группу недокументированный

groupadd

Ключ Shadow Pwd
-f не ругаться, если группа уже есть недокументированный

groupmod

Ключ Shadow Pwd
-A нет добавить пользователя в группу
-R запускать в chroot удалить пользователя из группы
-n переименовать недокументированный

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

[Ann]: Cobra 2.5.0 - Windows GUI test automation tool

Highlights:

* Added Perl interface (Contributed by xsawyerx)
* Added parallel execution (Leaks memory though, its not default, set LDTP_PARALLEL_MEM_LEAK environment variable before starting test)
* Added new APIs (rightclick)
* Fixed multiple bugs reported by users

Credit:

* Sawyer X (Perl LDTP library)
* VMware colleagues
* Wold (IRC)
* Thanks to all others who have reported bugs through forum / email / in-person / IRC

Please spread the word and also share your feedback with us (email me).

About LDTP:

Cross Platform GUI Automation tool Linux version is LDTP, Windows version is Cobra and Mac version is PyATOM (Work in progress).

* Linux version is known to work on GNOME / KDE (QT >= 4.8) / Java Swing / LibreOffice / Mozilla application on all major Linux distribution.
* Windows version is known to work on application written in .NET / C++ / Java / QT on Windows XP SP3 / Windows 7 / Windows 8 development version.
* Mac version is currently under development and verified only on OS X Lion. Where ever PyATOM runs, LDTP should work on it.

Download source / binary (Windows XP / Windows 7 / Windows 8)
System requirement: .NET 3.5, refer README.txt after installation

Documentation references: For detailed information on LDTP framework and latest updates visit http://ldtp.freedesktop.org

LDTP API doc / Java doc
Report bugs

the avatar of KDE at openSUSE

KDE SC 4.9.2 packages for openSUSE

As per this email KDE SC 4.9.2 packages for 12.1 and 12.2 openSUSE users are available in the KR49 repos.  Thanks to everybody who worked on the packaging!

Another news item to note is that the KDE repos at openSUSE are going to be re-organised, have already been respectively. Their structure does now fit the contributors’ workflow better. If everything goes as planned openSUSE is going to ship KDE SC bugfix releases as official updates, starting with openSUSE 12.3. If you are interested in that topic you can find the summary in the opensuse-kde archives.

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

openSUSE Conference 2012 – Invitation to Lightning Talks and Speedy Geeko


The openSUSE Conference in Prague is about to happen and we know that all of you are really excited about it. One more year with great talks and workshops and the warmth of the openSUSE Community around. Being there is really awesome and being a part of it is really great. Since having fun has no limits for us we feel the need to ask you the following:
Kostas Speedy Geeko
  • Did you wanted to submit a talk and you were late?
  • Do you feel like talking about something that has to do with openSUSE?
  • Do you feel like talking about something that has nothing to do with the openSUSE?
  • Do you feel the need to have an on-stage group-hug with Izabel and Kostas?
  • Can you do all that in 2 to max 5 minutes?
If yes is the answer to at least the last and one other of those questions, here is your chance to make it happen.
This year, on oSC we bring one more time the openSUSE lightning talks and the Speedy Geeko and we encourage everyone to come and be a part of it.

Lightning Talks

After many people submitted talks a bit late to fit on the regular conference Schedule or weren’t sure if they wanted to submit a whole talk in order to present something related to openSUSE, we recognised the need to organise something for all of you. After all there should be place for everyone in the openSUSE Conference.
We invite all people that want to make a short talk or talk short about their work inside openSUSE to join us in Lightning talks. Send your requests, info below.

How it works?

  • Each Presenter gets 10 minutes to present their topic (depending on the number of submissions…)
  • The topic should be related to openSUSE
  • You must send a description of your talk until the 10th of october and have the slides ready to send before the beginning of this years oSC
  • Your talk has no slide limit
Time is crucial so after the time limit you will have your microphone taken no matter what…

Speedy Geeko

After last year’s huge success and fun we dare to do it one more time. This year we promise to entertain you showing you the other stuff that openSUSE people do. Last year we had bacon, bees, countries, global personalities plus other cool stuff, this year we hope to be at least that interesting and exciting.
Klaas & bees
How it works?
  • Each Presenter gets 4 minutes to present their topic
  • Each Presenter will present with 20 slides
  • The slides progress every 15 seconds whether the Presenter is ready or not
  • The topic can NOT be related to openSUSE
Time is crucial here too so after the 5 minutes we will find ways to remove the microphone from you. Please don’t make us run for it and be aware that we will carry some sort of weapons.

Instructions

If you feel like participating all you have to do is to follow the instructions below:
  • For submitting a lightning talk click here with subject title: Lightning talks
  • For submitting a Speedy Geeko talk email click here with subject title: Speedy Geeko
The deadline for sending your talks is 10th of october and we will release both schedules at the 15th.
Jan & Kittens
After we release the schedules all you have to do is to be sure that you will have your presentations given to us at some point before this year’s openSUSE conference.
Of course in an open format, preferably ODF or PDF!
Your hosts
Izabel Valverde and Kostas Koudaras

the avatar of Agustin Benito Bethencourt

Experiencias de venir a trabajar a SUSE

Como muchos ya saben, me he venido a trabajar a SUSE. Como ya escribí en mi blog en inglés, lo he hecho en un buen momento, dada la situación de la empresa. Muchas veces lo difícil no es ir a una empresa concreta, sino caer en un área interesante y en un momento para la empresa adecuado. Tu futuro laboral depende mucho de ello.

SUSE, tras la adquisición de Novell por parte de The Attachment Group se ha convertido en una unidad de negocio independiente, lo que está teniendo un impacto muy importante en la empresa a todos los niveles. Una de las consecuencias es que está creciendo. A día de hoy hay un par de decenas de vacantes en una empresa de 700 personas. El crecimiento, lejos de menguar, se espera que continúe.

Esta es una empresa de Software Libre con 20 años de vida. Sí, 20 años vendiendo y desarrollando FLOSS adaptándose a diferentes modelos de negocio y contribuyendo upstream de manera decidida. Con un proyecto estrella en este área, openSUSE, con infinidad de contribuciones relevantes a diversas tecnologías y productos punteros para grandes clientes.

Yo trabajo en Nuremeberg, donde se encuentra el grueso del área de desarrollo de productos, dentro del departamento de I+D. Mi equipo se denomina openSUSE Team. Aglutina a todas las personas que trabajan a tiempo completo en el proyecto openSUSE.

SUSE dispone de una buena mezcla entre ambiente hacker y orientado a cliente. Aquí hay muchos desarrolladores de primera línea trabajando para proyectos clave, desde kernal a drivers, pasando por virtualización, LibreOffice, etc. Mucho personal senior que lleva muchos años en la empresa trabajando con Software Libre. Se da la circunstancia de que algunos de los programas libres que uso son desarrollados por trabajadores de SUSE. Siempre impacta conocer al desarrollador de tus aplicaciones. Al menos a mi me ocurre. Es algo que no suele pasar usando software privativo.

Emigrar no es una decisión fácil para la mayoría. Yo reconozco que, gracias a experiencias pasadas a edad temprana, le perdí el respeto (como dicen en mi tierra) a salir de mi zona de confort y moverme. Respeto mucho, no obstante, a quienes se quedan, sobre todo en estos momentos, a luchar en condiciones igualmente difíciles. La verdad que no me siento un emigrante. Salir de España fue una decisión meditada y largamente deseada. No ha sido porque no me gustara aquello, sino porque quería vivir algo diferente.

Para mi, el proceso de adaptación va muy bien. Me ayudan bastante en la empresa. Además, cuento con la suerte de disponer de amigos en esta ciudad, tanto españoles, sobre todo venidos de empresas de desarrollo de software para hardware de Málaga, como alemanes (les conocí a través de proyectos de comunidad). Todo es más fácil cuando tienes quien te ayude, especialmente al principio.

Tras cuatro meses aquí, he comenzado mis clases de alemán. Dependiendo de la empresa en la que trabajes, hablar alemán es irrelevante o ayuda bastante. SUSE se encuentra en la primera categoría. De todas formas, quiero intentarlo. Veremos cómo me va.

En cuanto al trabajo, ya creo estar bastante aclimatado a la empresa. Con la comunidad openSUSE es otra historia. Lleva tiempo tomarle el pulso a un grupo tan numeroso y heterogéneo de personas. Espero poder acelerar mucho ese proceso de adaptación y conocimiento en la openSUSE Conference, que estamos coordinando desde mi equipo.

...suficuente por hoy.