Notes on FOSDEM19

FOS­DE­M19 it’s just ove­r, and he­re are my main hi­gh­li­gh­ts!

Saturday

After arri­ving to Brussel­s, and then to the ve­nue, I was­n’t on ti­me for the ­first ta­lk that in­te­res­ted me, and then I could­n’t make it in­to the HTTP/3 ta­lk be­cau­se the room wa­s ­fu­ll, so I de­ci­ded to get an in­tro­duc­tion to the con­fe­ren­ce by vi­si­ting the s­tan­d­s, and ne­two­rkin­g.

The first ta­lk I atten­ded was VNF de­ve­lo­p­ment ma­de ea­sy wi­th ne­t­map, whi­ch was ve­ry good. Even thou­gh it’s a to­pic di­ffe­rent than what I usua­lly wo­rk wi­th, it was a rea­lly in­te­res­ting ta­lk wi­th sni­ppe­ts of C co­de an­d ­lo­w-­le­vel ope­ra­tions in the sli­des, deep te­ch­ni­cal in­si­gh­ts in­to the de­tails of ­ne­two­rkin­g, and qui­te en­jo­ya­ble.

In the sa­me de­ve­lo­p­ment room fo­llo­wed a ta­lk in­tro­du­cing ONOS, a ­so­ftwa­re-­de­fi­ned ne­two­rking pla­tform (kind of like a “ker­ne­l” for ne­two­rking in an ar­chi­tec­tu­re) wri­tten in Ja­va, and wi­th a lar­ge co­m­mu­ni­ty, spon­so­red by bi­g ­com­pa­nie­s.

From the da­ta­ba­ses tra­ck, the ta­lk Pos­tgres goes to 11! was a rea­lly good in­tro­duc­tion to the his­to­ry of Pos­tgreS­Q­L, how the pro­ject starte­d, its roots, what has been going on la­te­l­y, ho­w’s the de­ve­lo­p­ment pro­ce­ss (the co­m­mi­t ­fes­ts, and its tra­cking sys­tem are a won­der­ful idea, that I wish othe­r ­pro­jec­ts adop­t!); and why it’s im­por­tant to alwa­ys up­da­te the en­gi­ne (e­ven ­mi­nor re­lea­ses con­tain im­por­tant chan­ges and bu­g-­fixes!). It al­so brie­fl­y ­co­ve­red the last new fea­tu­res that ha­ve been added to the da­ta­ba­se, and wha­t ­can be ex­pec­ted for the next re­lea­se, 12.

After that it was ti­me for a ta­lk about how Ne­tflix uses FreeBSD for its strea­min­g ­pla­tfor­m. It started wi­th a great in­tro­duc­tion to their pla­tform an­d ar­chi­tec­tu­re (im­pres­si­ve as you mi­ght ex­pec­t, for ins­tan­ce their CDN hand­le­s 100­Tb/s!), and what are the main dri­vers for their te­ch­ni­cal de­ci­sions (e.­g. s­peed vs. cos­ts, op­ti­mi­za­tion of the wo­rk­load­s, etc.). After that in­tro­duc­tio­n, it was ti­me to mo­ve to the co­re of the pre­sen­ta­tio­n, and ex­plain their so­ftwa­re en­gi­nee­ring appro­ach. The main takeaway was their aggres­si­ve stra­te­gy to­ in­cor­po­ra­te chan­ges from FreeBSD as fast as po­s­si­ble, by kee­ping tra­ck of the “hea­d” of the re­po­si­to­ry ra­ther than one of the sta­ble bran­che­s. Th­rou­gh ­de­ve­lo­p­ment cy­cles of ~5 weeks, it’s po­s­si­ble to in­te­gra­te wi­th the new ­fea­tu­res fas­te­r, pay the pri­ce of mer­ging ear­l­y, and achie­ve a fas­ter ve­lo­ci­ty of de­li­ve­r­y.

The next ta­lk was Pos­tgreS­QL vs. fs­ync an ama­zing ta­lk. It pro­vi­ded a dee­ply te­ch­ni­cal in­si­ght on the in­ter­nals of the da­ta­ba­se, and how it does to im­ple­ment the I/O sta­ck by re­l­ying on the fs­ync sys­ca­l, and why eve­r­y­body as­su­med it wo­rked in a way when in rea­li­ty it was doin­g ­so­me­thing di­ffe­rent (he­re the­re are mo­re in­for­ma­tion for the cu­rious).

The last ta­lk of the da­y, was Wa­lking th­rou­gh wa­lls Pos­tgreS­QL ♥ FreeBSD. Ano­the­r ­su­perb ta­lk. One of the ones I en­jo­yed the mos­t, ac­tua­ll­y. Agai­n, su­pe­r ­te­ch­ni­ca­l, in this ca­se it all started by an ana­l­y­sis of how does Pos­tgreS­Q­L ­per­form on BSD sys­te­ms (s­poi­ler aler­t: no so we­ll by around ~2014). After tha­t, ­the­re we­re se­ve­ral chan­ges being ma­de, bo­th in FreeB­DS and in Pos­tgreS­QL in or­der to make it fas­te­r. It was a good te­ch­ni­cal re­view of ope­ra­ting sys­te­ms in­ter­nals (for ins­tan­ce, the com­po­nent of Pos­tgreS­QL that se­ts the pro­ce­ss na­me as the que­ry tha­t’s cu­rren­tly run­nin­g, was slow be­cau­se in BS­D, it re­lied on a ­func­tion of the stan­dard li­bra­ry that us­ed two sys­tem ca­ll­s, the­re­fo­re a new ­func­tion — se­tproc­ti­tle_­fas­t(3)— was created to ac­com­plish the sa­me wi­thout sys­tem ca­lls at all, achie­ving a 10% of per­for­man­ce gai­n). The­re we­re ­mul­ti­ple other exam­ples like this one that ma­de the pre­sen­ta­tion ve­r­y en­li­gh­ten­in­g. Ac­tua­lly it was clo­se­ly re­lated to the pre­vious one in the sen­se ­that the “fs­yn­cga­te” was men­tio­ne­d, and the di­le­m­ma of re­l­ying on the o­pe­ra­ting sys­te­ms ca­pa­bi­li­ties vs. im­ple­men­ting di­rect I/O rea­ppea­re­d.

