Deweloperzy OpenBSD: Gilles Chehade

Osiemnastego października dwadzieścia lat temu pierwszy commit wylądował w repozytorium CVS projektu OpenBSD. W rocznicę tego wydarzenia zespół zaprosił wszystkich czytelników do serii wywiadów przeprowadzonych przez nasz zespół z deweloperami projektu.

Szósty Gilles Chehade

On October 18th 20 years ago the first commits to the OpenBSD project landed in the CVS repository. On the anniversary the team invited all readers to a series of interviews that our staff conducted with the project developers.

We continue with our sixth interview – Gilles Chehade.

1. For the readers who don’t know you, can you shortly introduce yourself?

I’m Gilles Chehade from Nantes, France.

I studied CS at Epitech Paris until 2006, then worked mostly as an R&D engineer for several industries.

I currently work as a system engineer kind-of-a-devop on a project that involves distributed servers and mailing.
2. Why did you choose to run OpenBSD? How long have you been using it?

From 1996 to 1999, I had been running various Linux distributions and eventually settled with Redhat which was the most „popular” around me back then.

Sometime in 1999, I started taking sysadmin jobs for a living and one of my customers was dealing with heavy load that caused his server to hang or panic frequently. He had heard about FreeBSD and wanted me to setup a new server so he could redirect the traffic to it. It made him very happy and gave me a first experience with BSD.

A friend of mine told me that if I liked FreeBSD, I should give a try to OpenBSD which was supposedly cleaner and more secure but slower. I really enjoyed it from the first day, and progressively started using it everywhere for my own needs, never noticed it being slower for any of my needs.

When I picked up school and started programming, it was running on my workstation and I loved how it would cause a lot of errors to trigger early, reducing the risk of a demo effect :-)

We’re now 16 years later, I’ve never looked back, I still use various systems including Linux and FreeBSD, but OpenBSD remains my #1 system for most tasks.
3. For those readers that still haven’t joined the OpenBSD community, why should they try OpenBSD?

As a developer, because it provides a nice working environment. There is a very clean codebase from which to pick examples, there is a very good documentation with examples too, and the environment is not graceful, it has several mechanisms to trigger early crashes for misbehaving programs which allows spotting bugs that sometimes don’t trigger on other systems.

As a sysadmin, because it has a general feel of cleanness. There are not 20 ways to achieve the same thing, utilities just work and do not fail with cryptic errors, things are where they should be and the many mitigation techniques used in programs lowers my stress when I need to be away from computers for a while.
4. Is OpenBSD your daily driver at home & at work?

Yes, OpenBSD is my designated driver.

My desktop is 100% OpenBSD, I use it for pretty much everything from development to watching Numberphile on youtube 😉

My laptop has a dual-boot between OpenBSD and Windows, just in case, but given that most of my use of computers is for programming, it is very rare that I actually make use of it.

At work we use Linux mainly but as a remote worker I still do all of my work on OpenBSD, then run it on Linux.
5. How did you become an OpenBSD developer? What do you think is required in order to join the OpenBSD project as a developer?

When I started programming in 2001, I started using the OpenBSD tree as a source of examples and learnt a lot from there. I was active on the mailing-lists, trying to help people, asking help myself, trying to find where I could help and sending occasional diffs, though very passively.

In 2006, I contributed a joke diff to a thread and one of the French hackers (Pierre-Yves Ritschard) contacted me to laugh about it.

We discussed a bit and he asked me about my own projects, I shared a bit of code, he gave some advice, and eventually asked me if I knew about his project „hoststated” (now known as relayd) and if I’d like to contribute to it.

I started sending diffs for that project daily, then started sending more and more against other parts of the tree, and finally was asked if I wanted to become a developer.

What’s required to become a developer is to actually contribute.

I don’t think becoming a developer is a goal in itself, I tried hard to become one when I began but my contributions were inconsistent. I stopped caring about becoming a developer and more about improving a system I was using daily. If you are motivated about it, then you’re going to send enough contributions that a developer somewhere will be annoyed that he spends more time committing your code than his 😉
6. Can you tell us about some OpenBSD-related areas you work on?

