gnome release schedule

as i needed a graphical representation for my master thesis i did attempt a shameful rip-off of my friend andreas' beautiful contemporary piece of art.

and to quote vincent

I like it. It’s pure art, you know. Not understandable.

source

creating beautiful graphics with pgfplots

during the last weeks a lot of people asked me what tools i would use to create graphics for my master thesis. alrighty, i will show you my toolset. to be honest, i am a bit of a design fetishist and therefore i had the following requirements

  • consistent font type and size for text and graphics
  • high quality, scalable function and data plots, which can be exported to pdf
  • shareable configurations and settings between the figures

this basically restricted by options to the awesome pgfplots library, which is built around the even greater tikz library. i won't go into implementation detail here, as you can find more samples and a very good and detailed documentation in the pgfplots manual. anyway, these are three of my latest graphics i needed for my thesis. for a concrete example i filled them with data from the cheese git repository.

the first graphic shows the commit activity of the cheese project from it's first commit until present time. you can certainly see all the hectic during several gnome releases.

the code to produce this plot is the following. i choose to have one tex file for each graphic and convert it to pdf. this allows me to publish the graphics elsewhere too and is generally quite comfortable when using a revision control system such as git. there is of course also the possibility to use tikz external, which generates a pdf file for each figure inside a document on the fly but you might run out of tex memory if your plots get too big or if you have several plots in one document.

basically i just give pgfplots some points in a coordinate system and let it interpolate the remaining ones. using the dateplot extension, i can use plain dates instead of numbers and pgfplots will convert them automatically.

\documentclass[class=minimal]{standalone}
\usepackage{mathpazo}
\usepackage{pgfplots}
\definecolor{skyblue1}{rgb}{0.447,0.624,0.812}
\definecolor{scarletred1}{rgb}{0.937,0.161,0.161}
\pgfplotsset{width=12cm,compat=newest}
\usepgfplotslibrary{dateplot}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
  date coordinates in=x,
  x tick label style={/pgf/number format/1000 sep=},
  xticklabel={\year},
  ylabel=Commits,
  xlabel=Time,
  enlargelimits=0.10,
  legend columns=2,
]
\addplot[smooth, no markers, color=skyblue1]
  table [x=date, y index=1] {commits_by_month.dat};
\addplot[smooth, dashed, no markers, color=scarletred1]
  table [x=date, y index=1] {commits_by_month_average.dat};
% both data files are in the following format:
% date commits
% 2011-07-01 77
% 2011-08-01 72
% 2011-09-01 148
% [...]
\legend{Commits, Average}
\end{axis}
\end{tikzpicture}
\end{document}

in my second example i wanted to see at what day/time combination most commits occur. this can simply tell if the development of a project is driven more by a company or by individuals in their spare time. as you can see, most of the cheese development occurs after work or on weekends.

to produce this graphic, i misused the scatterplot extension to draw points with a calculated size. you can find the related code inside the pre and post marker code section. using symbolic coords i can use strings as coordinates on the y axis.

\documentclass[class=minimal]{standalone}
\usepackage{mathpazo}
\usepackage{pgfplots}
\definecolor{skyblue1}{rgb}{0.447,0.624,0.812}
\pgfplotsset{width=12cm,compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
  grid=major,
  point meta=explicit,
  xmin=-1,
  xmax=24,
  xlabel=Hours,
  scatter/@pre marker code/.code={%
    \pgfmathparse{\pgfplotspointmetatransformed/1000*50+50}%
    \let\opacity=\pgfmathresult
    \pgfmathparse{\pgfplotspointmetatransformed/1000*7.5+1}%
    \def\markopts{mark=*, color=skyblue1!\opacity,%
    fill=skyblue1!\opacity, mark size=\pgfmathresult}%
    \expandafter\scope\expandafter[\markopts]
  },
  scatter/@post marker code/.code={\endscope},
  symbolic y coords={Sunday,Saturday,Friday,Thursday,Wednesday,Tuesday,Monday},
  xtick = {0,...,23},
  x=0.59cm,
  y=0.59cm,
]
\addplot[only marks,scatter]
  table[x index=0, y index=1, meta index=2] {punchcard.dat};
