tag:blogger.com,1999:blog-53172360155729731722024-03-13T16:33:25.402+01:00Cornelius' BlogCornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.comBlogger95125tag:blogger.com,1999:blog-5317236015572973172.post-31801213132474968212021-10-25T21:16:00.000+02:002021-10-25T21:16:35.208+02:00Team ProfileWhat makes a great team? One important factor is that you have a balanced set of skills and personalities in the team. A team which only consists of leaders won't get much work done. A team which only consists of workers will not work into the right direction. So how can you identify the right balance and combination of people?<div><br /></div><div>One answer is the <a href="https://docs.google.com/spreadsheets/d/1wV0Knazd5mBJtDIZbKZPLPnxvwPv0Eibwc-p-YJCckU/edit?usp=sharing" target="_blank">Team Member Profile Test</a>. It's a set of questions which team members answer. They are evaluated to give a result indicating which type of team member the person is and where it lies in the spectrum of possible types.</div><div><br /></div><div>There are two dimension which are considered there, how much team members are oriented towards tasks and how much they are oriented towards people. This can be visualized in a <a href="https://www.draw.io/?lightbox=1&highlight=0000ff&edit=_blank&layers=1&nav=1&title=Team%20Portfolio%20Template#R5V1re9rIkv41%2BbjPoxue%2BCNGBCuDRDBgDN9AeGQEGDYGC%2BnXb1VXdXcJg5MzE8%2FO7J5z5kzS6NKqrnrrrUtLn%2FzW5tj5Pts9xdvF4%2FqT5yyOn%2Fzwk%2Bd9%2FnwF%2F48DJQ00Pjs0kH1fLmjItQODZfXIg%2Fqww3Lx%2BFI7cL%2FdrvfLXX0w3T4%2FP6b72tjs%2B%2FdtUT%2Fsj%2B26ftfdLHt8MzBIZ%2Bu3o%2BPlYv%2FEj9Vw7Pjt4zJ70nd2Hf5lPktX2fft4Znv98nz%2F1D%2FoZ83M30tPv7labbYFmLIb3%2FyW9%2B32z39aXNsPa5RtFpsdN6XC7%2BaeX9%2FfN7%2FzAnB1R%2BNPx5nf1x5TiN1fkv%2Fi6%2FwOlsfHvUjqInuSy0cmPMO%2F7jcKCnevD5%2B3y9Bdt3Z%2FHH9bfuy3C%2B3z%2FD7fLvfbzdwwBp%2FuDGSaW3X2%2B%2FqUlo29hrN9TLDc%2FfbHYzOXna0un8sj48w4xt1y6YedfQI%2FHkx288%2B%2BU36q%2Ffl5TX75N0cN%2FCsrW%2FhdTAfF9lic1%2Bm3vp1njvLeBAU0fJmPd8kr9PO%2BjCtnOX9%2FV2nO8yW0W3iTMaN1WR8fJ1vRtfRpvEa5Z%2Fheq38WC026e9Rq5k9dtyX%2BXN8Ne3EcMSTs7htXnXL62Lx8PWlu7kup%2BX1alJer%2Bed%2B%2F103HDS8vOxm7dfo2ybRa0bmNHxkFa7fAJ3nt3eOWm4fe16STkdf3FmD9P1xLvez8fXh7RsvKab9BXulZ%2BcW047E3lvf%2BGnh0UVH%2Bb%2B1%2Bdu1W70hqvXOIxe4cx9urnbdB%2BSxvz57umx5cJ142Vr2cyi26f9vNOoes%2BJN5VzgastyoYf8%2F3jvFnErWt8%2Ftp53wZft4vbu6K3%2FPwKZ%2Fjd57Si5%2F9cxmGz6Ppw3TKqySz1rlezhxuQ%2FErOv5p7d7u0A78NGtXcvy8n3v0Gn2U6aBymD%2F3Xuy93bbgerliBx3aHzcP09m51IpfdfLOvJt6XYjp88zz2twHLdfNlP31Iisk4Wafltfid5nyiNUe%2Blzcb3%2Fv9zXXwbRAV3byZxS3QqHDl0b9BuvhvOnYzGx9fQE6HuddY81i1uP36OvNIu0DLWKaJk26uv08H7sts3FjjPOC8Kn24f0rfHrOfPdyt081xNx%2BvHZjHMW7RnGfj%2FnWk1jOic0DDZ36STx5u1r3n6Tp9TnZzL7iO8uahN2xnad6ukipyeW7%2BbHznzEJ43mGz%2BMpymHXud1Pvie4TNs1zmDUb7lZzLzlMxu4a5jwCPd53729e0%2Be7zdyDOZYujLnFvPPFAdkrPfqG1wiPIP%2B7pymMT%2Fp4TTXfFVzDjg9TN8oDNQ84HvX%2BarS666jzcazV%2FDzx4qt777qcFWYM56eOnYy%2Fvi4eQCbLCK142TRHfOvc5b3NFDTBfVqEoB3jL6BtSsu%2Fo7Z%2Ba4EVVzvUwv3koX%2Fu7Oe7RtoZ%2FW7vae%2Bbbu5Zj0fvYcRq4rm7xe0adO56uOisX%2Bbt9X4yXqyjZfNVPiPgQ95bL2C2L3Ymn7v%2B19U03w3u2hMehVkL2Sm5fZ527jdpUZPvajqewrrHy6j1WZ95a62rt2k8zcf3q8VmvV7oM29vnqbefQ4r%2BpqCRUTedKP%2Bu4xYAjfLOc7n4as9BuwJdM9L3h7zmna%2B5KDFDdSqSD9p53o529zngCqvgJ4lYHGOlgzauNTSn%2Fpfd9N3fwdt7dw7MAewkC8HtQJ5u7D3kBahnknO5b3jqlnny2rup3C9yNwPrPV76iVPoAlXCw%2F8Sefa7z4scI5bZTFVduGaC0Ccu9dF6W6n4%2FXz7Ba0NM%2B8uDSy2k3BEhVKje8U6iRV29w39Z5eF96iVBa%2FmT7Nb5P1%2BfvsXueegzI4xFUK10j9XsvewyLmLn%2BE%2ByVh6nbz1OkNU%2F%2Fs9TYJyslJwviQDJvHXtj%2BgSwyRJsfHLP68TFj9%2Bmxswbk261RLvHg%2FDOAhZXodbvj49Pj%2BL5EFAWbLo1Fhcd8Dno%2BAguZNWtWgWi%2B1Fb3DfR90cmsdXdQzg4g%2FM1Lbzgh5O8UBvHnLaeRAKrGrWYxD5tZd0jjj0b38RrJy%2ByhuU%2Bf719Qb%2Beb68MjeJl5KY%2BhuUwe7rbJIMq6FVkxIACce9PHcX6OZy2vCaBs2nLVOXCum26KbeTjXFZCpjh%2Fsaa3d2g%2F1RTQaA5zAa%2F0NH9OXuAa69%2FDdgCMxUmGbS8eFPCsaZkMswKeL%2Fh9IJD0cyqliNaHGjsA3w8SUFIK0T8WPnAIkAj6SJDY7XZpsZS0XF0nXNXG5aqC%2FzxMx4kz96P9BHB1sfniwEqvaxaLVuHfNeYdxNzpbt4prqIKuEuI%2F%2ByVL%2B6Or9HfA%2BaurszYw1cXzrkSq6GljlJWUhXzUv4pCtt%2B0gqA5%2FSBJxVuXAYuWEQVD5pePGyDZayKZIna0XxJ8nbZzVeABDHIYHIELuH2hk0PZVPXDrvycI1fLwuN2Pk%2F%2BbnjX%2F3cbG075GBX6Hl6PvOo4TYn3WgWZmzgMgfalmLMcLLe5qu7uO3%2FBvco595%2BDSgDc7z%2F7zmgVO8ZuAZED9J3X0CRLAkzsI1R1c1HDsjneCKvC%2FbRduVzSpSEmOEwR8%2FZuS6748RNn6dPi9v7UnnHlpA1cMjH8RF5mtKB3jJm%2B2j%2BNt0A%2F2i5xhv2cjNWLuCcHvLV5x141c%2BCN7yDAk4Pn2qIfqJfxVUbkQC0JELmWcUXMC8epv8vNACe0%2BnmUQH%2BtuqGMSDjiQXVVhpZvbrOsTeoyU36ZYgmYI7%2B3Wu6dNEPeiBP8AWjmm%2BlCGSt%2FI9a3VDIwCN5zf2bp4m3dh6HWzN2KsMPfMYy%2FtXP%2BFaDzfpJCzBryvytl0en6wzzaF5Nnu%2BdRbjXkRxEw8BRxrvX2TgA5n%2Ftzjf9n7OQKglBGoifYfoCsXqFXhf8JuBB5CdlgFgQxIyncQ5SzFOYaQZ4evL7RZ8aVb8eMxLyI5vJX8OHv%2BPpfzlivvGaldEDyTaMbgB%2FXYFOX8X5qb7APMLdcvFw55zizGxzvZvnuxIiyMO09VNeGbkm8LWJD3YW9AaBjx4mXgITazku%2FB3lWsQlYHKLvfNwBbIHRhbGl71x%2Fsux%2BCMZmZMsgwqxBnQCotvRoRdGgDd90BfwrMREAY%2F6Xg9inKjlHMH7NiAmcvm3PcSRh6SauEkeZ8RWYj8ZsLxagYty5mPh3BT4fhaA7mWgy3s4voyHGR4P1%2BkfYtBjkHGWIhumY2FtMOuC12xiRrCEY%2FV1fLgHxGdqDI7P8N6BGIPjMgfnqmxhEMC6rapeC%2B7bCnyIwfAYYA%2F9AOwpgGfT9wzUPel54fdmBf7XFWN4XIXndFXMgjFiFAALe8EMG%2F85wz%2FDs6BMxXikxnvDEV5TjfdCJc%2BMjsE%2FZy90bnyM8xFfB%2BWP43AvNR%2B6PsgM4gu6TjJQz1UqWaLuhv0qKcXYMihILmrMTarsCGuO4w08luWCz0Xrp56zr%2BYft9RaFfFwBLG2%2Bu1ofwMbynEN%2Bbo5ySrJcW5aDhNejxXOV6%2FHEWLzAO6L9ynoPMC2KoY1yzBD6MThhNcW7guywOeie6n1LnENo05BssjVeWqdkxB8ZnlzpHk21Tld9TxRxWsN45NAr42%2Bp%2FpzLmQ6bOPz8JopXVJrkITq3DdrBnhxZjw6qLm31LqUCT4LYkweka6RjjlGn%2FMV2hrPKzvSuYHP63okWSqZubie9FzGPpTMaGyEx1Z4zSSMjqQ%2FcH2wAdALtGPSa3VsU%2BngvNUstYxQt8EO4e%2BxkrOyYdAVpZeoNxCno12q66vz%2BfpDupZdX3Us2SGsFeOAG922Myvj%2BEXpKcqmrOFCwfevDGaUgW9%2Fo%2BfFayndRXsrcdzo2YH0KpJ6dVT6scR5kG0TZij7fFE6pp4RZdwOtI7HudbVkaMxItF6Wbs36xj%2BXtFa4rPFlbIx%2BH2C81fyRRnB%2Bdp%2Bjb0JuWRadl2yuYCv%2FUbfaI1ZP6u2GI9Jd5QONYUOkT6xPlhMKIv9yVp4Yh15%2FOaF8GGidICi0xvwJ2g3ELuAfMFe2C6Vb6B5sbxS1FV1Pq8f2j3hHev9RNkdzokxB%2B%2FNdt00uk0ySQNeQ8LHId2Dnl3bOMrE4qYd19hE%2BMa%2By%2BAYPaO6HmFgKwgwGo%2FVOku%2FoWSvcA%2FX2cje4F6qsJcx1aNj2weF0fpYrStLee%2FYYV9bmz%2FPE%2FXXV7Zh1yKgOWifYn2T1dEmyZLmxljO86dnId8qnp3wzPiOBuujxmC%2Bv7IfHo8bal3peVFOPq1V06wN%2BzFagzzF%2B5%2BMt1l3FR9DbFN2H1kZE7aGSp7KBuPc6K%2FSfzXX0Oh6ST6%2FWXsuxkbFXYSusS2AnitMZhxADkH6y%2FakMEjJPbJzrGGDsMFCY27Ntw4C6w8Ntiv5Vcofsh9V68dYxL4d5c%2FXJRnXcIywSqxVRDoYapskH6f5hMAZ1CW0S%2BU7CB%2FY9msYZf2g5QBKzr71canSM%2FJxzCGNj2Oeo%2FRa2bqxVXVPuq7EJOYDzWMNJ8OmxuCA178gPEm13jvMbzRvU5wSuL5j%2FJTxB33jN%2BIKfYg6v6HWv5TrgnqncIf92Qr91QmHjDRvJb6JWF0WR%2BKUsUu4iXyOfDzj58FgkPLVmn%2B0qze82%2BBy00d%2FSly0z%2BfECoeZZ9LxS6NfcK0J87TYYC3EASXENUrWifGRmJXGZyWMTAaaQxZwDZQT4i3xtnhINgz%2BWdtcoXk3zfPm6lLu4u%2FIz%2FyZXAzoiot6m4QjWCvw24CbIFM3WTYxXixAdwPSN4h1lE41G4AnsA5ZA7EZ4u7q3cxt9QEZ6w%2BLFfsOrD%2FoIOZaC5DDBGws8zhePmJWm%2FXd5TitULxsYLlRZO0G7Yq4LWEoY3ubfUH2Yvz90nAmtlvGHCV%2FFcOA%2FcWaJzNPU%2FGBjv0M%2F4VzAuNTRKxBvIE4LHJcdR75K7Y5GXfFJhZQPFXZjOJDleYEbKOuwPujiGfZ1tvG53eHKcdyMdqPa%2BIskh%2FH01GdtxBWqdhA%2BUPNkYwPYaxT92Y%2FrXmjiDkNPxzU4jiHMI%2BuaTii5Ks0d76GjWft8%2FKaEc%2BDOZ2VkcNxu8%2F8%2Fog5qqQCWSmMWbHPMJyWuLTi%2Fyq%2Bq8eOxONIfkuM7Yk%2F1dcSn1%2FH6IC3ockfaC4D57V1HJsRn9XxU1vE923hR9sivpfjMetYqjFY%2ByLkXNo3VjZ3YfwBXxOfPRb5BT3WtjrYQjyP2K%2B1Df9UsabiiCwDdW2QX0m%2BSPnD0OQQiHuh71gW2sdjPLiH9bA5AYqzCu27tK%2FsDSn20M%2FH3ETJk%2BStYmGMHwudHzBjLekv2iLX0ZT8wjMxS0vK0MT2Rx2X6TgxMTkQJXdf2ekSsQl1SOsOcTc63%2BQGEG80ZwwQu0zOSMlNzaFhbGXJOFSejFtewRx7pfkb555qeSjNlZhLZ8wPNL%2FNGDMy5C1uTDElx%2BI3R7LryOoa2gD5afTlzGnatVjMcKxSxD0mBmrKvBceUxk%2FL%2FSL5XE0Mbq6B3E7OMcz%2BR2lr5b7G25WypxR23AqESsq%2FmBzjyreKZUfoNyasmETI8mx0MQ3lYmj1DVibedHEbPo8fJkHG1T8DOJQyR31BGKCaXORwZjDC9VdsUyXxrfZcfIXtlHGl1vaB%2FG13ux%2BcNYcl7UQzsPi%2Fkcg%2FG8FLYRJxfjnC96Izt7f5IJ42HNh%2Bvf6%2FZuea%2BeX2nmQ%2FbZIBmvGl3U6UrHIMh7YxvzWD3WXJJjOCX7k5wByZDsvNC%2BSmGHjW11nozim%2FoY4zHluUr2qYXmyoRzE%2B2DdC7iyHm4iuJ5s%2BbMiTOf400V17NciHuI3KLGPIVTVd%2FmY0KKGTh2Y50dsQ3I%2FAHaDslCzI04f6X5EMd0tFY6r0C2RnPhOF%2FkJGrxP%2BE13Su1uhiqOAl9BTxXn3lBxjackl9A7t9xMuGb9z2D6caO2A%2BYuJHtSMfslOch%2FWrqfLBej4aNDdsmJ2Vsc1m3JZ7ji82lNG3cpmyE4znOKYm8v8aFUuOCzVfF8np7yzVP7ahp80kGOwr2R%2BT7Y207Q8pdahlrH4B61gtjrK%2Bwf2S7GRosUdibcGwifzu7LmreEfC8THEWiuVUTkTkWilHZPK2YVPjs64LHcl%2BIqFDxs%2B8WCxQemnXUnAxzt2RbErD5VFOlTnX5NDF%2BPJkvDR2VHDugfOmdW5mOIjBFbom%2B0WbT9JjA6qVkFxjrjmoOIA5UpNx8g0Pq0ztC9fDxtcqj47PTbENXkPxZF%2Fk%2FrgepviryUHZvISpYfnST6h8CnGX0uqcGTM5crYThTU6V88cxmBf1%2BbxSIaUc6Mc0FDwk5bjinxfafKe4eig%2BaOtEeh6lqy9aF%2FMfFjmU8hHeaIu57NPk%2BO2BsLYpuuRJk8s7Ti0tUsRF70o%2F6zkcTFncdqL84%2FJWYC9utgR1QsnzknOokqU7kRF0jqXs8Bcx6SEONd5P2cx%2BhflLMBvos0OJz7YicxZyLpGwThvfaSpTRns4jwkxZc279AWufqVjmtlTYFyoaWoT1MNbC9yySbvyLlX5hsRx9WcC7fYXjAvED6trfOZ7K843g6tr46Jh5vc3%2BX%2Bj9j%2FGzrm%2Flz3C6A6RkBgpbCawBoBMVYuSDsDrUT0KCkyUkxEZQZ6wz4yXav55XudL3HjX9UriP0q2E%2FuxcPJC0gCcytOAr6E4mjRezA0dTddB6iIn9ocEvu%2Fo%2BS7IocudCzjv5s6HUr8KGKswuYc9DWiGoe0sSvHzPhnyq%2Bb%2BpvlZSYWF2PkJ6iWoOtAOgeozpd1TfKvcl5U23qxMX1T%2B%2FgXG9cSByN%2FqWo3meaCysbJvrmW1%2BRc0kj4NV2DNbnxE38nx2Mzznkijg%2BbsjZXmRg1bBvuYfNNKndYWB8aUT4hNLkpXCfkCqXJpXKdWNeB6TlTijVkLtb2jhQy%2FtC5MNFPUslcI5znvakvLzHn135bXx3oeEfKNarXMnWOVq7bUvf1FIYrnPYpqdwI8ycZs8A1xd917k7XHyNTIyLePREx%2BIRsyfbBnMQBkanriHq2yL1mrEu2jiXHuYdCxwg2bzmkWiUdH9kYnOszItdQChtU%2FFT3OXBPCa6N6S3h2lRh%2B6pqvMmMaX0le18Jn2X7sezzmLiN46X3fE7%2F%2BI%2F1OUfQcniaGFhxH%2FvNkckfwatjZlYzJk9ns6lKuXIUwzA%2BaUKR1nkm6fwdTPLXdSf3A9Vvn6dYEat6qqsuLUXGX2f2qTOQqxRcMXetVhGKnGY0ZPcGZbjJ2zBaHG1mwFYxVOaB7s%2FZhLaJTkUWA7M61NlT1rzJSYeYYVk2ezygaFUxt4HJ9trImq9%2FiTEDX%2Fl4xvznuj8rFYlXfS%2FBXQaqYysuwRNbvrQ8jRRGMlJ4d19KEv67OmFVBjVsu4Cegapig7flLJMrOoOOImvF3iJ6Mdl%2BjagX2VR0wqbSEzYV%2FwSbigWb4uzwcFTVs8O6i0Ffwx5rGYId44pTdqZbtOjaSonO6v6QURnmY6qnJkIX1Q3DonQWT1cOA9N1uiQGxnbIlT%2BurlQmO1TWMk6UvRKsKnV1hYQz11wNaXM1VVfY9Dh1kopKHlXhRCdRYjtSK9t1EtlKc0tnzmoZSd3t4lp2lZ5jV5VlVydMvGQPT0y31B14ta7e8gcMy2QBVWbPdKNouXLHj%2FHqXOXyzo7Ljm%2Fl5Se6oobrbJkJ2U5gq0BtYzuCablcHfBEZcKjqiNVqK2uyc6iSGZ2PO4MNHp2JhsbyGyoZZXn2Na56oatZJls29JkAAtau9OsdXSwDIwrZMJW5H25su5axpVdZFyCYensse0WXqItX%2BYd%2F9Sum5MM1rGnKpixiPH7HOPHR8PFZIz%2F7n7Z0d%2FBNH9djH%2FsDVdYlweEWwH7jD2KzyaZ6P8laYClGKvXedbK9Ojb%2FLmot2vGVu9zreXUTc%2B%2FyTHr%2FJXOPVFPgOz9ZNSTOS3Zj217xSl3nGYizlb3VMeq%2BwS6HgCrnRrLM71yYVyK5zc9HpT30rk7tshwdaYmQfWPBOPtYd%2BhWPH%2Fs1wvMLlfv8MYmNwK37gD%2F%2Fwl1haonrRhphhsouqLiJ7999CC8hG13y%2BipJv8q%2FaOrrC%2FBTxVE6KpDD17pVgO1XtK24%2FFfeOkY7ZuXN9bwt5u9HaPRItyZNybE4i9D8Ir9a391bxyJNiOZLlyXPRnD2XfcNv0v5n6mt17sTc1MRonRi77ufOTcWA7fG3eGzORjNfu5cmNx3Zq%2B7KEJ9cMTPVUmdxPrf5Zir6fht7HxIxX1NlSuU9L13H3glHWxweiBqz7H5gFiF4IKRff7LnTvYPEQHxTA5XjLVvDoFyi6Yt2xDU93eske6gNjjJbN%2Btl%2BuFToXO63hkd7HUxgtL7qQzTckS%2Bq7K9NZnMg%2Bk67bHGbk1vhJqn3NN41FkFubfL9LW1an2Fap1r%2B0xEVMa9FMwaxf6TkO2IGC72Nur9W5WZi2a6Lcvy6%2F2VhlmaPVUc3bGumb4dfX%2Fqc9H7FHXNU%2BpwaHpaXHlt1k8pv4LYKff7U%2F7e5Kepz5aiUFFD1ns2C9n%2Fb3t8m7YvU%2ByNiUwt%2FLQebfcemIiS5IlYhz7ArWHQ%2FyYnMFksU3v3avuyhporxBYXNC9YWl5AdTy93yv2deZB2KrJWNX6tkwvDe%2FRIj0RsuQoXOzLmbdMvYWyPqaX%2Fx3%2F%2BAHZS%2BIF8M9f6d2vIAoFPwbPCLx5hHaJeuGIrK3PmcqK%2BlwmLtUZ6r9f5kT%2FpjfvpA5FUcCTMLsF0Srg6VHxJPaZ3PvB2U3Obmm8sPsctd0XGr8Yu010bOzS9vie8gXT12J8C2Gq9F2VsH85Lvyk1GW5f81my%2Bp7cy1O1fZND83%2BQTEueveIL3mytmizApHZo27wXUTnGi9pf6fiRzpTUetHr%2BOFyH4Nan3PvpaD3TOn91AJXDHj3Lem90WKva7cb0nHCLno3la7J1r33meiz1JkI%2Bv13wb33ei9qIz1fcsXDCatzB5Irim5cl%2Bf0Yu6LpTC1%2Bi%2BM4Ofao9vKPYX2n2PQS1jo6sKel%2BKkRutfSz3s1ufL%2FmC5tJm%2F7%2Few%2FzW%2F3Nlw%2B7HNryO9VX3jxLGYi9eqevhqo%2BN56J7vE3dT%2B8hJJ5O%2FcvCp9s6uuw5FO8J8Oq96dpH1%2FYn6tr2eb4g5BdT7bXOAWy2Vs%2BzPNm%2Fo%2BMO2W%2Bm9%2FlkJ%2Ftxz3CA2v4A0d%2Bt%2FT%2FLEzNzsLbx4NdxA7VHF7Ga9wjYjKzpyft5LC3PYml5HkvTH2Np%2BZFYml7A0vgClsb%2FKZYGF7A0%2BHgsTS9gafoTWBr9IiyNJZZW57E0%2Bmgsrc5jaXQBS9MLWBqfx9LyLJb653rRz2Bp9aewdPnTWFr%2BaSwtPwpLo3NYWv0klga%2FDEvP83%2Fvl7937EP4P76bU%2B2JqHcCou5Xak8PYMPo57l%2F%2FhH50A%2Fj%2Fq6q%2FA3jQlX5q4nCrGR5kodSNjGRvYK19wGJfVOF6B3XfPNsTMv2InIr1E%2FFHRum24L6Ei0u2p5Wa2tmz0fL9HuJPTImng1%2BOp4lPx4Atvm6y6G2L87ajN57VIhqov3N5B9G4FPUe03s3ivbs8X5RfCPg5%2BOrSqbc42t35fPajnCj%2BOq5dl8K70fyPpF3gfwH8VU8p06ogqt3p%2Bj30d07NqcHnGjXL%2BzpXkQec3S9qIRHn94PFXafCrr1Js8K9dP3uZZ6R0XheXg5MvO%2B%2F%2FsbI61Z%2FPjJWN1xXuWCu7VDP6DOOpcfrWq8YGl8CV6z7TNo5Ymf1vjA7Jn8m0Mxb2yMgd8mlutcX%2BrO1k9t1qK3Gq9Z9SOL8%2F7%2FJO8avVuXrXkHKftBnvzXhbj3weBqLedxop2T%2FyF%2FOkFHtA2fa3%2FxNjpcvV88hFv0%2BU64OovvjkXVgSRBBjqBLx631HoM0zL9zJ%2BarVqewcuM52PyHR%2BVCUwCVPa5Zq3QRb45nVAh2HGka7NVlBPj%2FZIuus40LtW2XLbtnfF9jexlyx0ZdoiIb%2FZzHoPW0HUOwiILdi3dtCOfrJEsYu5qO9i7gurl2%2BpMuM6ax68fauVfFuXYePcw2MipVIgvx2zXkL2r1a6J1Rm%2Be3utrTmhdUufPKslcwekfWbtwdV7DErPTcbrVEPGVdsZQVPv3EBkZYt27zZSL%2Bth96sUMW6n9a36ELVRtGbJiuHksm82N5XQmDuKdNvVBFvxKrt0tPVD9kzZna%2Fi55enSUTO8o5ghFvmjvp8TqacdM31gevGjfEW4v%2BaqYHMCRGhrjXb6%2BwNhRdsKHs1IaqtzaUvmdD5Y9tKD1rQ1wR%2Fr9nQ%2BVZG%2FLfsaHy42woPWdD1VkbKj%2FYhsqaDVUXbMi%2FYEPliQ1d8vofsS%2FuP%2FD631rXz%2Fz9Dmf68OToWeI3h3rP9DUqjM3xC0LgIb2p%2Fc6J8LjXh0XLrfBbKD3gb%2Blt9pseo2N2B%2FXdonGhx33%2BxgzG2%2BV8%2FOWlh19m2oz2%2ButOPZXrGf0279w7i8592aUvY8Ex6VV8exP0fPz6UH%2Bfklc%2FTKst3%2FeH3v9o37evPP8ajgHJ9PfTzZc9SLDRWydP82ebh1DfoYHVVvF23rZdjrf4nZi%2BR3vDgEuKb8DgCsO8gwVYNWi8%2BE6O%2BeLYlXrvtn0u%2FCYOPvPyW3508LnmMqchzoO50%2Fda8PzBmzwKnZvDfYc1hoRfCPOSPEWE9U6%2B6EHf0MlVJzZ%2BZ4U1BLRDaYX%2BUs0Mv6ZkvjF1lnN5k%2FxHUn%2F3KweFimZx30g1km8iF32f8gs%2Fdtd4L4yc7jAGX%2BL4XfHVhomPX%2FzJQLJBmYTtRmK%2FNpQ%2Fwtx7Q%2BzSw%2FNTsbIRrqzCTfgdeIb98o1aVc2R8dtz4a7CuaEc0tuv69TDzJTdlyKyUUrL%2BO9C82l84bHmbxrqK2DzcL8B7XRA83ePm9FVEt4Uj%2BFevZG9O35az8aL7SLcoo%2B6pMF%2Fi%2FVYmSk5VwrXw8izPdBKu44xvl1jOCogNjhZv7v1420f18%2FrDkf7Hr6hYZjthTXJb7up57fzxq9tRe5X9RWgb7d3uBIHGRWIM0v8BhfYh7rC20iEzgWGUfawBwU0KRmAhxhGpzYUYF4TpFMm%2BerUhs4%2B5TmsvICLEN183U3GjTNasOAVf3MOvsd%2Fvegk20ua08MVv4CvfI3NZOzu5rerq5H35ZBWL3vhifb6PmnnPp%2BNp7uJB55rfH3QWqYsogX37ayf5%2FmuWnS%2BlItw76ebNRzXeO6OXcAt0PjbaL%2FoRPb4TbKd%2B9EVWMRT%2Btxfflvhd95G2dybZPed%2B6f54CaZjt3l9CH63PVpfb7lxSvhavD7N%2FoKJHqyDD%2Fjif%2B74c%2BGPn7fPx4vfovUNV843Rw7j9vN4%2F57CYfwCQF%2FE7Ws%2F7WwH2D9LfiNxp7Ex1cbV3zgjD%2F6mpkr2w%2Bfwh%2F426f6r%2FYbq%2Bo38R1bv%2F0%2F" target="_blank">Results Chart</a>.</div><div><br /></div><div>Here is an example:</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-PJBkArCNvUY/YXcBtDMnjKI/AAAAAAAAevY/JH7YVIhIwUYl5oISYOsoDxjMoi8Bcu4EwCLcBGAsYHQ/s960/team-portfolio-example.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="960" height="300" src="https://1.bp.blogspot.com/-PJBkArCNvUY/YXcBtDMnjKI/AAAAAAAAevY/JH7YVIhIwUYl5oISYOsoDxjMoi8Bcu4EwCLcBGAsYHQ/w400-h300/team-portfolio-example.png" width="400" /></a></div><p>You can see five segments:</p>
<ul>
<li>The center (5,5) is the "worker" who has a set of balanced of attributes, no extremes. These team members are extremely important because they tend to just get stuff done.</li>
<li>The top left (9,1) is the "expert" who is focused on the task and its details but doesn't consider people that much. You need these to get the depth of work which is necessary to create great results.</li>
<li>The bottom right (1,9) is the "facilitator" who is something like the soul of the team, focused on social interactions and supports the team in creating great results.</li>
<li>The top right (9,9) is the "leader" who is strong on task and people and is giving direction to the team. You need these but you don't want to have more than one or two in a team otherwise there are conflicts of leadership.</li>
<li>The bottom left (1,1) is the "submarine" who floats along and tries to stay invisible. Not strong on any account. You don't want these in your team.</li>
</ul>
<p>The test can provide some insight into the balance of the team. You want to have all but the submarine covered with an emphasis on the workers.</p>
<p>How does your team look like on this diagram?</p><div><br /></div>Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com3tag:blogger.com,1999:blog-5317236015572973172.post-21903173508587457492021-10-14T00:44:00.000+02:002021-10-14T00:44:36.552+02:00Twenty-Five Years of KDE<p>It's <a href="https://kde.org">KDE</a>'s birthday today. Twenty-five years ago Matthias Ettrich <a href="https://kde.org/announcements/announcement/">called for programmers</a> to create a GUI for end users of Linux. They came and did. I wrote about the first <a href="https://blog.cornelius-schumacher.de/2016/10/twenty-years-of-kde.html">Twenty Years of KDE</a> five years ago. What I wrote there is still true, but there is more.</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-UHCqxJ4tOrk/WACLJx47ExI/AAAAAAAAHog/qbJAJ5_4QkUz3w4yyVyto-Csnm48MvwGQCPcBGAYYCw/s2048/kde-foundation.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1432" data-original-width="2048" height="224" src="https://1.bp.blogspot.com/-UHCqxJ4tOrk/WACLJx47ExI/AAAAAAAAHog/qbJAJ5_4QkUz3w4yyVyto-Csnm48MvwGQCPcBGAYYCw/s320/kde-foundation.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">The table where KDE was founded</td></tr></tbody></table><p>KDE started with tremendous ambition and momentum. Creating this unified graphical user interface, this integrated desktop for Linux, this vision drove hundreds and hundreds of amazing people to put together a massive amount of code, the desktop and tons of applications to cover all needs. And they succeeded, KDE's desktop represents the state of the art for many years now, on par with the best alternatives out there.</p><p>Over the years, with a growing community, the focus shifted. KDE was not only about this integrated desktop anymore, it turned into an umbrella for dedicated sub-communities working on specific parts and applications. The community got bigger and more diverse and created applications such as <a href="https://kontact.kde.org/">Kontact</a>, <a href="https://kate-editor.org/">Kate</a>, <a href="https://okular.kde.org/">Okular</a>, <a href="https://krita.org">Krita</a>, <a href="https://gcompris.net/">GCompris</a> or <a href="https://kdenlive.org/">Kdenlive</a>. All of them are at the top of their category.</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-4GZNKimXGBc/YWdcERw66aI/AAAAAAAAekw/B2VtRlgI5U0OM6rh7uO9584RVMV-NowvQCLcBGAsYHQ/s2048/Screenshot%2B2021-10-14%2Bat%2B00.21.16.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1155" data-original-width="2048" height="180" src="https://1.bp.blogspot.com/-4GZNKimXGBc/YWdcERw66aI/AAAAAAAAekw/B2VtRlgI5U0OM6rh7uO9584RVMV-NowvQCLcBGAsYHQ/s320/Screenshot%2B2021-10-14%2Bat%2B00.21.16.png" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">KDE Plasma 5.22</td></tr></tbody></table><p>I use KDE software for more than two decades now. I read my mail with KMail, I operate my shell with Konsole, I edit my texts with Kate, I manage my desktop with Plasma. It's special for software to stand this test of time. KDE's software is stable, it's durable, it's reliable, it's carefully adapted to deal with changes in its environment, so that it stays fresh and familiar at the same time. Some may remember the heat we got for breaking things with <a href="https://kde.org/announcements/4/4.0/">KDE 4.0</a>. That was thirteen years ago. It has been much smoother sailing since then. So maybe this is what I learned to appreciate the most over the last years: <b>KDE creates sustainable software.</b></p><p>The same is true for the community. The community always was KDE's finest features for me and, as I know, for many others as well. I met many very good friends there, and it's still great to also meet new people. People join, people leave, people stay around. It's a very healthy mix. <b>KDE creates sustainable community.</b></p><p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-HJKz4e_aQmg/YWdcx1g2gKI/AAAAAAAAek4/MlWiTqZh_1wy4FwZv9UoS5mcuI0S7uJ9wCLcBGAsYHQ/s1920/akademy2021_groupphoto.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1080" data-original-width="1920" height="225" src="https://1.bp.blogspot.com/-HJKz4e_aQmg/YWdcx1g2gKI/AAAAAAAAek4/MlWiTqZh_1wy4FwZv9UoS5mcuI0S7uJ9wCLcBGAsYHQ/w400-h225/akademy2021_groupphoto.png" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://devel-home.kde.org/~duffus/akademy/2021/groupphoto/">Akademy 2021 group photo</a> by Akademy Team (<a href="http://creativecommons.org/licenses/by/4.0/">CC-BY</a>)</td></tr></tbody></table></p><p>There is a very strong feeling which keeps this together, the feeling of doing meaningful things together. It's an experience which is tremendously strong in KDE, but also in many other Free Software projects. Being free and empowered to do these changes you want to see in the software you use. Having people around you who support you, praise and criticise your work, and work with you on a shared purpose. This can be an incredibly strong source of motivation and satisfaction and happiness. It definitely has been for me.</p><p>Thanks, KDE, for a wonderful twenty-five years, and all the best for many more to come.</p>Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-44623366255911136562021-03-10T21:47:00.000+01:002021-03-10T21:47:57.196+01:0011 takeaways from a year of online conferences<div>I love going to conferences. It's how I learn, meet people, get inspiration, share my work, and have fun. The last conference I went to physically was <a href="https://joinup.ec.europa.eu/collection/open-source-observatory-osor/event/foss-backstage-2020">FOSS Backstage in March 2020</a>. It was great. I <a href="https://www.youtube.com/watch?v=hikC6U8X_Ec&list=PLmmgXF00WhvaaGRM94WvyuGbUHfwfCQ03&index=1">talked about Inner Source</a>, met great people, had great discussions.</div><div><br /></div><div>That was one year ago. Conferences got cancelled or went virtual. I have been to a lot of virtual conferences since then. It's great, attending doesn't require travel, fees went down, with a few clicks you could join any conference on the planet. Sometimes it was attending one session and realizing that it wasn't for me, sometimes it meant spending days in a different time zone.</div><div><br /></div><div>Of course it's not the same, it's different. So what have I taken away from a year of online conferences?</div><div><br /></div><div><b>Ease of access makes a huge difference</b> - I have been to huge conferences who would have been in the US such as <a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/">KubeCon</a> but also to small local ones I probably wouldn't even have noticed such as the <a href="https://www.zukunftsstadt-ulm.de/event-informationen/openbike-konferenz-2020">OpenBike conference</a>. If they would have been physical events I wouldn't have been there. They all gave me something of value.</div><div><br /></div><div><b>Emulating a physical conference is meh</b> - There are so many systems which try to stick close to the format of a physical conference, with virtual lobbies, virtual booths, virtual conference rooms. In the end they all felt hollow. You visit booths and get all the emails but none of the stickers and no real social interaction.</div><div><br /></div><div><b>Live talks are ace</b> - You might think it doesn't matter if a talk is recorded or live. You just watch a video, aren't you? But it's noticeable if somebody is speaking live, there is a different level of energy. For a speaker it might be nice to answer questions during their own talk but it is a distraction and these side talks would be impolite during a physical talk for a reason.</div><div><br /></div><div><b>You need more time</b> - It's tempting, back to back talks, only seconds to switch rooms. But there needs to be chatter, there needs to be space to relax. And without the energy you get from a physical group of people it's more exhausting to focus on a conference hours in a row. So while in theory you could do more in an online format, in practice you should aim for less.</div><div><br /></div><div><b>Treat talks as broadcasts</b> - Without the limits of physical spaces you can go bigger, you can broadcast. No need to impose artificial limits. And broadcasting videos of people speaking is a well understood art. It's what TV is doing all the time, it's what YouTubers and streamers are doing. Embrace it, tap into the tools and the experience of people who are doing this already. <a href="https://20.re-publica.com">re:publica 2020</a> did that in a very interesting way.</div><div><br /></div><div><b>Manage chat</b> - You need a way for people to chat, but it can quickly get our of control. Big rooms with hundreds of participants amplify the signal of individuals too much. So the best conferences were those who managed that carefully, providing extra sessions for tracks or individual talks, providing breakout rooms, have moderators to guide people around, have a quick way to create your own channels for specific conversations in a natural way. Also give room to the introverts, who might not want to chat with many people at the same time.</div><div><br /></div><div><b>Have fun going down the technology rabbit hole</b> - Naturally you need some technology to participate in online conferences. It should not be required to go crazy on that, but some good equipment is really helpful, and it can be fun to go deep on some of that. So have fun exploring fancy microphones, green screens, <a href="https://obsproject.com/">OBS</a>, light and camera arrangements, DIY teleprompters, etc. And learn from the streamers, they have figured out a lot of that.</div><div><br /></div><div><b>Don't save on moderators</b> - Online formats need more guidance. That can't come from the speakers alone. It's worth a lot to have good and present moderators. They keep conversations going, handle technical issues, create atmosphere and much more. You probably need more of that then you assume.</div><div><br /></div><div><b>Continue experimenting with the social bits</b> - The stuff which is going on besides the talks, that's what usually makes or breaks a conference. The social bits. These are harder to replicate in an online format than anything else, and they need most creativity as direct translation from offline formats doesn't work well. So keep experimenting. Do things such as a pub quiz, a virtual hallway track, a cocktail challenge, <a href="https://onezero.medium.com/party-in-a-shared-google-doc-d576c565706e">spreadsheet parties</a>, speed dating, <a href="https://www.youtube.com/watch?v=LaKT3pli5EQ">music tracks</a>, walk & talk etc. A special shout-out to <a href="https://workadventu.re/">Work Adventure</a> here. This has been one of the most effective tools I have seen to give some social feeling to a virtual conference.</div><div><br /></div><div><b>Authenticity beats perfection</b> - Polished videos of speakers who rehearsed and cut their videos. That's marketing. It results in these videos which get you 23 clicks on YouTube. They look like you have seen them before. A speaker who has their roommate walking by, or who are struggling with the video situation etc, that's reality. People who have something to say will still bring across their point and engage the audience. Authenticity is a big part of this.</div><div><br /></div><div><b>Support the organizers</b> - It's tough. Business broke away for many conference organizers. It's fantastic that many took up the challenge to deal with the situation and become creative. But they need support. Organizing conferences is hard and if you are constrained in the way we have been during the last year it's particular hard. Support the organizers by participating, speaking, sponsoring, and what else you can do.</div><div><br /></div><div>So a few weeks ago it was <a href="https://foss-backstage.de/">FOSS Backstage</a> time again. This time as a virtual event. It was a great experience again. A fantastic lineup of speakers which probably wouldn't have come together at a physical event. Some creative ways to get people together and inspired such as the pirate themed track or the virtual lounge. And lots of insights, conversations, and things to learn.</div><div><br /></div><div>I'm looking forward to what still is to come in terms of virtual events. I'm sure we haven't seen all what is possible there. Keep on experimenting.</div>Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-34505778419582943582019-01-30T23:37:00.000+01:002019-01-30T23:37:38.565+01:00Governance on demandI have talked about the <a href="http://blog.cornelius-schumacher.de/2018/06/seven-lessons-of-open-source-governance.html">Spectrum of Open Source Governance Models</a> before. After rereading Nadia Eghbal's excellent post <a href="https://nadiaeghbal.com/foundations">Governance without foundations</a> I feel tempted to add one more: <b>Governance on demand</b>.<br />
<br />
Why that?<br />
<br />
Nadia suggests a theory in the last footnote of her post, <i>"that projects only need to define governance at the first sign of conflict"</i>. Intuitively, this makes immediate sense. We have all seen the projects which seem to work very fine without any thoughts about governance, and we also have seen those projects where attempts to set up formal governance have brought things to a halt instead of serving the project. So doing it at the last responsible point in time, when you actually need it, sounds like a very attractive model.<br />
<br />
Being able to add governance on demand needs a high level of awareness and reflection. It also needs a culture which is open to the idea of governance, has the means to facilitate discussions about it, and is able to come to a conclusion. It is the point where you have to "decide to decide".<br />
<br />
This is not easy, especially in the context of a conflict. It can be paralysing. Making decisions without having defined structures, without having precedence, takes responsibility and courage. Maybe not everybody will go along with it. You don't know because you haven't done it before.<br />
<br />
One model which seems to be a quite natural outcome of such a "we need governance, now" situation, is the "benevolent dictator". When conflict arises, the founder or another exposed person steps in and takes a decision. This sets a trajectory for the project, which might be right or not. It depends on the project, on the people, on the environment.<br />
<br />
Another model which comes naturally is to follow the "those who do the work decide" principle. This adds local, high context governance. It has to be underpinned by common values and a common sense of direction, though. Otherwise it will fail to solve the kind of conflicts where active people seem to stand against each other.<br />
<br />
If you have a strong culture, it might appear you don't need governance. If you have shared values, if you have a common mission, if people learn by imitating healthy behavior from others, then it's easy to take decisions and to preempt conflicts. This could also be called a state of implicit governance, because it is there, but it's not formulated.<br />
<br />
If you have a strong culture, then you are also prepared to add governance on demand. This can become necessary because of growth, a changing environment, or other factors which can't be addressed by existing intuition.<br />
<br />
From this point of view: <b>Build culture first and governance will follow</b>.<br />
<br />
These are my thoughts. I would be more than happy to <a href="mailto:schumacher@kde.org">hear about your thoughts</a> as well.<br />
<br />
<i>Foot note: In some way "governance on demand" is not a governance model in itself, but more a meta model. It doesn't tell how the governance regarding the project then has to look like but only answers a part of the question how to get there. It is in the nature of governance models to also cover this meta level, though. Maybe "governance on demand" is more a governance element than a model in itself. It governs the evolution of governance models.</i><br />
<div>
<br /></div>
Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com1tag:blogger.com,1999:blog-5317236015572973172.post-40835463311837566082019-01-09T00:15:00.000+01:002019-01-09T00:15:09.515+01:00Beautiful GitHub labels with TerraformManaging issues is part of the daily life of most software projects. Reacting to bug reports, feature requests, pull requests, tracking what's going on and where to put attention, all that is usually handled in the bug or issue tracker of the project's choice.<br />
<br />
On GitHub there are the <a href="https://guides.github.com/features/issues/">GitHub issues</a>, and they have become quite powerful over time. Just recently GitHub added the capability to <a href="https://blog.github.com/changelog/2018-11-05-related-issues/">show related issues</a>, <a href="https://blog.github.com/changelog/2018-12-13-pinned-issues/">pin issues to repositories</a> and to <a href="https://help.github.com/articles/transferring-an-issue-to-another-repository/">move them between repositories</a>.<br />
<br />
One important tool to manage issues on GitHub are <a href="https://help.github.com/articles/labeling-issues-and-pull-requests/">labels</a>, those nicely colored badges you can add to issues to get a better overview, to filter lists and queries, or to build further automation such as the presentation of <a href="https://help.github.com/articles/helping-new-contributors-find-your-project-with-labels/">good first issues</a> to people new to the project.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-HUMkkaZodYs/XDUtPh2PArI/AAAAAAAAU0o/bZO9pzDiaVAW23C241GmqQeQ7U-7Zyr3wCLcBGAs/s1600/20190109_000454.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="905" data-original-width="1600" height="181" src="https://3.bp.blogspot.com/-HUMkkaZodYs/XDUtPh2PArI/AAAAAAAAU0o/bZO9pzDiaVAW23C241GmqQeQ7U-7Zyr3wCLcBGAs/s320/20190109_000454.jpg" width="320" /></a></div>
<br />
If you have a lot of labels it tends to become a bit of effort to manage them well, especially if you want to keep colors consistent and descriptions up to date. It becomes even more effort when you try to do so across different repositories. We have all seen the psychedelic potpourri of colorful labels which tends to happen when you use labels generously.<br />
<br />
Last year I saw Mitchell Hashimoto's excellent talk about <a href="https://www.youtube.com/watch?v=qa8ZDrxo8a8&feature=youtu.be">anything as code</a> at the Open Source Datacenter Conference in Berlin. He showed there how to use <a href="https://www.terraform.io/">Terraform</a> to manage infrastructure as code beyond the typical management of computing infrastructure such as servers or networks. He showed how to use it for more administrative tasks such as managing teams on GitHub.<br />
<br />
This is a great approach because it replaces clicking around in a user interface by a more programming-like approach of maintaining configurations, preferably version controlled, and applying the same rules on them as on code. So you can do pull requests, review changes, have the history of what happened in git, run tests and other automation easily, etc.<br />
<br />
The <a href="https://www.terraform.io/docs/providers/github/index.html">GitHub provider for Terraform</a> also handles labels so I thought I would give it a try to manage labels as code. Directly doing this in the Terraform configuration is possible but it's a bit cumbersome and limited in what you can do with the data in this format. So I decided to put the data into a good old <a href="https://yaml.org/">YAML</a> file and writing a bit of Python code to deal with it.<br />
<br />
The result is <a href="https://github.com/cornelius/beautiful-labels">beautiful-labels</a>, a small tool to manage GitHub labels from a YAML description via Terraform. It scans your repository for existing labels and their data, creates a YAML description from it, and then provides you the tools to turn it into a Terraform configuration.<br />
<br />
Terraform is great in handling the state of things in the cloud, it takes care of operating the API in an effective way, figuring out what needs to be updated, and gives the user control, for example by providing a dry run which tells what would change without applying the changes yet. This is all quite convenient and powerful.<br />
<br />
One thing <a href="https://github.com/cornelius/beautiful-labels">beautiful-labels</a> is supposed to make easy is the management of label colors. In addition to the convenience of managing them in YAML instead of having to use the UI, it also adds the option to generate an overview of the labels as SVG, nicely grouped in categories. This helps in grouping things together using colors and generally can augment documentation about how you intend labels to be used.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-_5bbZwuN3G8/XDUrd5XmtfI/AAAAAAAAU0M/Feyu_UFGLBUYrx9yMo9cVWpMrlzvnuQSACLcBGAs/s1600/cornelius-inqlude-labels.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="340" data-original-width="840" height="160" src="https://1.bp.blogspot.com/-_5bbZwuN3G8/XDUrd5XmtfI/AAAAAAAAU0M/Feyu_UFGLBUYrx9yMo9cVWpMrlzvnuQSACLcBGAs/s400/cornelius-inqlude-labels.svg.png" width="400" /></a></div>
<br />
The tool is in an early state but it works. I use it to manage the labels in the <a href="https://github.com/cornelius/inqlude">inqlude</a> repository on GitHub.<br />
<br />
You could add another step of automation by letting CI run Terraform on commits to the YAML file. Maybe something to try for the future. As managing labels is not something you usually do on a daily basis, some manual step might also be good enough.<br />
<br />
One caveat with labels is that GitHub uses the name of the label as identifier. That usually works great but can be a bit tricky when changing the name of a label. For this case I recommend to do it in the GitHub UI for now.<br />
<br />
There are some other approaches how to do this kind of stuff. One of them is <a href="https://github.com/tonglil/labeler">labeler</a> which is a nice tool written in Go to manage labels from a YAML description. It directly operates the GitHub API. The advantage is that it's self-contained but it lacks the power of Terraform in terms of state management. Another is Zach Dunn's post <a href="https://robinpowered.com/blog/best-practice-system-for-organizing-and-tagging-github-issues/">"How we organize GitHub issue: A simple styleguide for tagging"</a> which introduces the notion of color-coded categories.<br />
<br />
It's wonderful when pieces come together, such as the GitHub API, Terraform, YAML, git, and people writing open source code around that. They result in a way to beautifully manage labels without having to put in too much effort.<br />
<br />
If you have feedback or input please don't hesitate to <a href="mailto:schumacher@kde.org">drop me a line</a>. I would be happy if <a href="https://github.com/cornelius/beautiful-labels">beautiful-labels</a> would be useful for you as well. Let me know how it goes. :-)<br />
<div>
<br /></div>
Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-83954659266255244222018-09-05T23:22:00.000+02:002018-09-05T23:22:57.065+02:00My open source career<div style="background-color: white; box-sizing: inherit; color: #1a1a1a; font-family: Merriweather, Georgia, serif; font-size: 16px; margin-bottom: 1.75em;">
When I started doing free software in 1999, I came for the technology. I wanted to practice my C++ skills. I was fascinated by developing graphical user interfaces with <a href="https://href.li/?http://qt.io" rel="noreferrer" style="background-color: transparent; box-shadow: currentcolor 0px 1px 0px 0px; box-sizing: inherit; color: #007acc; text-decoration-line: none;">Qt</a>. I wanted to scratch my itch of organizing my life digitally. I started to work on <a href="https://href.li/?https://userbase.kde.org/KOrganizer" rel="noreferrer" style="background-color: transparent; box-shadow: currentcolor 0px 1px 0px 0px; box-sizing: inherit; color: #007acc; text-decoration-line: none;">KOrganizer</a>.</div>
<div style="background-color: white; box-sizing: inherit; color: #1a1a1a; font-family: Merriweather, Georgia, serif; font-size: 16px; margin-bottom: 1.75em;">
I stayed for the community. I stayed for the friends I met, for the amazing people I work with, for the people using my software. There is this feeling, when you go to an event such as a conference, and you meet the people you have worked with over the internet for the first time in person, and it feels like meeting old friends. No matter how diverse their backgrounds are, there is something which holds the community together. This is why I’m still there.</div>
<div style="background-color: white; box-sizing: inherit; color: #1a1a1a; font-family: Merriweather, Georgia, serif; font-size: 16px; margin-bottom: 1.75em;">
And while I didn’t plan it, doing free software became my career. I did free software because I was curious, because I could apply and hone my skills, because I could learn, because there were real challenges, because I could shape what I did and how I did it, because I could work in a brilliant team, because I got direct feedback from other contributors and from people using my software, because what I did mattered to others. Putting all that together made the ideal job, and it turned out that this is something companies need and pay for.</div>
<div style="background-color: white; box-sizing: inherit; color: #1a1a1a; font-family: Merriweather, Georgia, serif; font-size: 16px; margin-bottom: 1.75em;">
My learning experience in the free software community went beyond technology. I also learned a lot about people, about how they work together, about organization, about leadership. I became a member of the board of <a href="https://href.li/?http://ev.kde.org" rel="noreferrer" style="background-color: transparent; box-shadow: currentcolor 0px 1px 0px 0px; box-sizing: inherit; color: #007acc; text-decoration-line: none;">KDE e.V.</a>, the foundation behind the <a href="https://href.li/?http://kde.org" rel="noreferrer" style="background-color: transparent; box-shadow: currentcolor 0px 1px 0px 0px; box-sizing: inherit; color: #007acc; text-decoration-line: none;">KDE</a> community, and this was the ideal place to learn about a lot of the non-technical aspects.</div>
<div style="background-color: white; box-sizing: inherit; color: #1a1a1a; font-family: Merriweather, Georgia, serif; font-size: 16px; margin-bottom: 1.75em;">
I’m an engineering manager and distinguished engineer at <a href="https://href.li/?http://suse.com" rel="noreferrer" style="background-color: transparent; box-shadow: currentcolor 0px 1px 0px 0px; box-sizing: inherit; color: #007acc; text-decoration-line: none;">SUSE</a> today. My free software work was essential in developing the technical skills which make me a distinguished engineer and the leadership skills which make me a manager. I’m still contributing to free software. It’s part of my job. It still is a way to learn, and it keeps me grounded.</div>
<div style="background-color: white; box-sizing: inherit; color: #1a1a1a; font-family: Merriweather, Georgia, serif; font-size: 16px; margin-bottom: 1.75em;">
I have written and talked about this before, and somehow I feel this comes together nicely in three key points which summarize what I consider to be most important:</div>
<ul>
<li>You have to start somewhere: <a href="https://href.li/?http://blog.cornelius-schumacher.de/2014/05/my-first-patch.html" rel="noreferrer" style="background-color: transparent; box-shadow: currentcolor 0px 1px 0px 0px; box-sizing: inherit; color: #007acc; text-decoration-line: none;">My first patch</a></li>
<li style="box-sizing: inherit;">You need a community to support you: <a href="https://href.li/?http://blog.cornelius-schumacher.de/2011/10/fifteen-years-of-kde.html" rel="noreferrer" style="background-color: transparent; box-shadow: currentcolor 0px 1px 0px 0px; box-sizing: inherit; color: #007acc; text-decoration-line: none;">15 years of KDE</a></li>
<li style="box-sizing: inherit;">Don’t do it for the money: <a href="https://href.li/?http://blog.cornelius-schumacher.de/2013/05/dont-sell-free-software-cheap.html" rel="noreferrer" style="background-color: transparent; box-shadow: currentcolor 0px 1px 0px 0px; box-sizing: inherit; color: #007acc; text-decoration-line: none;">Don’t sell free software cheap</a></li>
</ul>
Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-26954247673284731862018-07-25T22:51:00.001+02:002018-07-25T22:52:08.423+02:00I'm going to Akademy, again<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
A little bit less than a month and I will be at <a href="https://akademy.kde.org/2018">Akademy</a> again, <a href="http://kde.org/">KDE</a>'s annual conference. This is the place where you can meet one of the most amazing open source communities. To me it's kind of my home community. This is where I have learned a lot about open source, where I contributed tons of code and other work, where I met a lot of awesome friends. I have been to most Akademy events, including the first KDE conference <a href="https://akademy.kde.org/2003">"Kastle"</a> in 2003. But I missed the one last year. I'm more than happy to be back this year in Vienna on August 11.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://akademy.kde.org/sites/akademy.kde.org/files/2018/going_to_akademy_banner.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="196" data-original-width="800" height="97" src="https://akademy.kde.org/sites/akademy.kde.org/files/2018/going_to_akademy_banner.jpg" width="400" /></a></div>
<br />
Akademy will start with the conference on the weekend, August 11-12. I was in the program committee this year and I think we have put together an <a href="https://conf.kde.org/en/Akademy2018/public/schedule">exciting program</a>. You will see what's going on in KDE, what the community is doing on their goals of privacy, community onboarding, and productivity, hear about the activities of <a href="http://ev.kde.org/">KDE e.V.</a>, get to know some of the students who work as part of one of the mentoring programs such as the <a href="https://summerofcode.withgoogle.com/">Google Summer of Code</a>, and much more.<br />
<br />
It's a special honor to me to present the <a href="https://community.kde.org/Akademy/Awards">Akademy Awards</a> this year together with my fellow <a href="https://dot.kde.org/2017/07/24/akademy-awards-2017">award winners</a> from last year. It was hard to choose because there are so many people who do great stuff in KDE. But we have identified a set of people who definitely deserve this prize. Join us at the <a href="https://conf.kde.org/en/Akademy2018/public/events/82">award ceremony</a> to find out who they are.<br />
<br />
Being at Akademy is always special. It's such an amazing group of people hold together by a common idea, culture, and passion. You could never hire such a fantastic group. So I feel lucky that I got and took the opportunity to work with many of these people over the years.<br />
<br />
It's also very rewarding to see new people join the community. Akademy always has this special mix of KDE dinosaurs, the young fresh people who just joined, and everything in between. The mentoring KDE does with great care and enthusiasm pays off, with interest.<br />
<br />
Vienna is calling. I'll quickly answer the call. See you there.<br />
<br />Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-47001850188341829432018-07-11T23:46:00.000+02:002018-07-11T23:46:26.672+02:00Freedom and Fairness on the WebThere is an ongoing debate about freedom and fairness on the web. I'm coming from the free and open source software community. From this perspective it's very clear that the freedoms to use, share, and modify software are the cornerstones of sustainable software development. They create the common base on which we can all build and unleash the value of software which is said to eat the world. And the world seems to more and more agree to that.<br />
<br />
But how does this look like with software we don't run ourselves, with software which is provided as a service? How does this apply to Facebook, to Google, to Salesforce, to all the others which run web services? The question of freedom becomes much more complicated there because software is not distributed so the means how free and open source software became successful don't apply anymore.<br />
<br />
The <a href="https://en.wikipedia.org/wiki/Facebook%E2%80%93Cambridge_Analytica_data_scandal">scandal</a> around data from Facebook being abused shows that there are new moral questions. The European <a href="https://gdpr-info.eu/">General Data Protection Regulation</a> has brought wide attention to the question of privacy in the context of web services. The <a href="https://www.techworld.com/developers/what-microsofts-acquisition-of-github-means-for-future-of-open-source-3680120/">sale of GitHub</a> to Microsoft has stirred discussions in the open source community which relies a lot on GitHub as kind of a home for open source software. What does that mean to the freedoms of users, the freedoms of people?<br />
<br />
I have talked about the topic of freedom and web services a lot and one result is the <a href="https://fairwebservices.org/">Fair Web Services project</a> which is supposed to give some definitions how freedom and fairness can be preserved in a world of software services. It's an ongoing project and I hope we can create a specification for what a fair web service is as a result.<br />
<br />
I would like to invite you to follow this project and the discussions around this topic by subscribing to the weekly <a href="https://tinyletter.com/fairwebservices">Fair Web Services Newsletter</a> I maintain for about a year now. Look at the <a href="https://tinyletter.com/fairwebservices/archive">archive</a> to get some history and <a href="https://tinyletter.com/fairwebservices">sign up</a> to get the latest posts fresh to your inbox.<br />
<br />
The opportunities we have with the web are mind-boggling. We can do a lot of great things there. Let's make sure we make use of these opportunities in a responsible way.<br />
<br />Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-60309124266150159312018-07-10T12:02:00.000+02:002018-07-10T12:02:02.714+02:00Mapping Open Source Governance ModelsI already posted the <a href="http://blog.cornelius-schumacher.de/2018/06/seven-lessons-of-open-source-governance.html">Seven Lessons of Open Source Governance</a> from <a href="https://youtu.be/o0rlDqjEfbM">my talk</a> at <a href="https://foss-backstage.de/">FOSS Backstage</a>. Another part of the talk was about a <a href="https://github.com/cornelius/open-source-governance">project to map open source governance models</a>. The idea is to have a machine-readable collection of data about how different projects implement their governance and a web page showing that as an overview. This should help with learning from what others have done and provide a resource for further analysis. It's meant as a map, not a navigation system. You still will have to think about what is the right thing to do for your project.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/o0rlDqjEfbM/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/o0rlDqjEfbM?feature=player_embedded" width="320"></iframe></div>
<br />
The project is up <a href="https://github.com/cornelius/open-source-governance">on GitHub</a> right now. For each project there is a <a href="https://github.com/cornelius/open-source-governance/blob/master/data/_template.yaml">YAML file</a> collecting data such as project name, founding date, links to web sites, governance documents, statistics, or maintainer lists. It's interesting to look into the different implementations of governance there. There is a lot of good material, especially if you look at the mature and well-established foundations such as <a href="https://www.apache.org/foundation/">The Apache Foundation</a> or the <a href="https://www.eclipse.org/org/foundation/">Eclipse Foundation</a>. I'm also looking into syncing with some other sources which have similar data such as <a href="http://chooseafoundation.com/">Choose A Foundation</a> or <a href="https://www.wikidata.org/wiki/Wikidata:Main_Page">Wikidata</a>.<br />
<br />
The <a href="https://cornelius.github.io/open-source-governance/">web site</a> is minimalistic now. We'll have to see for what proves to be useful and adapt it to serve these needs. Having access to the data of different projects is useful but maybe it also would be useful to have a list of code of conducts, a comparison of organisation types, or other overview pages.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-0agz7pi2Ckw/W0SCNZg4U2I/AAAAAAAASEA/fygRN4Gh07EMq9Vzp1ACsLk1abmnooc2ACLcBGAs/s1600/Screen%2BShot%2B2018-07-10%2Bat%2B11.52.44.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="433" data-original-width="623" height="222" src="https://3.bp.blogspot.com/-0agz7pi2Ckw/W0SCNZg4U2I/AAAAAAAASEA/fygRN4Gh07EMq9Vzp1ACsLk1abmnooc2ACLcBGAs/s320/Screen%2BShot%2B2018-07-10%2Bat%2B11.52.44.png" width="320" /></a></div>
<br />
If you would like to contribute some data about the governance on an open source project which is not listed there or you have more details about one which is already listed please don't hesitate to contribute. Create a pull request or an <a href="https://github.com/cornelius/open-source-governance/issues/new">open an issue</a> and I'll get the information added.<br />
<br />
This is a nice small fun project. <a href="http://hackweek.suse.com/">SUSE Hack Week</a> gives me a bit of time to work on it. If you would like to join, please <a href="mailto:schumacher@kde.org"><span id="goog_1597782498"></span>get in touch<span id="goog_1597782499"></span></a>.<br />
<br />Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-89880293162909275752018-06-27T21:33:00.000+02:002018-06-27T21:34:39.506+02:00Seven Lessons of Open Source GovernanceAt the <a href="https://foss-backstage.de/">FOSS Backstage conference</a> two weeks ago I talked about the spectrum of open source governance models. <a href="https://youtu.be/o0rlDqjEfbM">Watch the video</a> for all the details. One key part was the seven lessons I learned during my now almost twenty years of experience working in open source projects:<br />
<br />
<h3>
Be conscious about governance, not formal</h3>
Governance is important. Your project does have a governance model even if you don't think about it or if you don't write down the rules. It governs how your project will work and how people will be able to collaborate. It will also define a big part of your culture. You don't want to leave these things to chance. So be conscious about governance.<br />
<br />
That doesn't mean that you have to write rules and policies for everything. Often a healthy culture where people learn by following the example of the leaders and other members of the community works well. It might be tempting to create a formal structure to cover all kind of possible scenarios. But creating and maintaining policies is an expensive process. Don't be formal where you are not sure it's needed.<br />
<br />
<h3>
Spell out the fundamentals</h3>
There are some non-negotiables which have to be spelled out and written down. The license is the most important one for an open source project. You also might want to spell out some other aspects which define your culture such as values of your community or a code of conduct.<br />
<br />
<h3>
Learn from others</h3>
There is a huge number of open source projects out there. They cover many different use cases, types of technology, and flavors of community. Learn from them. Most things have already been invented.<br />
<br />
<h3>
Don't create foundations</h3>
You will know when to ignore this advice but generally don't create foundations. It's a lot of effort and needs ongoing work to keep up with the responsibilities and obligations you create by that.<br />
<br />
There is a number of umbrella organizations your project can join. This gives most of the benefits of having an own organization such as being able to handle money but with much less work.<br />
<br />
<h3>
Beware of growth</h3>
Different stages of an open source project need different types of governance. Growth will change the dynamics of your project. Be conscious and watch out for changes in the project which require changes in the governance.<br />
<br />
Also think about if you want to have growth at all and what kind of growth. Having many users is great but it also comes with responsibilities and expectations.<br />
<br />
<h3>
Keep your sanity</h3>
Your are working in the open. A lot of what you do is public. People will contact you and will want things from you. This can be overwhelming, especially if your project is successful. Find ways how you keep your sanity, how to avoid being stressed out by your open source work, how to keep a healthy balance between your open source work and the other parts of your life.<br />
<br />
<h3>
Be kind</h3>
That might be the most important advice. Be kind. Be respectful. Be aware of cultural differences. Make sure that people feel well and are happy in your community.<br />
<br />
It's software development. It's all about people after all.<br />
<div>
<br /></div>
Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-22755539358227203462018-02-02T18:01:00.003+01:002018-02-02T18:01:39.202+01:00Pair programming with git<div dir="ltr">
<a href="https://git-scm.com/">Git</a> is great. It took the crown of version control systems in just a few years. Baked into the git model is that each commit has a committer and one author. Ofen this is the same person. What if there is more than one author for a commit? This is the case with pair programming or with mob programming or with any other way of collaboration where code is produced by more than one person. I <a href="https://www.youtube.com/watch?v=usQgAy8YDVA">talked about this</a> at the git-merge conference last year. There are some workarounds but there is no native support in git yet.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
It seems that the predominant convention to express multi-authorship in git commits is to add a Co-authored-by entry in the commit message as a so-called trailer. This adds more flexibility than trying to tweak the author and committer fields and is quite widely accepted, especially by the git community.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
I'm happy that GitHub added <a href="https://github.com/blog/2496-commit-together-with-co-authors">support for the Co-authored-by</a> convention now. It makes multi-authorship more visible. That's a good thing.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
I did <a href="https://public-inbox.org/git/1485713194-11782-1-git-send-email-schumacher@kde.org/">some work</a> on adding native support for multiple authors in git. The direct approach of allowing more than one author field might be too intrusive due to the many possible side effects. But the Co-authored-by trailer is still a good solution. I have an <a href="https://github.com/cornelius/git/tree/authors-trailer">unfinished patch</a> to add some native support for that in git. It does need some more work, though.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Contributing to git is an interesting experience. The <a href="https://public-inbox.org/git/">git mailing list</a> is the central place. The contribution workflow is <a href="https://github.com/git/git/blob/master/Documentation/SubmittingPatches">well-documented</a>. It's good that Junio as maintainer has spelled out how he <a href="https://public-inbox.org/git/xmqq37fu5sc4.fsf@gitster.mtv.corp.google.com/">reviews patches</a> and what that means for contributors. And it's definitely fun to work on a self-contained C project.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
I'm looking forward to more multi-author support in git and GitHub. Pair-programming is a great model, and properly reflecting in the commit logs what happened when the code was written is the right thing to do.</div>
Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com1tag:blogger.com,1999:blog-5317236015572973172.post-3988034306469515702018-01-31T17:24:00.001+01:002018-01-31T17:24:28.017+01:00Ruby on openSUSE<div dir="ltr">
<a href="https://www.ruby-lang.org/">Ruby</a> is a wonderful programming language. Every year in December as a kind of Christmas present there is a new release. It's great to be on a language which is kept up to date but it comes with the challenge to manage multiple Ruby versions. There are a couple of solutions around such as <a href="https://rvm.io/">RVM</a>, <a class="" href="http://rbenv.org/">rbenv</a>, or <a href="https://github.com/postmodern/chruby">chruby</a> but they all have their drawbacks.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
What would a Linux distribution do? At <a class="gr-progress" href="https://opensuse.org/">openSUSE</a>, we package all the versions in the <a href="https://build.opensuse.org/project/show/devel:languages:ruby">Build Service</a>. We also package many gems but this is an effort which is sort of futile given the huge and growing number of gems and their versions. But you do reliably get the Ruby interpreter and gem tool as openSUSE package. To not create conflicts all the executables are suffixed with the Ruby version. That allows for parallel installation of multiple Ruby versions. It also works for all the executables installed through gems. The drawback is that you don't get the executable names you would expect because of the additional suffix.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
So how does the ideal solution look like? We want the distribution maintained interpreter packages, the co-installability of multiple Ruby versions, the native executable names, and the full power of gem.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
There is a nice solution to that. It looks like this:</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Native executable names can be achieved by creating symbolic links in the bin directory of the user for the tools which come with the Ruby package: ruby, gem, erb, and rake.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
Setting the GEMHOME environment variable to a directory in the user's home nicely isolates installation of gems. Parallel versions are handled by gem anyway. You don't need root to install gems and you can easily get rid of an installation if needed.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
By settin<span style="font-family: inherit;">g `<span style="background-color: white;">install: --no-format-executable` in your .gemrc </span>you ge</span>t executables with their native names in the GEMHOME directory. So you only have to set the PATH environment variable to let your shell pick them up so that you can call bundle, rspec, etc as it's meant to be.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
All this needs a little bit of setup work. To make this easier we have created a tool for openSUSE to manage this for you. It's called <a href="https://github.com/hennevogel/orr">orr</a>.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
With orr you can just do `orr install 2.4` and it installs the required packages, creates the links, and configures the environment variables so that you can use Ruby 2.4 right away. That works for any other version as well of course.</div>
<div dir="ltr">
<br /></div>
<div dir="ltr">
This setup brings you the best of both worlds, Ruby and openSUSE. Enjoy. And <a href="https://github.com/hennevogel/orr/issues">provide feedback</a>.</div>
Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-46105765974195861162017-04-23T14:51:00.000+02:002017-04-23T14:52:07.246+02:00SUSE Hack Week 15Back in February the fifteenth <a href="https://hackweek.suse.com/">SUSE Hack Week</a> took place. As always this was a week of free hacking, to learn, to innovate, to collaborate, and to have a lot of fun. I didn't have the full time, so I worked on a couple of small things and a few projects I maintain. I did want to summarize that, so here you go.<br />
<br />
The first project remained unfinished. I wanted to fill out Tim Urban's <a href="http://waitbutwhy.com/2014/05/life-weeks.html">Life Calendar</a> (you might have seen that on his excellent blog <a href="http://waitbutwhy.com/">"Wait But Why"</a>), but realized that it's not trivial to map dates to weeks in your life. So I wrote a <a href="https://github.com/cornelius/weekcalc">small tool</a> to calculate that, stopped after I had a failing test and had a rough feeling for how to put the dots on the life calendar.<br />
<br />
The second project was something I always wanted to do, implement <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Conway's Game of Life</a>. I had once started an implementation in 68000 assembler on the <a href="https://en.wikipedia.org/wiki/Amiga">Amiga</a> many years ago, but never finished it. Technology has advanced, so I decided to do at as ASCII pixel art. Who needs high resolution? The result turned out to be a bit more generic, as a command line tool to manipulate pixel matrices stored in text files, the <a href="https://github.com/cornelius/pixelist">Pixelist</a>. While I was at it, I also implemented <a href="https://github.com/cornelius/pixelist/blob/master/workers/ant.rb">Langton's Ant</a> and a <a href="https://github.com/cornelius/pixelist/blob/master/workers/crystal.rb">simulation of diffusion limited aggregation</a>.<br />
<br />
<a href="https://github.com/cornelius/given_filesystem">GivenFilesystem</a> is a Ruby gem I maintain for writing unit tests dealing with files on disk. It's quite convenient, if you test code, which writes files on disk and you want to have a well-defined environment without side effects for testing this code. There were some open pull requests. I reviewed and merged them and released <a href="https://rubygems.org/gems/given_filesystem/versions/0.2.0">given_filesystem 0.2.0</a>.<br />
<br />
I already wrote about <a href="https://inqlude.org/">Inqlude</a>, where I used Hack Week to finally publish the <a href="http://blog.cornelius-schumacher.de/2017/02/new-and-improved-inqlude-web-site.html">new Inqlude web site</a>, which is based on the work Nanduni did during last year's Google Summer of Code. It's a great improvement. I also did some cleanup work, including reviewing the <a href="https://github.com/cornelius/inqlude/issues">open issues</a>. So we have a nice <a href="https://github.com/cornelius/inqlude/milestones">roadmap</a> now. There is some interesting work to do. People who want to help with that are always welcome.<br />
<br />
<a href="https://github.com/openSUSE/trollolo">Trollolo</a> is another side project I work on from time to time. We use it for supporting our Scrum work flows at SUSE in Trello, such as generating <a href="https://github.com/openSUSE/trollolo#example">burndown charts</a>. I didn't get around to write code, but I consolidated some of the ideas floating around and put them into issues. This also is a nice opportunity, if you want to have some fun with writing a bit of Ruby code for a small project. <a href="https://github.com/openSUSE/trollolo/issues">Issues</a> are up for takers.<br />
<br />
Finally I worked a bit on the next iteration of my attempt to make git support multiple authors. This would make life with git in a pair programming situation much nicer. Based on the feedback I got on <a href="https://public-inbox.org/git/1485713194-11782-1-git-send-email-schumacher@kde.org/">my first iteration</a> and at the <a href="http://tapptic.com/highlights-of-the-gitmerge-conference-by-tapptics-development-team/">Git Merge conference</a>, I started to work on a version which puts the data into the trailers of the commit messages. This is less intrusive and with a bit of tooling it achieves similar results as the version which worked directly on the commit headers. I have something working, but it needs a rework of the trailer handling code. I'll continue to work on that when I find some more time to do that.<br />
<br />Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-25274119904025935122017-02-25T17:08:00.001+01:002017-02-25T17:08:22.497+01:00New and improved Inqlude web siteDuring <a href="https://summerofcode.withgoogle.com/archive/2016/projects/">last year's Summer of Code</a> I had the honor of mentoring <a href="https://github.com/nanduni-nin">Nanduni Indeewaree Nimalsiri</a>. She worked on <a href="http://inqlude.org/">Inqlude</a>, the comprehensive archive of third party Qt libraries, <a href="https://community.kde.org/GSoC/2016/StatusReports/Nanduni">improving the tooling to create a better structured web site with additional features such as categorization by topic</a>. She did an excellent job with it and all of her code ended up <a href="https://github.com/cornelius/inqlude">on the master branch</a>. But we hadn't yet made the switch to change the default layout of the web site to fully take advantage of all her work. As part of <a href="http://hackweek.suse.com/">SUSE's 15th Hack Week</a>, which is taking place this week, I took some time to change that, put up some finishing touches, and switch the Inqlude web site to the new layout. So here we are. I proudly present the new improved home page of <a href="https://inqlude.org/">Inqlude</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-JP_Sn_mlYJ8/WLDDRDze44I/AAAAAAAAJdA/ccwuZOPTBqUa8sH70Y5Zb-lamPSl8nkFQCLcB/s1600/Screenshot_20170225_003509.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="256" src="https://2.bp.blogspot.com/-JP_Sn_mlYJ8/WLDDRDze44I/AAAAAAAAJdA/ccwuZOPTBqUa8sH70Y5Zb-lamPSl8nkFQCLcB/s320/Screenshot_20170225_003509.png" width="320" /></a></div>
<br />
All libraries have additional meta data now to group them by a number of curated topics. You can see the topics in the navigation bar on the left and use them to navigate Inqlude by categories. The listing shows more information on first view, such as the supported platforms, to make it easier to find libraries according to your criteria without having to navigate between different pages. The presentation in general is cleaner now, and some usability testing has shown that the page works better now than before. In addition to the visible changes, Nanduni has also done quite a bit of improvements under the hood, including better automated testing. I'm proud of what we have achieved there.<br />
<br />
It always has been a privilege for me to act as mentor as part of Google's Summer of Code or other programs. This is one of the most rewarding parts of working in free software communities, to see how new people learn and grow, especially if they decide to stay involved after the program has ended and become valuable members of the community for the long term. Being able to help with that I feel is one of the most satisfying investments of your time in the community.Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com4tag:blogger.com,1999:blog-5317236015572973172.post-18734443700476917502016-10-14T16:30:00.002+02:002021-10-13T22:42:04.690+02:00Twenty Years of KDEOne afternoon twenty years ago <a href="https://en.wikipedia.org/wiki/Matthias_Ettrich">Matthias Ettrich</a> and <a href="https://plus.google.com/+MartinKonold">Martin Konold</a> sat at a stone table in the <a href="https://www.openstreetmap.de/karte.html?zoom=18&lat=48.53508&lon=9.03655&layers=B000TT">cafeteria of the university Tübingen</a> and talked computers. They talked Linux and they talked desktop. They talked about making Linux accessible to everyone. This was the moment where <a href="http://kde.org/">KDE</a> was born. This afternoon they walked away with a mission. Matthias went on to write the call to action to found the KDE project, and Martin to create the very first KDE mailing list <span style="font-family: inherit;">kde@fiwi02.wiwi.uni-tuebingen.de</span>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-UHCqxJ4tOrk/WACLJx47ExI/AAAAAAAAHoM/SV8zbz240R4wNNYMQ8PCr0Fntm2cHKBSQCLcB/s1600/kde-foundation.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="223" src="https://3.bp.blogspot.com/-UHCqxJ4tOrk/WACLJx47ExI/AAAAAAAAHoM/SV8zbz240R4wNNYMQ8PCr0Fntm2cHKBSQCLcB/s320/kde-foundation.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
On October 14th 1996 the <a href="https://www.kde.org/announcements/announcement.php">famous announcement</a> arrived on the newsgroups comp.os.linux.development.apps, comp.os.linux.misc, and de.comp.os.linux.misc:<br />
<br />
<span style="font-size: large;">New Project: Kool Desktop Environment. Programmers wanted!</span><br />
<br />
The new project quickly attracted a group of enthusiastic developers and they pushed out code with a frentic pace. kdelibs-0.0.1 was released in November, containing the first classes KConfig and KApplication. In May 1997 the young project presented at the <a href="http://www.linux-kongress.org/1997/">Linux-Kongress in Würzburg</a>. In August Kalle Dalheimer published the famous article about KDE in the German computer magazine c't which attracted a whole generation of KDE developers to the project. On Jul 12th 1998 KDE 1.0 was done and released. The community had not only implemented a friendly face for Linux but also a bunch of applications while going, including a full web browser.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://upload.wikimedia.org/wikipedia/commons/d/d9/KDE_1.0.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://upload.wikimedia.org/wikipedia/commons/d/d9/KDE_1.0.png" width="320" /></a></div>
<br />
KDE did <a href="https://www.kde.org/announcements/">hundreds more releases</a> over the years, continuously improving and maintaining the growing number of applications and amount of code. The community grew. It started to do annual conferences such as <a href="https://akademy.kde.org/">Akademy</a> or the <a href="https://desktopsummit.org/">Desktop Summits</a> and focused developer sprints such as the <a href="https://dot.kde.org/2012/02/17/kde-pim-sprint-10-accomplished">Osnabrück</a> or the <a href="http://randa-meetings.ch/">Randa</a> meetings. <a href="http://ev.kde.org/">KDE e.V.</a>, the organization behind KDE, which was founded as partner for the <a href="https://www.kde.org/community/whatiskde/kdefreeqtfoundation.php">KDE Free Qt Foundation</a>, grew with the community to be the corner stone of the organizational structure of KDE, using German association law as its secret superpower (read more about this in the book <a href="https://20years.kde.org/book/">"20 Years of KDE: Past, Present and Future"</a>).<br />
<br />
Millions and millions of people used KDE software over the years. Thousands of people contributed. KDE made <a href="https://blogs.kde.org/2014/02/09/kde-plasma-movies">appearances in Hollywood movies</a>, it was subject of theses and scientific studies, and it won <a href="https://www.kde.org/community/awards/">many</a> <a href="https://dot.kde.org/2014/03/18/kde-wins-linux-new-media-readers-choice-award-2014">awards</a>. KDE's founder, <a href="https://dot.kde.org/2009/11/06/matthias-ettrich-receives-german-federal-cross-merit">Matthias Ettrich even received the German Federal Cross of Merit</a>. The <a href="https://timeline.kde.org/">timeline of twenty years of KDE</a> is an impressive demonstration of what Free Software is able to achieve.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-VeOPC02614U/YWdC91yHyTI/AAAAAAAAekQ/-UiwyhYhQpMjrEwl57NC_RgyxC0dTrugwCLcBGAsYHQ/s3062/akademy2014_group_photo.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1027" data-original-width="3062" height="134" src="https://1.bp.blogspot.com/-VeOPC02614U/YWdC91yHyTI/AAAAAAAAekQ/-UiwyhYhQpMjrEwl57NC_RgyxC0dTrugwCLcBGAsYHQ/w400-h134/akademy2014_group_photo.png" width="400" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><a href="https://devel-home.kde.org/~duffus/akademy/2014/groupphoto/" target="_blank">Akademy 2014 group photo</a> by Martin Holec (<a href="http://creativecommons.org/licenses/by/4.0/" target="_blank">CC-BY</a>)</td></tr></tbody></table><br /></div>
<br />
KDE also was a breeding ground. Many people started their careers there. Hundreds of students went through mentoring programs such as the <a href="https://en.wikipedia.org/wiki/Google_Summer_of_Code">Summer of Code</a> or the <a href="https://season.kde.org/">Season of KDE</a>. Whole projects emerged from KDE, such as <a href="https://owncloud.org/">ownCloud</a> and its sibling <a href="https://nextcloud.com/">NextCloud</a>, <a href="https://kolab.org/">Kolab</a>, or <a href="https://en.wikipedia.org/wiki/KHTML">KHTML</a>, which turned into <a href="https://en.wikipedia.org/wiki/WebKit">WebKit</a> and then <a href="https://en.wikipedia.org/wiki/Blink_(layout_engine)">Blink</a>, powering most of web browsers on this planet today.<br />
<br />
Today Linux has reached world domination in various, sometimes surprising, ways. KDE has contributed its share to that. With <a href="https://www.kde.org/announcements/plasma-5.8.0.php">Plasma</a> it provides a slick and powerful desktop which does make Linux accessible to everyone. This mission has been accomplished. But there is more. Following <a href="https://dot.kde.org/2016/04/05/kde-presents-its-vision-future">KDE's vision</a> of bringing freedom to people's digital life there are amazing projects exploring new areas through Free Software, be it an application such as <a href="https://krita.org/">Krita</a> to bring freedom to digital painters, or a project such as <a href="https://www.wikitolearn.org/">WikiToLearn</a> to create collaborative text books for education. When KDE people meet you can feel the enthusiasm, the openness, and the commitment to change the world to the better just as in the days of the beginning.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-hO4YplTnSAA/YWdETNis_rI/AAAAAAAAekY/Eo_5nwejVn4_fNImeA9Ftu2PTscm9wLRwCLcBGAsYHQ/s1920/plasma-5.8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="1920" height="180" src="https://1.bp.blogspot.com/-hO4YplTnSAA/YWdETNis_rI/AAAAAAAAekY/Eo_5nwejVn4_fNImeA9Ftu2PTscm9wLRwCLcBGAsYHQ/s320/plasma-5.8.png" width="320" /></a></div><br /></div>
<br />
I joined KDE in 1999 with <a href="http://blog.cornelius-schumacher.de/2014/05/my-first-patch.html">my first patch</a> to <a href="https://userbase.kde.org/KOrganizer">KOrganizer</a>. I wrote a lot of code, maintained and founded applications, served on the <a href="https://ev.kde.org/corporate/board.php">board of KDE e.V.</a> for nine years. Most importantly I found a lot of friends. Neither my personal nor my professional life would be what it is today without KDE. I owe a lot to this community. Thank you for the last twenty years.<br />
<div>
<br /></div>
Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com3tag:blogger.com,1999:blog-5317236015572973172.post-31401548764669422472016-07-05T09:39:00.000+02:002016-07-05T09:39:41.002+02:00Is my OpenStack ready for Cloud Foundry?This year's first <a href="https://www.cloudfoundry.org/community/summits/cfsummit/?summitId=10016">Cloud Foundry Summit</a> took place in Santa Clara at the end of May. Beyhan Veli from SAP and I gave a presentation about the <a href="https://github.com/cloudfoundry-incubator/cf-openstack-validator">Cloud Foundry OpenStack Validator</a>, a new tool we developed as one of the results of our <a href="https://www.suse.com/newsroom/post/2015/suse-joins-cloud-foundry-foundation">collaboration with SAP</a> on the <a href="https://github.com/cloudfoundry-incubator/bosh-openstack-cpi-release">BOSH OpenStack Cloud Provider Interface project</a>.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/JJZWoq-wfLs/0.jpg" src="https://www.youtube.com/embed/JJZWoq-wfLs?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />
<br />
The validator gives operators of <a href="https://www.openstack.org/">OpenStack</a> systems a simple tool at hand to check if their OpenStack installation is ready to run <a href="https://www.cloudfoundry.org/">Cloud Foundry</a>. OpenStack comes with a lot of options and flexibility, and not all configurations are equally suitable to run Cloud Foundry. The requirements are documented and there are <a href="https://docs.cloudfoundry.org/deploying/openstack/validate_openstack.html">instructions how to manually check them</a>, but it requires quite some expert knowledge to get everything right.<br />
<br />
The validator is supposed to encapsulate the expert knowledge and instructions. It checks all requirements automatically and gives operators a report with the information if requirements are met or what they need to change. Cloud Foundry makes it simple for developers to deploy their applications. We try to capture the same spirit of simplicity for operators of Cloud Foundry on OpenStack.<br />
<br />
We are running a test pipeline for the continuous integration of the BOSH Cloud Provider Interface for OpenStack which is used in Cloud Foundry. This runs on <a href="https://www.suse.com/products/suse-openstack-cloud">SUSE OpenStack Cloud</a>. It works smoothly now, but while getting there it would have been great to have the validator to have a simple check of the setup without having to go through manual deployment and testing and finding issues with the setup late in the process. We captured some of this experience in code, and it is much easier with the validator now.<br />
<br />
The architecture of the validator is quite simple. It uses the same interfaces as BOSH and Cloud Foundry to access the underlying cloud infrastructure, so it closely resembles what is happening in production. Most of this goes through the Cloud Provider Interface. Some lower level checks directly use the OpenStack APIs.<br />
<br />
Tests are written in RSpec, which gives a nice concise way to describe and run the checks which are run by the validator. The validator is provided as a standalone tool, which can simply be run on the command line and will print out a report with what checks it has run, if they have succeeded, and what needs to be done if something is missing. In the end it will answer the question, if my OpenStack is ready to run Cloud Foundry, and this hopefully will be a big green yes.<br />
<br />
There is ongoing work to improve the validator, to add more checks, and make it more complete in checking the requirements of the full stack, from OpenStack, through the Cloud Provider Interface, to Cloud Foundry. This will be a continuous improvement process with new checks being added as they are found to be relevant when setting up OpenStack based Cloud Foundry installations. To make this easier and also allow to add custom checks, there likely will be some kind of plugin interface to add new checks to the validator.<br />
<br />
As it is using the abstract Cloud Provider Interface it might also be interesting to use the validator with other cloud infrastructures, and we need to evaluate how it plays with other approaches of validating cloud infrastructure. The project is <a href="https://www.pivotaltracker.com/projects/1456570">open</a>, the code is <a href="https://github.com/cloudfoundry-incubator/cf-openstack-validator">published as open source</a>, and we are welcoming feedback and discussions about its future direction.<br />
<br />
It was the first time I attended a Cloud Foundry Summit, and I really enjoyed the event. It covered a broad range of topics, <a href="https://youtu.be/PyMCTfbXQCU">inspiration</a>, <a href="https://youtu.be/9FKJ_cyGT1o">user experience</a>, <a href="https://youtu.be/I9mnSy2-jMk">deep dive into the technical foundation</a>, <a href="https://www.youtube.com/watch?v=lCLcdAZ6liM">science fiction</a>, and <a href="https://www.youtube.com/playlist?list=PLhuMOCWn4P9gGrKEtCBKYpEl5BXGBCsQZ">much more</a>. Good information, great inspiration, and meeting lots of awesome people, it was an excellent event.<br />
<br />
The <a href="https://www.cloudfoundry.org/community/summits/program/about/?summitId=11993">next summit</a> will be in Frankfurt, Germany, in September. I'm looking forward to see you there.<br />
<br />
<i>This blog entry was first published on the <a href="https://www.suse.com/communities/blog/openstack-ready-cloud-foundry/">SUSE blog</a>.</i><br />
<div>
<br /></div>
Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-83363993338912780292016-03-19T22:25:00.000+01:002016-03-19T22:25:58.899+01:00Students, join the Summer of Code!If you are a student, you have a unique opportunity right now. Join the <a href="https://developers.google.com/open-source/gsoc/">Summer of Code</a>, submit a project proposal until March 25th, and work with the people from an open source community during the summer. You will get paid for three months, you will become part of a community, and you will have the chance to make an important step in your career as a software developer. Google is organizing and sponsoring the program and hundreds of mentors from all kind of open source projects all over the world are ready to help you to do your next step in open source. I really would have loved to have such a program when I was a student. You are living in good times.<br />
<br />
I have been a mentor for <a href="http://kde.org/">KDE</a> and <a href="http://opensuse.org/">openSUSE</a> for many years and have worked with many amazing students. This year we made an extra effort in openSUSE and set up a <a href="http://101.opensuse.org/">new web site</a> to help <a href="http://101.opensuse.org/#mentor">mentors</a> and <a href="http://101.opensuse.org/#about">mentees</a> to find together. It collects a lot of information about how you can succeed as a mentor as well as a student, and provides a portal for all the <a href="https://github.com/openSUSE/mentoring/labels/GSoC">openSUSE project ideas</a> people from the community have come up with. KDE also has a list of exciting <a href="https://community.kde.org/GSoC/2016/Ideas">KDE project ideas</a>. Pick one or, even better, come up with your own.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-Z-l-IjMzNSY/Vu3DgMC7fEI/AAAAAAAAFn0/3mPwZbO598gPg-nocsKzCniDnEV070jfA/s1600/opensuse-101.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="279" src="https://4.bp.blogspot.com/-Z-l-IjMzNSY/Vu3DgMC7fEI/AAAAAAAAFn0/3mPwZbO598gPg-nocsKzCniDnEV070jfA/s320/opensuse-101.png" width="320" /></a></div>
<br />
There are so many interesting projects and lots of good students looking for working on them. While I try to help with the overall organization a bit, I limit myself to mentoring maximally one student during the summer, so that I can do a decent job with that and don't get stretched to thin. I have put up a couple of ideas in both projects, <a href="https://community.kde.org/GSoC/2016/Ideas#Inqlude">KDE</a> and <a href="https://github.com/openSUSE/mentoring/issues/created_by/cornelius">openSUSE</a>. If you would like to help with mentoring one, you are more than welcome. This way we could be able to provide mentoring for more projects. If you are willing to help please <a href="mailto:schumacher@kde.org">get in touch with me</a>. It is a great and rewarding experience to be an open source mentor.<br />
<br />
The KDE project, where I'm looking for a student, is <a href="http://inqlude.org/">Inqlude</a>, the Qt library archive. It's a nice project mixing an interesting set of technology, some Ruby, a bit of HTML and CSS, plus some C++ and Qt, and last but not least the opportunity to do some user interaction design. You will certainly learn something, and as it's a pretty small project within the universe of KDE, you will be able to make a significant impact during the summer and beyond.<br />
<br />
In openSUSE we have a couple of projects around <a href="http://machinery-project.org/">Machinery</a>, our pretty new systems management tool for inspecting, inventorying, validating, and migrating Linux systems. It comes from openSUSE, but it also runs on and supports other flavors of Linux. It's Ruby, and one of the interesting aspects is that we are doing serious test-driven development, code review, automatic tests on all levels, and more what constitutes the craft of software development. You will learn a lot there. <a href="https://github.com/mauromorales">Mauro</a> and <a href="https://github.com/aduffeck">Andre</a> are available as mentors there as well.<br />
<br />
There is one more project, I find really interesting. That's <a href="https://github.com/openSUSE/mentoring/issues/47">reproducible builds for openSUSE</a>. The <a href="http://reproducible-builds.org/">reproducible builds project</a> coming from Debian aims at making it possible to prove that a binary is actually built from the sources it claims to be built from. This can help to make build systems more efficient, but more importantly it helps to protects against malicious modification of binaries during the build process. This can have a <a href="https://reproducible-builds.org/docs/buy-in/">huge impact</a>. <a href="https://plus.google.com/108928462394474625418/posts/9HfmRMVvWGi">Bernhard</a> has started to do some work on it and by joining this you could make a real difference for free software by making sure users can trust in the software they run.<br />
<br />
I'm repeating myself, but this is a wonderful opportunity for mentors and students alike. Don't hesitate, get your proposals together, and <a href="https://summerofcode.withgoogle.com/get-started/">join the summer of code</a>.<br />
<br />Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-33547565102492458462015-12-07T23:23:00.000+01:002015-12-07T23:23:08.948+01:00How to run Rails with PostgreSQL on openSUSE Leap 42.1I wrote about <a href="http://blog.cornelius-schumacher.de/2013/04/how-to-run-rails-with-postgresql-on.html">how to run Rails with PostgreSQL on openSUSE 12.3</a> before. Things have changed since then. While Rails, PostgreSQL, and openSUSE are still excellent choices, new versions have been released. This warrants an update. So here is how to get a development environment of Rails with PostgreSQL running on the latest and greatest openSUSE Leap 42.1.<br />
<br />
Install PostgreSQL:<br />
<br />
sudo zypper install postgresql-server postgresql-devel<br />
<br />
Start the database server:<br />
<br />
sudo systemctl start postgresql<br />
<br />
Enable server to be started on boot:<br />
<br />
sudo systemctl enable postgresql<br />
<br />
Switch to the postgres user to set up the database:<br />
<br />
sudo su -l postgres<br />
<br />
Create database user:<br />
<br />
createuser -d USERNAME<br />
<br />
Return to your normal user, exchange the database driver in the Gemfile from sqlite3 to pg and run<br />
<br />
bundle install<br />
<br />
Change the configuration of the database driver to something like:<br />
<pre> default: &default
adapter: postgresql
username: cs
development:
<<: *default
database: APPNAME_development
test:
<<: *default
database: APPNAME_test
production:
<<: *default
database: APPNAME_production
</pre>
Create the databases:<br />
<br />
rake db:create<br />
rake db:migrate<br />
rake db:migrate RAILS_ENV=test<br />
<br />
That's it.<br />
Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com3tag:blogger.com,1999:blog-5317236015572973172.post-20115842927986909112015-09-14T16:00:00.000+02:002015-09-14T16:00:04.559+02:00184 Qt LibrariesWe have collected <a href="http://inqlude.org/all.html">184 third party Qt libraries</a> on <a href="http://inqlude.org/">Inqlude</a> now. This is a pretty complete map of the <a href="http://qt.io/">Qt</a> ecosystem, quite an impressive number, and lots of useful libraries extending Qt for many purposes.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-OlDauS1xh-o/TqlYqnvZHRI/AAAAAAAAAT0/W9OY3LLS3o0/s1600/inqlude-home.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="261" src="http://1.bp.blogspot.com/-OlDauS1xh-o/TqlYqnvZHRI/AAAAAAAAAT0/W9OY3LLS3o0/s320/inqlude-home.png" width="320" /></a></div>
<br />
Inqlude is based on a <a href="http://github.com/cornelius/inqlude-data">collection of manifests</a>. If you like to add or update a library, simply <a href="http://inqlude.org/contribute.html">submit a pull request</a> there. The <a href="http://github.com/cornelius/inqlude">inqlude tool</a> is used to manage the manifests, it generates the <a href="http://inqlude.org/">web site</a>, but you can also use it to validate manifests, or download libraries. There also is <a href="https://quickgit.kde.org/?p=inqlude-client.git">inqlude-client</a>, which is a C++ client for retrieving sources of libraries via the data on the Inqlude web site. It's pretty handy, if you want to integrate some library into your project.<br />
<br />
If you want to get a brief introduction into Inqlude, you might want to watch my <a href="https://twitter.com/kalledalheimer/status/387955780026400770">award winning</a> lightning talk from Qt Dev Days 2013: <a href="https://youtu.be/FXUh_XDKeDc">"News from Inqlude, the Qt library archive"</a>. It still provides a pretty accurate explanation of what Inqlude is about and how it works.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/FXUh_XDKeDc/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/FXUh_XDKeDc?feature=player_embedded" width="320"></iframe></div>
<br />
A big part of the libraries which are collected on Inqlude are coming from <a href="http://kde.org/">KDE</a> as part of <a href="http://api.kde.org/frameworks-api/frameworks5-apidocs/">KDE Frameworks</a>. We just released <a href="https://www.kde.org/announcements/kde-frameworks-5.14.0.php">KDE Frameworks 5.14</a>. It's 60 Qt addon libraries which represent the state of the art of Linux desktop development and more.<br />
<br />
Inqlude as well as KDE Frameworks are a community effort. Incidentally they both started at <a href="http://blog.cornelius-schumacher.de/2011/06/putting-things-together.html">a developer sprint at Randa</a>. Getting community people together for intense hacking and discussions is a tremendously powerful catalyst in the free software world. <a href="http://randa-meetings.ch/">Randa</a> exemplifies how this is done. The initial ideas for Inqlude were created there and last year it enabled me to <a href="http://blog.cornelius-schumacher.de/2014/08/announcing-first-inqlude-alpha-release.html">release the first alpha version of Inqlude</a>. These events are important for the free software world. You can help to make them happen by donating. <a href="https://www.kde.org/fundraisers/kdesprints2015/">Do this now</a>. It's very much appreciated.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://dot.kde.org/sites/dot.kde.org/files/RandaWork.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://dot.kde.org/sites/dot.kde.org/files/RandaWork.JPG" height="213" width="320" /></a></div>
<br />
One more recent change was the addition of a <a href="https://github.com/cornelius/inqlude/blob/master/accessing-inqlude-data.md#all-data-in-one-json">manifest for all libraries</a> part of the Inqlude archive. This is a JSON file aggregating all latest individual manifests. It makes it very easy for tools who don't need to deal with the history of releases to get everything in one go. The <a href="https://quickgit.kde.org/?p=inqlude-client.git">inqlude client</a> uses it, and it's a straight-forward choice for integration with other tools which would like to benefit from the data available through Inqlude.<br />
<br />
At the last <a href="https://wiki.qt.io/Qt_contributors_summit_2015">Qt contributors summit</a> we had some very good discussions about more integration. Integration with the <a href="https://wiki.qt.io/Qt-Installer-Framework">Qt installer</a> would allow to get third party library the same way you get Qt itself, or integration with <a href="http://www.qt.io/ide/">Qt Creator</a> would allow to find and use third party libraries for specific purposes natively in the environment you use to develop your application. One topic which came up was a classification of libraries to provide some information about stability, active development, and support. We will need to look into that, if there are some automatic indications we can offer for activity, or what else we can do to help people to find suitable libraries for their projects.<br />
<br />
It's quite intriguing to follow what is going on in the Qt world. As an application developer there is a lot of good stuff to choose from. Inqlude intends to help with that. The web site is there and will continue to be updated and there also are a number of <a href="https://github.com/cornelius/inqlude/blob/master/TODO">ideas and plans</a> how to improve Inqlude to serve this purpose. Stay tuned. Or <a href="http://inqlude.org/contribute.html">get involved</a>. You are very welcome.<br />
<br />Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com1tag:blogger.com,1999:blog-5317236015572973172.post-27512655208944877222015-04-13T07:48:00.000+02:002015-04-13T07:48:07.054+02:00Gone Hacking<div class="separator" style="clear: both;">
This week we have <a href="https://news.opensuse.org/2015/04/10/next-week-is-hack-week/">Hack Week</a> at <a href="http://suse.com/">SUSE</a>. The whole engineering team works on projects of their choice during this week. Everybody is free to innovate, to learn, and to collaborate with others.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-0ILSgSXBu6c/VSWmrByGRRI/AAAAAAAAEFI/uNFgdxa4wIk/s1600/IMG_20150408_234121.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-0ILSgSXBu6c/VSWmrByGRRI/AAAAAAAAEFI/uNFgdxa4wIk/s1600/IMG_20150408_234121.jpg" height="240" width="320" /></a></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
We are doing it for the twelfth time. Sometimes <a href="https://github.com/SUSE/hackweek/wiki/Kill-YCP-by-Mechanical-Translation">magic happens</a>, sometimes people learn a new skill, sometimes we become smarter because we know one more way how not to do things. We always have <a href="https://hackweek.suse.com/">lots of interesting projects</a>. Hack Week is an amazing experience. You actually <a href="https://news.opensuse.org/2015/03/24/hackweek-is-back-with-black-on-black/">can join</a>.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
I'm part of the organization team again, providing the environment where our engineers can be creative, productive, have fun, and learn. If I find some time to work on my own project I will tackle the one I worked on last Hack Week already, <a href="https://hackweek.suse.com/12/projects/524">Project MySelf</a>.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
I'm gone hacking now. See you next week.</div>
Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-62437194857049918412015-04-10T10:38:00.000+02:002015-04-10T10:38:31.902+02:0055.555 downloads of ownCloud in a boxRecently I passed a magic number with my <a href="https://susestudio.com/a/TadMax/owncloud-in-a-box">ownCloud in a box</a> appliance. It hit the five fives, 55.555 total downloads, on <a href="https://susestudio.com/">SUSE Studio</a>. It is the most popular download there. I would never have imagined that so many people would be interested in it and use it when I started with this. Amazing.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-UEIXzasgWGQ/VSeLE2_BfdI/AAAAAAAAEFg/xWCUKPXCh-c/s1600/owncloud-55555-lens.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-UEIXzasgWGQ/VSeLE2_BfdI/AAAAAAAAEFg/xWCUKPXCh-c/s1600/owncloud-55555-lens.png" height="237" width="320" /></a></div>
<br />
When Frank started to discuss the idea of <a href="https://owncloud.org/">ownCloud</a> and <a href="https://www.youtube.com/watch?v=5IdMWxtMMB8">announced it at Camp KDE</a> five years ago (another five, hooray) I was immediately intrigued. The idea of giving people control about their data in the cloud was powerful. Over the years it actually has gained even more power and relevance, as not only the cloud has become ubiquitous but also the threats to abuse it.<br />
<br />
With SUSE Studio it became so easy to build easily deployable images for a broad variety of targets, such as a live CD, a VMware image, or an installation disk for a physical machine, that I just had to do it. It follows along the philosophy of ownCloud to make it as easy as possible to run it, so many people can do it on their own. <a href="https://susestudio.com/a/TadMax/owncloud-in-a-box">ownCloud in a box</a> is an easy way to try it and get started.<br />
<br />
I'm looking forward to the next fives, whatever they will be. ownCloud has great success, and its development is coming along nicely, but I would still like to see some more things.<br />
<br />
From a technical point of view, client-side encryption would allow to use a hosted ownCloud without having to trust who is hosting the server. That would extend the benefit of controlling your data in the cloud to a whole new group of people, who can't or don't want to run their own server. There is <a href="https://github.com/owncloud/core/issues/106">some work going on</a> in this area. Let's see where this goes.<br />
<br />
From a community point of view it would be great, if the <a href="https://owncloud.org/wp-content/themes/owncloudorgnew/assets/files/owncloud-copyright-assignment-common.pdf">contributor agreement</a> would be a bit more fair towards contributors. It's quite asymmetric. You broadly give all rights on contributions to ownCloud Inc. but only get back what you would get anyway by publishing your code under the AGPL. I understand that this enables the ownCloud Inc. business model, and that a successful company is good for the community. I also have no doubt that the company is operating with the best intentions for the community. But if there needs to be a formal agreement, it would be nice if it would better take into account the interests of both sides. I'm sure there would be ways how to do that without jeopardizing the business model.<br />
<br />
In general I'm very impressed with how far ownCloud has come, and I'm happy that I could contribute my little part in it.<br />
<div>
<br /></div>
Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com3tag:blogger.com,1999:blog-5317236015572973172.post-73952689085429378252015-04-04T10:42:00.000+02:002015-04-04T10:42:43.370+02:00The Space-Time Continuum of KDE's ActivitiesThis is not about KDE e.V.'s new time travel program. This is about Plasma and its concept of <a href="https://userbase.kde.org/Plasma#Activities">Activities</a>. They have been a topic of hot debates. Some people love them, some don't care. <a href="https://plus.google.com/+BjornBalazs">Björn</a> called for <a href="http://user-prompt.com/help-to-find-better-metaphors/">finding a new metaphor</a> which better fits the mental model of the user, so that Plasma's activities can appeal to a larger group of people. Here are my thoughts.<br />
<br />
<h3>
Orthogonal or hierarchical?</h3>
The premise of Björn's quest for a new metaphor is that the current one doesn't fit the mental model of the people using activities, especially how activities are related to virtual desktops. He sees activities not as an orthogonal concept to virtual desktops, but as an hierarchical one.<br />
<br />
Matching the mental model of the user is crucial, because this defines how natural and easy it is to use them. You can learn abstract concepts and be trained in creating new mental models or in using rules to work with concepts without having a good deeper understanding. But this needs time and effort, which especially casual users are rightfully not willing to spend. And it's not fun.<br />
<br />
Orthogonal concepts are independent of each other, they live in different dimensions, you can use one without affecting the other. Hierarchical concepts use the same dimension, but there is an order, one concept is above the other, such as one providing a grouping for another.<br />
<br />
You could see activities as independent of virtual desktops, and that's how they are implemented. But there is one issue with that. The presentation we use addresses the same mental model, that of areas arranged in space.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-z-64VEsMhA0/VR-g9RmZbnI/AAAAAAAAEAs/5BYpSrFmrp8/s1600/activities-switcher.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-z-64VEsMhA0/VR-g9RmZbnI/AAAAAAAAEAs/5BYpSrFmrp8/s1600/activities-switcher.png" height="124" width="320" /></a></div>
<br />
That makes it hard for the user to know where things are. Does the screen present an activity or a desktop? Do I have to change the activity to go to my email client or do I have to switch desktops? When I go to the left or right, do I change activities or desktops? You can learn the concept of activities to be able to answer these questions, but if you use the same mental model for activities and desktops it can appear confusing and inconsistent.<br />
<br />
I think there are two ways to address this issue. One is to clearly express that the concepts are orthogonal in the user interface and the naming. The other is to make activities and virtual desktops fit into the same mental model by clearly separating their responsibilities, and eliminate the metaphors which use the same mental model for different parts of functionality.<br />
<br />
<h3>
Time</h3>
One powerful way of expressing the orthogonality of activities and virtual desktops would be to represent virtual desktops in space and activities in time. These are two different dimensions, and it actually would go quite naturally with what the two concepts represent.<br />
<br />
Virtual desktops are different segments of the space of your desktop. They are usually arranged in a plane and there is a relation of left/right and above/below. Desktop effects support this model by providing spacial transitions when switching desktops.<br />
<br />
Activities are less about where you do something but about when you do it. They represent projects or different times of your usage of a computer. You program as part of your job in your IDE in the morning, browse the web and watch YouTube movies in the evening, and once everybody else is sleeping you play a game. You use different applications at different times, need different configurations of your desktop, and there is a relation of before/after between these.<br />
<br />
To express this in the UI the activity switcher and configuration should not use concepts of space which overlap with how virtual desktops are presented. The closest idea I have seen is the activity switcher in Plasma Active. This uses a different and specific mechanism to switch activities. It even vaguely resembles a clock with its circular movement of activities when browsing through available activities, expressing the concept of time.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-a5N9CSzsb_k/VR-g8vpzLFI/AAAAAAAAEAk/3pX439Fzg1k/s1600/contour_activityswitcher_forblog.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://4.bp.blogspot.com/-a5N9CSzsb_k/VR-g8vpzLFI/AAAAAAAAEAk/3pX439Fzg1k/s1600/contour_activityswitcher_forblog.jpg" height="180" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: xx-small; text-align: start;">Screenshot from <a href="https://contourproject.wordpress.com/2011/07/12/the-idea-behind-contour/">contourproject</a></span></td></tr>
</tbody></table>
When going with this mental model and the corresponding metaphors, suitable names for activities and virtual desktops could be "times" and "spaces".<br />
<br />
<h3>
Space</h3>
Following the idea of a hierarchical relationship of activities and virtual desktops we could represent them using the same dimension, but express activities in groups of virtual desktops.<br />
<br />
Here is a mockup illustrating this idea:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-ATPZPbA5pd4/VR-g6Kgf_xI/AAAAAAAAEAc/0zzYgQUBKaA/s1600/activities-as-desktop-groups.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-ATPZPbA5pd4/VR-g6Kgf_xI/AAAAAAAAEAc/0zzYgQUBKaA/s1600/activities-as-desktop-groups.png" height="127" width="320" /></a></div>
<br />
Activities would control how groups of virtual desktops would behave. They would be used to define what wallpaper and which desktop widgets to show, what applications to start or stop, what settings for notifications or power saving to use, etc. All this would be tied to on what virtual desktop the user is. But there wouldn't be two different ways how to switch between desktops and activities, but there would only be one. Activities would implicitly be switched by switching between virtual desktops.<br />
<br />
So when you are at work you would be on the left side of your desktop with your corporate wallpaper, running IDE, web browser, what you need for work. The right side of your desktop with the games would be shut off. For a presentation you would go to the desktop which switches off notifications and power saving. Email would be there as a shared resource all the time. In your free time you would be on the right of your desktop, with nude pictures of your cat as background, running inappropriate videos in your web browser, and switching off everything else than your games for maximum frame rates. Or something like that...<br />
<br />
In some way activities would be a subset of virtual desktops and in some other way they would be a configuration for a virtual desktop. This follows along the lines of the "Different widgets for each desktop" configuration option, where each virtual desktop more or less gets its own activity.<br />
<br />
The hierarchy would not strictly be activities above and desktops below, but there would be two concepts, the group above the desktop, and the configuration below the desktop.<br />
<br />
This would need a few changes in representation of activities and virtual desktops, but it could better match the mental models of users, because concepts are clearly separated and existing understanding of controls can be used.<br />
<br />
When going with this mental model and the corresponding metaphors, suitable names for activities could be "desktop groups" and "desktop configuration", and virtual desktops would just remain "desktops".<br />
<br />
<h3>
Conclusion</h3>
Naming is important, but even more important is expressing concepts clearly and unambiguously. In the user interface behavior and visual representation trumps names. That said, for talking about the concepts, especially in code and documentation, good names are essential.<br />
<br />
To me seeing activities as configuration of groups of desktops is most natural. That matches my mental model.<br />
<div>
<br /></div>
Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com3tag:blogger.com,1999:blog-5317236015572973172.post-49988606479671658722014-09-04T12:56:00.000+02:002014-09-04T12:56:36.527+02:00Going to Akademy 2014I'm going to <a href="https://akademy.kde.org/2014">Akademy</a>. Now. I'm about to leave for the train to Brno and am looking forward to the people, presentations, discussions, workshops, hacking sessions, beers, ideas, and everything else which makes Akademy special every single time.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-kikrcJnja4g/VAg-PBqK39I/AAAAAAAACsE/8He3K7aOkd4/s1600/Banner400.going.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-kikrcJnja4g/VAg-PBqK39I/AAAAAAAACsE/8He3K7aOkd4/s1600/Banner400.going.png" height="142" width="320" /></a></div>
<br />
For me Akademy will start with a series of presentations:<br />
<br />
On Friday I'm presenting the report of the <a href="http://ev.kde.org/">KDE e.V.</a> board to the membership. It will be the last time I do this, as my term ends, and I will not run again. It's the end of nine years being on the board of KDE e.V. Not being on the board anymore will be a change, but I'm happy that we have great candidates to fill the open positions. I also still want to and will be involved in KDE e.V., but as a regular member.<br />
<br />
On Saturday I will give a short talk about <a href="http://inqlude.org/">Inqlude</a>. This is a side project, I really enjoy working on, and it gains more and more traction. With the <a href="http://kde.org/announcements/kde-frameworks-5.0.php">release of KDE Frameworks 5</a> we now have a <a href="http://inqlude.org/groups/kde-frameworks.html">huge number of libraries from KDE</a> listed there. There is plenty of awesome stuff to use for any Qt developer. I will report about the current state, and would also be happy to see more people getting involved with further developing the tool and the site.<br />
<br />
On Sunday I will give the community keynote. I will talk about how KDE makes you a better person. Some more information is on the dot in the <a href="https://dot.kde.org/2014/07/30/akademy-2014-keynotes-sascha-meinrath-and-cornelius-schumacher">announcement of the Akademy keynotes</a>, and the <a href="https://dot.kde.org/2014/08/27/meet-cornelius-schumacher-akademy-keynote-speaker">interview Carl did with me</a>. KDE is an amazing environment which has given me a lot. I will talk about how I see KDE enabling growth in people, and how we can maintain that.<br />
<br />
There are many more interesting talks in the program. I'm especially looking forward to Kevin's talks about <a href="https://conf.kde.org/en/Akademy2014/public/events/164">craftsmanship</a>, and <a href="https://conf.kde.org/en/Akademy2014/public/events/88">agile</a>, as I think we can learn some good things from what others and the software development community in general are doing. I'm also excited to hear more from the KDE Visual Design Group. They will talk about <a href="https://conf.kde.org/en/Akademy2014/public/events/95">community design</a> and <a href="https://conf.kde.org/en/Akademy2014/public/events/92">how designers tick</a>. The visual design group has made a big difference to KDE in a short time, and I'm looking forward to see more of that.<br />
<br />
But there is more than presentations to Akademy, meeting old and new friends, discussing technology, community, and many other things, hacking with others on the latest projects, and more...<br />
<br />
See you all in Brno tomorrow.<br />
<br />Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-79522529234049647132014-08-26T00:37:00.001+02:002014-08-26T00:37:32.578+02:00Running on Cheese and ChocolateThis is a big thank you, a thank you to all the people who made the <a href="https://community.kde.org/Sprints/Randa/2014">Randa Meeting 2014</a> possible, the people who invested their time and their energy to go there and <a href="https://community.kde.org/Sprints/Randa/2014#Blogs">work on free software</a>, and <a href="http://www.kde.org/fundraisers/randameetings2014/index.php">the people who made donations</a> to support this.<br />
<br />
Tons of things happened at Randa this year. Among other things there was lot of porting work to KDE Frameworks 5 done on <a href="http://kfunk.org/2014/08/17/randa-report-hacking-on-kde-and-meeting-friends/">kdevplatform</a>, <a href="http://soliverez.com.ar/home/2014/08/kmymoney-randa-wrap-up/">KMyMoney</a>, <a href="http://blog.davidedmundson.co.uk/blog/randa_gwenview">Gwenview</a>, <a href="http://kmix5.wordpress.com/2014/08/14/kmix-on-kde-frameworks-5/">KMix</a>, <a href="http://cordlandwehr.wordpress.com/2014/08/13/randa-report-artikulate-kf5-port-almost-done/">Artikulate</a>, and <a href="http://blog.dmaggot.org/2014/08/kig-on-frameworks/">Kig</a>. <a href="http://steckdenis.be/post-2014-08-18-google-summer-of-code-2014-qmljavascript-language-support-for-kdevelop-4-and-5.html">KDevelop got QML and Javascript support</a>, the <a href="http://api.kde.org/">API docs</a> got some love, <a href="http://apachelog.wordpress.com/2014/08/12/phonon-gstreamer-vlc-4-8-beta/">Phonon 4.8 Beta was released</a>, <a href="http://codingyuga.blogspot.ch/2014/08/its-all-about-hacking-adventures-and.html">KStars tools got polishing</a>, <a href="http://kdenlive.org/node/9182">Kdenlive got a roadmap</a>, and the <a href="http://blog.cornelius-schumacher.de/2014/08/announcing-first-inqlude-alpha-release.html">first alpha of the Inqlude tool was released</a>. We wrote <a href="http://creative-destruction.me/2014/08/25/how-to-contribute-to-the-kde-frameworks-cookbook/">a book</a>, and made a movie:<br />
<br />
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="270" src="//www.youtube.com/embed/yua6M9jqoEk" width="480"></iframe></div>
<br />
It can't be overestimated what kind of magic place <a href="http://blogs.fsfe.org/mario/">Mario</a> created at Randa. It is such a focused and supportive environment, that it's hard to not be productive. It generates a sense of community which reaches way beyond the meeting itself, and fuels so much of future work. I have <a href="http://blog.cornelius-schumacher.de/2014/07/the-one-donation-you-will-want-to-make.html">written about what makes this special spirit</a>. But I suspect that the real secret is that Mario runs us on Swiss cheese and chocolate for a week.<br />
<br />
So thanks again to the <a href="http://www.kde.org/fundraisers/randameetings2014/index.php#donorlist">donors</a>, to the <a href="http://randa-meetings.ch/">sponsors</a>, to the people who wrote code, or text, or took <a href="https://plus.google.com/photos/+BrunoFriedmann/albums/6046791152936467121">photos</a>, or brought their kids, or organized, or simply provided happiness, or helped in any other way. It was an awesome event.<br />
<br />Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com0tag:blogger.com,1999:blog-5317236015572973172.post-57464972120891315902014-08-13T17:21:00.000+02:002014-08-17T23:02:48.077+02:00The BookWhen inviting to the <a href="https://community.kde.org/Sprints/Randa/2014">Randa 2014</a> meeting, <a href="http://blogs.fsfe.org/mario/">Mario</a> had the idea to write a book about <a href="http://kde.org/announcements/kde-frameworks-5.0.php">KDE Frameworks</a>. <a href="http://linuxgrandma.blogspot.ch/2014/08/randa-meetings-sprint-kde-frameworks.html">Valorie</a> picked up this idea and kicked off a small team to tackle the task. So in the middle of August, Valorie, <a href="http://kshadeslayer.wordpress.com/">Rohan</a>, <a href="http://creative-destruction.me/2014/08/13/kde-frameworks-book-sprint-at-the-randa-meeting-2014/">Mirko</a>, <a href="https://plus.google.com/+BrunoFriedmann">Bruno</a>, and me gathered in a small room under the roof of the <a href="https://plus.google.com/photos/109140068131989370067/albums/6046791152936467121/6046791255713671202">Randa house</a> and started to ponder how to accomplish writing a book in the week of the meeting. Three days later and with the help of many others, Valorie showed around the first version of the book on her Kindle at breakfast. Mission accomplished.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-oWq9-DXPnx0/U-t6hO5myvI/AAAAAAAACjo/r0x7fRQ1qV0/s1600/cover-front.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-oWq9-DXPnx0/U-t6hO5myvI/AAAAAAAACjo/r0x7fRQ1qV0/s1600/cover-front.png" height="320" width="225" /></a></div>
<br />
Mission accomplished is a bit of an exaggeration, as you might have suspected. While we had a first version of the book, of course there still is a lot to be added, more content, more structure, more beautiful appearance. But we had quickly settled on the idea that the book shouldn't be a one-time effort, but an on-going project, which grows over time, and is continuously updated as the Frameworks develop, and people find the time and energy to contribute content.<br />
<br />
So in addition to writing initial content we spend our thoughts and work on setting up an infrastructure, which will support a sustained effort to develop and maintain the book. While there will come more, having the book on the Kindle to show it around indeed was the first part of our mission accomplished.<br />
<br />
Content-wise we decided to target beginning and mildly experienced Qt developers, and present the book in some form of cook book, with sections about how to solve specific problems, for example writing file archives, storing configuration, spell-checking, concurrent execution of tasks, or starting to write a new application.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-wKK9j-xb2Vs/U-t-TVTT7qI/AAAAAAAACj0/7iGkSfgOuKI/s1600/book-threadweaver.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-wKK9j-xb2Vs/U-t-TVTT7qI/AAAAAAAACj0/7iGkSfgOuKI/s1600/book-threadweaver.png" height="320" width="249" /></a></div>
<br />
<br />
There already is a lot of good content in our <a href="http://api.kde.org/frameworks-api/frameworks5-apidocs/">API documentation</a> and on <a href="http://techbase.kde.org/">techbase.kde.org</a>, so the book is more a remix of existing documentation spiced with a bit of new content to keep the pieces together or to adapt it to the changes between kdelibs 4 and Frameworks 5.<br />
<br />
The book lives in a <a href="http://quickgit.kde.org/?p=scratch%2Fgarg%2Fbook.git">git repository</a>. We will move it to a more official location a bit later. It's a combination of articles written in <a href="http://daringfireball.net/projects/markdown/syntax">markdown</a> and compiling code, from which snippets are dragged into the text as examples. A little bit of tooling around <a href="http://johnmacfarlane.net/pandoc/">pandoc</a> gives us the toolchain and infrastructure to generate the book without much effort. We actually intend to automatically generate current versions with our continuous integration system, whenever something changes.<br />
<br />
While some content now is in the book git repository, we intend to maintain the examples and their documentation as close to the Frameworks they describe. So most of the text and code is supposed to live in the same repositories where the code is maintained as well. They are aggregated in the book repository via git submodules.<br />
<br />
Comments and contributions are very welcome. If you are maintaining one of the Frameworks or you are otherwise familiar with them, please don't hesitate to let us know, send us patches, or just commit to the git repository.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-zSrPXHPOO9k/U-t_y_SCEzI/AAAAAAAACkA/wch5AzepksI/s1600/book-goldenfuture.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-zSrPXHPOO9k/U-t_y_SCEzI/AAAAAAAACkA/wch5AzepksI/s1600/book-goldenfuture.png" height="320" width="249" /></a></div>
<br />
<br />
I had fun writing some example code and <a href="http://quickgit.kde.org/?p=scratch%2Fgarg%2Fbook.git&a=tree&h=a1c8e6e912127a09311aa1a19d01ccc3a8816d59&hb=7429e1b12e6a523340086438983cf35b2f504c27&f=new-app">tutorials for creating new applications</a> and how to use <a href="http://api.kde.org/frameworks-api/frameworks5-apidocs/kplotting/html/index.html">KPlotting</a> and <a href="http://api.kde.org/frameworks-api/frameworks5-apidocs/kconfig/html/index.html">KConfig</a>. The group was amazing, and after some struggling with tools, network, and settling on what path to take, there was a tremendous amount of energy, which carried us through days and nights of writing and hacking. This is the magic of KDE sprints. There are few places where you can experience this better than in <a href="http://randa-meetings.ch/">Randa</a>.<br />
<br />
<b>Update:</b> Many people are involved with creating the book, and I'm grateful to everybody who is contributing, even if I haven't mentioned you personally. There is one guy I should have mentioned, though, and that is <a href="https://plus.google.com/+BrunoFriedmann">Bruno Friedmann</a> who made the wonderful cover and always is a source of energy and inspiration.<br />
<div>
<br /></div>
Cornelius Schumacherhttp://www.blogger.com/profile/07307631039358655025noreply@blogger.com2