I’m a userland/daemon guy and work solely in this area in OpenBSD.

These last few years, most of my work surrounded the smtpd daemon but I sometimes dive into other daemons because we share patterns of code, we share some API, and sometimes a good idea needs to be spread across the tree.
7. Do you have an idea of the time you spend working on the OpenBSD project?

I have no idea, it depends on the amount of free time I have really.

Sometimes, I can spend hours daily for weeks, other times I can’t even find an hour in weeks. These days, it’s about an hour each day.

A few years ago, I used to take days off regularly to work on OpenBSD, but I can’t really do that anymore.
8. OpenBSD tends to lead in development best practices does it work the other way around? Is there a process improvement the project started or aims to adapt from the oustide world?

OpenBSD hackers often look at what others do and often discuss ideas to improve the project in various ways. I don’t think the origins of an idea is relevant at all, sometimes they are brought, sometimes we adjust or build on top of them, the technical benefits of an idea is what matters really.

The new pledge() system call is a perfect example of this to me.

It brings some kind of processes sandboxing by restricting system calls. This is not new technology, several other API do this, and each and every of them was described to me as „THE” solution. But I never got convinced enough to actually implement them.

Then deraadt@ and others discussed this new call, which basically does what others do, but which has very simple semantics, which I can understand the entire impact immediately, which is absolutely non-intrusive, and which has a very clear contract. This idea now becomes appealing to me, no matter where it originated from.
9. It’s been a long 20 years of amazing releases. What are you most proud of and what would you like to revisit/redo?

I’m proud to be part of a team of people who are constantly working towards making a better system, because they genuinely want to give the best they can on a system they like. I don’t recall ever seeing a feature rushed and hacked just so it fits a schedule, the quality has always driven things and I’m glad it’s been that way all along.

As far as OpenBSD is concerned, I wouldn’t revisit anything.

It is not a perfect system, none is, but it’s very good, it evolves at its own pace, with its own innovations, and this has worked good for twenty years 😉
10. As a conclusion, can you tell us how you forecast OpenBSD’s future? What’s the next big challenge?

A lesson I learnt: never forecast anything IT related 😉

1. Czy mógłbyś powiedzieć parę słów o sobie czytelnikom, którzy jeszcze Cię nie znają?

Jestem Gilles Chehade z Nantes we Francji.

Studiowałem informatykę na uczelni Epitech w Paryżu do roku 2006, później pracowałem przeważnie w obszarze R&D dla różnych przedsiębiorstw jako inżynier.

Obecnie pracuje jako inżynier systemowy a-la-devop przy projekcie powiązanym z rozproszoną architekturą serwerów i poczty.

2. Dlaczego wybrałeś OpenBSD? Jak długo korzystasz z tego systemu?

Pomiędzy 1996 a 1999 rokiem używałem wielu różnych dystrybucji Linuksa, aż w końcu zostałem przy RedHat, który był wówczas „najpopularniejszą” dystrybucją w moim środowisku.

W okolicach 1999 roku zacząłem pracować jako administrator systemowy. Jeden z moich klientów zmagał się z dużym obciążeniem, co skutkowało zawieszaniem się serwera lub jego częstą paniką. Słyszał on o FreeBSD i poprosił mnie o konfigurację nowego serwera tak, by móc do niego przekierować ruch. Był bardzo zadowolony z efektu końcowego, a ja zyskałem pierwsze doświadczenia z BSD.

Znajomy powiedział, że jeżeli podoba mi się FreeBSD, to powinienem spróbować OpenBSD, które podobno jest bardziej klarowne i bezpieczne, ale mniej wydajne. Spodobało mi się już od pierwszego dnia, a z biegiem czasu zacząłem używać go wszędzie na własne potrzeby, nigdy nie zauważyłem wspomnianej mniejszej wydajności.

Kiedy rozpocząłem studia i zacząłem programować, system ten towarzyszył mi na mojej własnej stacji roboczej. Byłem zachwycony tym, że ujawniał taką dużą ilość błędów wcześniej niż inne środowiska, co redukowało ryzyko efektu demo :)