% data files are in the following format:
% hour day commits
% 00 Monday 14
% 00 Tuesday 42
% 00 Wednesday 14
% 00 Thursday 16
% 00 Friday 12
% 00 Saturday 18
% 00 Sunday 11
% 01 Monday 21
% 01 Tuesday 9
% 01 Wednesday 5
% [...]
\end{axis}
\end{tikzpicture}
\end{document}

last but not least i am interested how involved an author is. it is quite easy to tell the role of a developer by looking at this graphic: does he code more or is he more into project management? when did he enter the project, when did he leave? this are the top six contributors to the cheese project.

the code is quite similar to the first figure, except that i am reading multiple columns out of the same file.

\documentclass[class=minimal]{standalone}
\usepackage{mathpazo}
\usepackage{pgfplots}
\definecolor{butter1}{rgb}{0.988,0.914,0.310}
\definecolor{chocolate1}{rgb}{0.914,0.725,0.431}
\definecolor{chameleon1}{rgb}{0.541,0.886,0.204}
\definecolor{skyblue1}{rgb}{0.447,0.624,0.812}
\definecolor{plum1}{rgb}{0.678,0.498,0.659}
\definecolor{scarletred1}{rgb}{0.937,0.161,0.161}
\pgfplotsset{width=12cm,compat=newest}
\usepgfplotslibrary{dateplot}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
  date coordinates in=x,
  x tick label style={/pgf/number format/1000 sep=},
  xticklabel={\year},
  ylabel=Commits,
  xlabel=Time,
  ymin=0,
  legend columns=3,
]
\addplot[smooth, color=skyblue1]
  table [x=date, y index=1] {commits_by_author.dat};
\addplot[smooth, color=chameleon1]
  table [x=date, y index=2] {commits_by_author.dat};
\addplot[smooth, color=butter1]
  table [x=date, y index=3] {commits_by_author.dat};
\addplot[smooth, color=chocolate1]
  table [x=date, y index=4] {commits_by_author.dat};
\addplot[smooth, color=plum1]
  table [x=date, y index=5] {commits_by_author.dat};
\addplot[smooth, color=scarletred1]
  table [x=date, y index=6] {commits_by_author.dat};
% data files are in the following format:
% hour day commits
% date committer1 committer2 committer3 committer4 committer5 committer6
% 2010-06-01 8 0 34 0 0 0
% 2010-07-01 46 8 52 0 0 0
% 2010-08-01 26 3 18 0 0 0
% [...]
\legend{Daniel G. Siegel, Filippo Argiolas,
  Yuvaraj Pandian T, Jaap A. Haitsma,
  Bastien Nocera, David King}
\end{axis}
\end{tikzpicture}
\end{document}

that's it for now! if you need to produce high quality graphics for your next thesis, paper or just for fun, take the time to have a look at pgfplots. the results are worth it!

return of the travelling gnome

the travelling gnome was gone for a very long time and some already expected the worst. but there are some fantastic news, ladies and gents, the beloved travelling gnome is back!

kudos to eric for discovering his hideout!

missing in action

if you happened to see vincent's talk at the desktop summit yesterday, you certainly know the story of the travelling gnome. for those who haven't, let me sum it up.

some very long time ago, right before the 2.22 release of gnome, i wanted to do some screenshots to show the great new features of cheese we had at that time. therefore i asked how to take screenshots of cheese and while getting some more or less useful responses i did not find a nice way to show off cheese. a few days later though i got a parcel by vincent, with a great present in it. have a look at my previous post to read more about it.

after the release i sent the travelling gnome to andré, a good friend and great guy along with a piece of good smelling cheese and some instructions:

  1. add a photo of the travelling gnome and yourself to https://live.gnome.org/TravellingGnome
  2. get a present and put it into a box along with the travelling gnome and the instructions
  3. send it to your favourite gnome hacker

voilá, the travelling gnome was born! it then travelled to cosimo in italy and onwards. if you want to check the route it has taken so far, have a look at https://live.gnome.org/TravellingGnome.

and now comes the sad part of the story: it has gone missing, vanished, unaccounted, lost, gone and doomed. i already asked around, but it seems that nobody knows the current location of the travelling gnome. so please, if you know where to find, please send it to your favourite hacker along with the instructions above.

thanks!

gnome screencasts - take six

you asked for it! and here it is, the sixth episode of gnome screencasts! this time we will develop a web browser. as always, have fun!