<p>1+</p>
<div class="gmail_quote">Em 05/04/2011 21:48, &quot;Romain Pokrzywka&quot; &lt;<a href="mailto:romain.pokrzywka@kdab.com">romain.pokrzywka@kdab.com</a>&gt; escreveu:<br type="attribution">&gt; <br>&gt; On Thursday 31 March 2011 09:30:11 Pau Garcia i Quiles wrote:<br>
&gt;&gt; Hello,<br>&gt;&gt;<br>&gt;&gt; What do you think?<br>&gt;&gt;<br>&gt;&gt; <a href="http://www.elpauer.org/?p=687">http://www.elpauer.org/?p=687</a><br>&gt;&gt;<br>&gt;&gt; Copying and pasting for the sake of easier discussion:<br>
&gt;&gt;<br>&gt;&gt; --8&lt;----<br>&gt;&gt;<br>&gt;&gt; A while ago I said Koen from Emweb made an interesting proposal at<br>&gt;&gt; FOSDEM about emerge, the KDE Windows build tool.<br>&gt;&gt;<br>&gt;&gt; Yesterday, Jarosław Staniek and I reaffirmed our commitment to<br>
&gt;&gt; ‘emerge’. Today, I’d like to go a bit further: let’s bring more<br>&gt;&gt; developers to emerge by opening it up to other projects. Keep reading!<br>&gt;&gt;<br>&gt;&gt; What is emerge, why is it important and what was Koen’s proposal?<br>
&gt;&gt;<br>&gt;&gt; Fact: Microsoft Windows is very different to Unix in regards to<br>&gt;&gt; development.<br>&gt;&gt;<br>&gt;&gt; On Unix platforms -that includes Linux and Mac OS X-, software<br>&gt;&gt; isusually installed to /usr: applications in /usr/bin and /usr/sbin,<br>
&gt;&gt; libraries in /usr/lib, headers in /usr/include, common resources in<br>&gt;&gt; /usr/share, etc. Also, dependency management is usually something you<br>&gt;&gt; can count on: when you install kdelibs5-dev in Ubuntu, it will<br>
&gt;&gt; automatically install libqt4-dev, kdelibs5-data, libfreetype<br>&gt;&gt; (runtime), etc That makes setting up a development environment a very<br>&gt;&gt; easy task: look for shared libraries, header files, etc in the common<br>
&gt;&gt; places and you will probably find them.<br>&gt;&gt;<br>&gt;&gt; On Windows there is nothing like that. When you want to compile an<br>&gt;&gt; application, you need to provide (build and install) all its<br>&gt;&gt; dependencies, and you need to tell Visual Studio where to find<br>
&gt;&gt; everything. Even CMake usually needs some help in the form of a hint<br>&gt;&gt; for CMAKE_PREFIX_PATH. As you may imagine, building KDE, which has<br>&gt;&gt; more than 200 third party dependencies and tens of modules (and with<br>
&gt;&gt; the move + split to git, many more) becomes an almost insurmountable<br>&gt;&gt; task.<br>&gt;&gt;<br>&gt;&gt; ‘Emerge’ to the rescue: inspired by Gentoo‘s emerge, Ralf Habacker,<br>&gt;&gt; Christian Ehrlicher, Patrick Spendrin and others (yours faithfully<br>
&gt;&gt; included) developed a tool which downloads the source, configures,<br>&gt;&gt; builds, installs and packages KDE and its dependencies. It makes a<br>&gt;&gt; world of difference when building KDE. Actually, it makes building KDE<br>
&gt;&gt; on Windows possible. Once more: thank you very much guys, impressive<br>&gt;&gt; tool.<br>&gt;&gt;<br>&gt;&gt; There are two well-differentiated parts in emerge, the ‘engine’ and<br>&gt;&gt; the ‘recipes’.<br>&gt;&gt;<br>
&gt;&gt; The ‘engine‘ takes care of downloading the sources (tarballs,<br>&gt;&gt; checkouts from Subversion and git clones, etc) , configuring and<br>&gt;&gt; building for the usual build systems (QMake, CMake, NMake makefiles,<br>
&gt;&gt; etc), installing, bundling packages together and much more. All that<br>&gt;&gt; for four compilers (MSVC2008, MSVC2010, MinGW32 and MinGW-W64). It’s<br>&gt;&gt; the equivalent to Gentoo‘s emerge, Debian‘s dpkg +debhelper/cdbs or<br>
&gt;&gt; Homebrew and MacPorts for Macintosh.<br>&gt;&gt;<br>&gt;&gt; The ‘recipes’ are the package-specific “instructions” a particular<br>&gt;&gt; piece of software needs to build: what’s the name of the tarball? URL<br>
&gt;&gt; to download from? What versions are available? What build system to<br>&gt;&gt; use to configure and build? Does it need any Windows-specific patch?<br>&gt;&gt; They are written in Python using some helper modules ‘emerge’ provides<br>
&gt;&gt; (the debhelper-like part I mentioned above).<br>&gt;&gt;<br>&gt;&gt; Currently, there are about 70 recipes in emerge, organized in our<br>&gt;&gt; ‘portage tree’ (bear in mind the names are taken from Gentoo but the<br>
&gt;&gt; internals of the tool are completely different). With those 70<br>&gt;&gt; recipes, we are able to build most KDE modules. Problem is to provide<br>&gt;&gt; all the optional features, we are missing probably 200 to 250 more<br>
&gt;&gt; recipes. Given that KDE on Windows is quite short on developers, we<br>&gt;&gt; have to decide: either we fix bugs and improve the integration of KDE<br>&gt;&gt; on Windows, or we keep track of the dependencies. I won’t lie: for KDE<br>
&gt;&gt; on Windows, I’d rather focus on development than on packaging.<br>&gt;&gt;<br>&gt;&gt; Given that writing and maintaining recipes does not strictly require<br>&gt;&gt; programming skills (although they help  ), during my talk at FOSDEMI<br>
&gt;&gt; kept asking people to join the KDE on Windows team as packagers, even<br>&gt;&gt; if you know little to nothing about software development. If you think<br>&gt;&gt; about it, that’s what we have in Linux distributions: there are<br>
&gt;&gt; hundreds (thousands?) of packagers in Debian, Fedora, openSuse, etc<br>&gt;&gt; which take care of the ‘recipes’ to build software developed by<br>&gt;&gt; someone else (‘upstream’, in the parlance). What we have in KDE on<br>
&gt;&gt; Windows, where we are the KDE packagers, the KDE developers (upstream)<br>&gt;&gt; and the emerge developers, is actually an anomaly.<br>&gt;&gt;<br>&gt;&gt; Then Koen took the microphone and said: why don’t you open emerge to<br>
&gt;&gt; other projects?<br>&gt;&gt;<br>&gt;&gt; And I there I realized he was damn right<br>&gt;&gt;<br>&gt;&gt; We have developed an awesome tool to download, configure, build,<br>&gt;&gt; package and install third party software on Windows, to manage<br>
&gt;&gt; dependencies, to update, etc. For four compilers, no less. The<br>&gt;&gt; ‘engine’ of emerge is not really tied to KDE. We already have a lot of<br>&gt;&gt; recipes for software which is not KDE specific: openssl, Qt, bzip2,<br>
&gt;&gt; libpng, mysql, etc.<br>&gt;&gt;<br>&gt;&gt; I see no actual reason to disallow Gnome, GStreamer,OpenSceneGraph,<br>&gt;&gt; LibreOffice and many others in (assuming someone wants to take care of<br>&gt;&gt; them, of course – no, do not look at me! I don’t have time!).<br>
&gt;&gt; Currently, the only ‘barrier’ preventing those recipes in is ‘emerge’<br>&gt;&gt; is developed in the KDE repository and you need a KDE developer<br>&gt;&gt; account to commit your recipes. That’s about it.<br>&gt;&gt;<br>
&gt;&gt; There is also a ‘perception’ problem: “if emerge is developed in KDE,<br>&gt;&gt; it’s because it’s a KDE-thingy, right?”. Well, no. One way to avoid<br>&gt;&gt; that would be to graduate emerge from KDE and make it an independent<br>
&gt;&gt; project, one in which the current developers have accounts, and new<br>&gt;&gt; developers get an “emerge project” account instead of a KDE account to<br>&gt;&gt; commit recipes. Please note “graduating” does not mean “expelling”,<br>
&gt;&gt; “firing” or anything peyorative. It does not mean that ‘emerge<br>&gt;&gt; developers’ (engine and recipes) are worse than KDE developers, or<br>&gt;&gt; less KDE developers than our god David Faure: in KDE, we consider<br>
&gt;&gt; Debian, Fedora, openSuse, etc KDE packagers as equals, they are also<br>&gt;&gt; KDE developers and many of them are in the KDE eV(funny thing is I am<br>&gt;&gt; not).<br>&gt;&gt;<br>&gt;&gt; My wish for today: think of one application or library you’d like to<br>
&gt;&gt; see in Windows and become its maintainer in emerge for Windows.<br>&gt;&gt;<br>&gt;&gt; For now, let’s do this in the kde-windows mailing list and if this<br>&gt;&gt; idea succeeds, then we’ll talk about graduating. You could also try to<br>
&gt;&gt; add support for a new compiler (OpenWatcom, Intel C++, etc) but that’s<br>&gt;&gt; a lot more more and it’s not a priority now.<br>&gt;&gt;<br>&gt;&gt; PS: Yes, I know about CoApp, Microsoft‘s similar effort, with some<br>
&gt;&gt; magic involved. I’ve been watching and trying it since day 1. I’m<br>&gt;&gt; really interested. It’s just not there yet and I do not have spare<br>&gt;&gt; time to helpGarrett (hey Microsoft, hire me and I’ll have all the time<br>
&gt;&gt; in the world!  )<br>&gt;&gt;<br>&gt;&gt; --8&lt;----<br>&gt;&gt;<br>&gt;&gt; --<br>&gt;&gt; Pau Garcia i Quiles<br>&gt;&gt; <a href="http://www.elpauer.org">http://www.elpauer.org</a><br>&gt;&gt; (Due to my workload, I may need 10 days to answer)<br>
&gt;&gt; _______________________________________________<br>&gt;&gt; Kde-windows mailing list<br>&gt;&gt; <a href="mailto:Kde-windows@kde.org">Kde-windows@kde.org</a><br>&gt;&gt; <a href="https://mail.kde.org/mailman/listinfo/kde-windows">https://mail.kde.org/mailman/listinfo/kde-windows</a><br>
&gt; <br>&gt; I don&#39;t know if other people have commented on the blog page instead, but as far as I&#39;m concerned I find the idea to <br>&gt; make complete sense and be technically doable. <br>&gt; <br>&gt; Indeed a first good step towards opening emerge to non-kde communities would be to move it to an independent repository. <br>
&gt; The question is which one :)<br>&gt; <br>&gt; Anyway FWIW I like the idea!<br>&gt; Cheers<br>&gt; <br>&gt; -- <br>&gt; Romain Pokrzywka | <a href="mailto:romain.pokrzywka@kdab.com">romain.pokrzywka@kdab.com</a> | Senior Qt Software Engineer &amp; Trainer<br>
&gt; Klarälvdalens Datakonsult AB, a KDAB Group company<br>&gt; Tel. Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)<br>&gt; KDAB - Qt Experts - Platform-independent software solutions<br></div>