Minęło 16 lat, a ja nigdy nie żałowałem tej decyzji. Nadal używam różnych systemów operacyjnych z Linuksem i FreeBSD włącznie, OpenBSD pozostaje jednak moim systemem #1 dla większości zadań.

3. Dlaczego czytelnicy, którzy jeszcze nie przyłączyli się do społeczności OpenBSD powinni tego spróbować?

Developerzy – ze względu na przyjazne programiście środowisko. Bardzo czytelny zestaw kodu źródłowego, z którego można czerpać przykłady. Świetna dokumentacja, także wzbogacona przykładami, a samo środowisko nie jest pobłażliwe. Istnieje wiele mechanizmów wymuszających wczesne ubicie programu, który się niepoprawnie zachowuje. Pozwala to na wczesne wykrycie błędów, które na innych systemach pozostają niezauważone.

Administratorzy systemowi – ze względu na ogólną czystość systemu. Nie ma 20 różnych sposobów na osiągnięcie tego samego celu. Narzędzia po prostu działają, zamiast zawodzić niejasnymi komunikatami błędów. Wszystko jest tam gdzie być powinno, a istniejące mechanizmy prewencyjne obniżają mój poziom stresu, jeśli muszę spędzić trochę czasu z dala od komputerów.

4. Czy używasz OpenBSD jako głównego systemu w domu oraz w pracy?

Tak, OpenBSD jest moim głównym systemem.

Mój desktop to w 100% OpenBSD. Używam go praktycznie do wszystkiego, od rozwoju oprogramowania aż po oglądanie Numberphile na youtube :)

Mój laptop ma skonfigurowany dual-boot pomiędzy OpenBSD a Windowsem, tak tylko na wszelki wypadek. Jednakże biorąc pod uwagę, że moje główne zajęcie z komputerem to programowanie, nie korzystam zbyt często z tej drugiej opcji.

W pracy używamy głównie Linuksa, choć jako zdalny pracownik, nadal wykonuję całą swoją pracę na OpenBSD, która na Linuksie jest potem jedynie uruchamiana.

5. W jaki sposób zostałeś deweloperem OpenBSD? Co – Twoim zdaniem – jest potrzebne by zostać członkiem projektu w roli dewelopera?

W 2001 roku, kiedy zaczynałem programować, używałem drzewa kodu OpenBSD jako źródła przykładów, na podstawie których się uczyłem.  Byłem aktywny na listach mailingowych, starałem się pomagać ludziom. Sam również prosiłem o pomoc, starając się pojąć, w jaki sposób mógłbym się przydać. Okazyjnie wysyłałem też łatki, chociaż w bardzo pasywny sposób.

W 2006 roku wysłałem dla żartu łatkę, po czym jeden z francuskich hackerów (Pierre-Yves Ritschard) skontaktował się ze mną, aby wspólnie się z tego żartu pośmiać.

Porozmawialiśmy chwilę, zapytał mnie o moje projekty, a ja zademonstrowałem odrobinę kodu i otrzymałem garść porad. Koniec końców zapytał mnie, czy słyszałem o jego projekcie „hoststated” (teraz znanym jako relayd) oraz czy chciałbym pomóc w jego rozwoju.

Zacząłem codziennie wysyłać łatki do tego projektu, potem coraz więcej łat dotykających innych części drzewa, aż pewnego dnia zostałem zapytany o to, czy nie chciałbym zostać deweloperem.

To, co jest potrzebne by zostać deweloperem, to po prostu wspomaganie projektu własną pracą.

Myślę, że zostanie deweloperem nie jest celem samym w sobie. Kiedy zaczynałem, bardzo starałem się nim zostać, lecz moja praca była bardzo nieregularna i niespójna. Przestało mi zależeć na zostaniu deweloperem, a bardziej na samym ulepszeniu systemu, którego używałem codziennie. Jeżeli jesteś odpowiednio zmotywowany, to w pewnym momencie wyślesz ta wiele łat, że któryś deweloper zirytuje się tym, że spędza więcej czasu na commitowaniu twoich rzeczy niż swoich własnych.