That was the first da­y, pa­cked wi­th te­ch­ni­cal ta­lks, and a lot of kno­w­le­dge. ­But it was­n’t qui­te over ye­t: the­re was sti­ll a ni­ce din­ner or­ga­ni­zed by the ­P­y­thon de­ve­lo­p­ment room ahea­d.

Sunday

The mor­ning was fo­cu­s­ed on the Py­thon de­ve­lo­p­ment room. The first ta­lk I wa­s a­ble to attend was about Gra­ph­QL, whi­ch is a re­la­ti­ve­ly new te­ch­no­lo­gy for web APIs de­ve­lo­p­men­t, that I ha­ve wo­rked in ­the past wi­th.

Then it fo­llo­wed a ta­lk about how to wri­te py­lint plu­gins. It ­makes me ha­ppy to see the­re are peo­ple who rea­li­se that the qua­li­ty, an­d s­tan­dar­d­s, in the co­de a­re so­me­thing that has to be en­for­ced by tool­s, and not le­ft out for peo­ple to­ ­the co­de re­view pha­se.

The next ta­lk was about a li­bra­ry for ma­na­ging con­fi­gu­ra­tion in ser­vi­ces, whi­ch was qui­te in­te­res­ting

After that one I pre­sen­ted my ta­lk about co­rou­ti­nes and as­yn­ch­ro­nous ­pro­gra­m­min­g:

Then, mo­re ta­lks, mo­re ne­two­rkin­g, and the last ta­lk was Breaking Pos­tgreS­Q­L at sca­le. A­no­ther so­lid ta­lk (this tra­ck is ac­tua­lly one of the bes­t). It ex­plo­re­d se­ve­ral pa­ra­me­ter­s, cons­tra­in­ts, and con­si­de­ra­tions to take in­to ac­count when ­dea­ling wi­th da­ta­ba­ses of di­ffe­rent sca­le­s, star­ting wi­th sma­ll ones (<=10­Gb), ­me­dium ones (~100­Gb - 1TB), or lar­ge ones (>1­TB). It’s in­te­res­ting to see ho­w at the be­gin­ning you can get away wi­th pre­tty mu­ch an­y­thin­g, but as the da­ta ­gro­ws, mo­re fi­ne tu­ning has to be do­ne, and di­ffe­rent stra­te­gies (e.­g. s­har­din­g, or chan­ging the ba­ckup po­li­c­y), co­me in­to pla­y.

And that was the end of the con­fe­ren­ce for me.

Final Remarks

The­re we­re lo­ts of ta­lks that I wis­hed to, but could­n’t atten­d, for a va­rie­ty of rea­sons (trans­por­ta­tio­n, lo­gis­ti­cs, so­me rooms we­re fu­ll and did­n’t allo­w ­mo­re peo­ple to get in, over­laps in the sche­du­le, etc.) I wi­ll try to wa­tch the ­vi­deos for the­se ta­lks as the­y’­re being re­lea­se­d, along wi­th fo­llo­wing up wi­th ­the sli­des.

Be­si­des this per­fec­tly un­ders­tan­da­ble mis­ha­p, I rea­lly en­jo­yed the con­fe­ren­ce, and lear­ned a lot, about many di­ffe­rent things (cloud com­pu­tin­g, da­ta­ba­ses, in­fras­truc­tu­re, pro­gra­m­ming lan­gua­ges, and ope­ra­ting sys­te­ms).

It was great to attend a con­fe­ren­ce pa­cked wi­th hi­gh­ly te­ch­ni­cal ta­lks (i­t’s ­rea­lly lo­ve­ly to spend a day lea­ning th­rou­gh so­lid pre­sen­ta­tions wi­th sli­des ­fu­ll of co­de sni­ppe­ts, and con­fi­gu­ra­tion fi­le­s), and I thi­nk tha­t’s a grea­t ­di­ffe­ren­tial com­pa­red to many other pre­vious con­fe­ren­ces I atten­ded in the pas­t (­pro­ba­bly the ex­cep­tion being the Ka­fka su­m­mit in Lon­don last year): the con­tent is hi­gh­l­y ­te­ch­ni­ca­l, and fo­cu­s­ed on te­ch­no­lo­g­y.

FOS­DEM is great for ex­pan­ding the te­ch­ni­cal por­tfo­lio be­cau­se the ­con­fe­ren­ce offers mul­ti­ple tra­cks in pa­ra­llel and wi­th di­ffe­rent te­ch­no­lo­gie­s.