
\begin{tikzpicture}[]

	\node[osGen,osPCEmb,minimum width=13.2cm] at (0,0) (lin) {GNU/Linux etc.};

	\node[osGen,osMobPC] at (-5.35cm,-1.35cm) (moblin) {Moblin};
	\node[osGen,osMobEmb,right=1cm of moblin] (maemo) {Maemo};
	
	\node[osGen,osMobPCEmb,minimum width=6.05cm] at (-3.59cm,-2.7cm) (meego) {MeeGo};

	\node[osGen,osPhone,right=1cm of maemo] (bada) {Bada};
	\node[osGen,osTab,below=of bada] (plasma) {Plasma Active};
	\node[osGen,osPC,below=of plasma] (cos) {Chrome OS};
	\node[osGen,osMob,below=of cos] (fos) {Firefox OS};

	\node[osGen,osPhone,left=1cm of cos] (jolla) {Jolla};
	\node[osGen,osMobPCEmb,left=1cm of jolla] (tizen) {Tizen};
	\node[osGen,osMob,below=1.85cm of meego] (mer) {mer};

	\node[osGen,osPhonePCEmb,right=1cm of bada] (android2) {Android $<$ 3}; 
	\node[osGen,osTabPC,below=of android2] (android3) {Android 3.x}; 
	\node[osGen,osMobPCEmb,below=of android3] (android) {Android $\geq$ 4}; 
	\node[osGen,osEmb,below=of android] (gtv) {Google TV}; 

	
	\draw[pkrn] (moblin.north) ++(0cm,0.5cm) -- +(0,-0.5cm);

	\draw[pkrn] (maemo.north) ++(0cm,0.5cm) -- +(0,-0.5cm);

	\draw[pkrn,<-,dashed] (fos.east)  -- +(0.5,0cm) -- +(0.5cm,4.95cm);
	\draw[pkrn,<-,dashed] (cos.east)  -- +(0.5,0cm);
	\draw[pkrn,<-] (plasma.east)  -- +(0.5,0cm) -- +(0.5cm,2.3cm);
	\draw[pkrn,<-] (bada.east)  -- +(0.5,0cm);

	\draw[pkrn,dashed] (android2.north) ++(0cm,0.5cm) -- +(0,-0.5cm);
	\draw[pkrn] (android2.south) -- (android3.north);
	\draw[pkrn] (android3.south) ++(-0.15cm,0) -- +(0,-0.5cm);
	\draw[pkrn] (android.south) -- (gtv.north);

	\draw[pkrn,dashed] (moblin.south) ++(-0.15cm,0) -- +(0,-0.5cm);
	\draw[pkrn,dashed] (maemo.south) ++(-0.15cm,0) -- +(0,-0.5cm);

	\draw[pkrn,<-] (tizen.north) ++(-0.15cm,0) -- +(0,0.5cm);
	\draw[pkrn] (mer.north east) ++(-0.5cm,0) -- (jolla.south);
	\draw[pkrn,<->] (mer.north west) ++(0.5cm,0) -- (tizen.south);
	\draw[pkrn,<-] (mer.north) ++(-0.15cm,0) -- +(0,1.85cm);

	\draw[pui] (android3.south) ++(0.15cm,0) -- +(0,-0.5cm);

	\draw[pui,<-] (maemo.east)  -- +(0.45cm,0cm) -- +(0.45cm,0.95cm) node [sloped,midway,above] {QT};
	\draw[pui,<-] (plasma.west)  -- +(-0.45cm,0cm) -- +(-0.45cm,2.29cm) node [sloped,near start,below] {KDE};

	\draw[pui,<-] (moblin.east)  -- +(0.5cm,0cm) -- +(0.5cm,0.95cm) node [sloped,midway,above] {GTK};
	\draw[pui,<-] (maemo.west)  -- +(-0.5cm,0cm);

	\draw[pui,dashed] (moblin.south) ++(0.15cm,0) -- +(0,-0.5cm);
	\draw[pui,dashed] (maemo.south) ++(0.15cm,0) -- +(0,-0.5cm);

	\draw[pui,<-,dashed] (tizen.north) ++(0.15cm,0) -- +(0,0.5cm);
	\draw[pui,<-,dashed] (mer.north) ++(0.15cm,0) -- +(0,1.85cm);

	% Legende

	\node[] at (0cm,-6cm) (osLegendPos) {};

	\node[below=of osLegendPos] (osLegendTitle) {\bfseries Legende};

	\matrix [below=0.15cm of osLegendTitle,row sep=0.2cm,column sep=0.1cm] (osLegend) {
		\node[osGen,osPC,osLegend]{}; & \node[osLegendText]{Desktop OS}; &	\node[osGen,osEmb,osLegend]{}; & \node[osLegendText]{Embedded OS}; & \node[osGen,osMob,osLegend]{}; & \node[osLegendText]{Mobiles OS};  & \node[osGen,osTab,osLegend]{}; & \node[osLegendText]{Tablet OS};   \\
		\node[osGen,osPhone,osLegend]{}; & \node[osLegendText]{Smartphone OS}; & \draw[dashed] +(-0.25cm,-0.25cm) -- +(0.25cm,-0.25cm); & \node[osLegendText]{Stark angepasst};  & \draw[pui] +(-0.25cm,-0.25cm) -- +(0.25cm,-0.25cm); & \node[osLegendText]{Benutzungs-schnittstelle}; & \draw[pkrn] +(-0.25cm,-0.25cm) -- +(0.25cm,-0.25cm); & \node[osLegendText]{System- \& Dienstprog.}; \\
	};

	\draw (osLegend.north east) rectangle (osLegend.south west);
	\draw (osLegend.north east) ++(0,0.8cm) rectangle (osLegend.south west);

\end{tikzpicture}