6. Czy mógłbyś powiedzieć parę słów o obszarach Twojego zaangażowania w OpenBSD?

Zajmuję się przestrzenią użytkownika i demonów, pracuje wyłącznie w tych obszarach OpenBSD.

Przez ostatnie lata gro mojej pracy dotyczyło demona smtpd, choć czasami zaglądam do innych demonów, skoro współdzielimy pewne wzorce kodu, API, czasami dobre pomysły muszą być propagowane wzdłuż drzewa.

7. Ile czasu zajmuje Ci praca przy projekcie OpenBSD?

Nie mam pojęcia, wszystko zależy od tego, ile posiadam wolnego czasu.

Czasami mogę spędzać po wiele godzin dziennie całymi tygodniami. W innych przypadkach nie potrafię znaleźć nawet jednej godziny w ciągu tygodni. Obecnie jest to około jednej godziny każdego dnia.

Kilka lat temu regularnie brałem po całe dnie wolnego, aby pracować nad OpenBSD, ale nie mogę już tego robić.

8. OpenBSD zwykle przoduje w najlepszych praktykach deweloperskich. Czy działa to również w drugą stronę? Czy istnieją nowe praktyki, które projekt właśnie rozpoczął lub planuje zaadaptować z innych zewnętrznych projektów?

Hackerzy OpenBSD często spoglądają na pracę wykonywaną w przez innych i omawiają sposoby pozwalające na ulepszenie projektu na różne sposoby. Uważam, że pochodzenie danego pomysłu nie ma w ogóle znaczenia, czasami pochodzą one z zewnątrz, a my dopasowujemy się do nich i dobudowujemy własne na ich podstawie. Wartość techniczna danego pomysłu – to ma faktyczne znaczenie.

Nowe wywołanie systemowe pledge() jest dla mnie świetnym tego przykładem.

Zezwala na ograniczanie procesów do piaskownic poprzez zmniejszenie dostępu do wywołań systemowych. To nie jest nowa technologia – Istnieje kilka różnych API wykonujących dokładnie to zadanie i każde z nich było mi podawane jako TO JEDYNE rozwiązanie. Jednak nigdy nie byłem na tyle przekonany by jakiekolwiek z nich zaimplementować.

Później deraadt@ i kilku innych dyskutowali o tym nowym wywołaniu, które w praktyce robi tosamo, co pozostałe, ale ma tak prostą semantykę, że natychmiast zrozumiały jest jego cały wpływ, który jest kompletnie nieinwazyjny, o bardzo klarownym kontrakcie. Ten pomysł bardzo do mnie przemawia, niezależnie od tego, jakie było jego pochodzenie.

9. To już długie 20 lat wspaniałych wydań. Z czego jesteś najbardziej dumny oraz do czego chciałbyś ponownie zajrzeć/zrobić inaczej?

Jestem dumny z bycia częścią zespołu, który wciąż pracuje nad stworzeniem lepszego systemu, ponieważ ludzie ci faktycznie chcą wykonać najlepszą pracę jaką potrafią na swoim ulubionym systemie. Nie pamiętam funkcjonalności byle jak zrobionej albo pociętej tylko po to, aby zmieściła się w harmonogramie wydań. Jakość zawsze sterowała rozwojem i jestem bardzo zadowolony, że tak jest od samego początku.

Z punktu widzenia OpenBSD nie zmieniłbym nic.

Nie jest to system doskonały, żaden nim nie jest. Natomiast ten system jest bardzo dobry, ewoluuje we własnym tempie, razem ze swoimi własnymi rozwiązaniami – Sprawdzało się to przez ostatnie dwadzieścia lat 😉

10. W ramach podsumowania, jak kreślisz przyszłość dla OpenBSD? Co jest kolejnym największym wyzwaniem?

Lekcja, której się nauczyłem – Nigdy nie przewiduj niczego związanego z informatyką 😉


Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *