{"id":1246,"date":"2008-05-10T01:05:19","date_gmt":"2008-05-09T23:05:19","guid":{"rendered":"http:\/\/vizZzion.org\/blog\/2008\/05\/are-we-breathing-in-the-same-rhythm\/"},"modified":"2008-05-10T01:05:19","modified_gmt":"2008-05-09T23:05:19","slug":"are-we-breathing-in-the-same-rhythm","status":"publish","type":"post","link":"https:\/\/vizZzion.org\/blog\/2008\/05\/are-we-breathing-in-the-same-rhythm\/","title":{"rendered":"Are we breathing in the same rhythm?"},"content":{"rendered":"<p><a href=\"http:\/\/www.omat.nl\/drupal\/re-ramblings-6-month-cycles-and-plasma\">Tom<\/a> and<br \/>\n    <a href=\"http:\/\/aseigo.blogspot.com\/2008\/05\/re-re-ramblings-on-6-month-cycles-and.html\">Aaron<\/a><br \/>\n    discuss timing and release schedules, and development cycles. Aaron talks<br \/>\n    about trunk\/ and freezes therein should follow a natural lifecycle. This assumes that<br \/>\n    the whole KDE community lives and breathes as one individual, synchronised and all.<br \/>\n    So a development-and-release-cycle forces all developers into one rhythm. Everyone<br \/>\n    has to follow this one release rhythm. It&#8217;s a good idea, but I think we should also<br \/>\n    make the lives of those easier that choose another breathing ryhthm.<br \/>\n    There are a couple of things to consider here. The most obvious being that we need this<br \/>\n    flexibility anyway. We rely on certain release mechanisms and interface stability<br \/>\n    policies in other projects as well. (We partly solve this problem by providing abstraction<br \/>\n    layers, think phonon and solid). Now the interesting case is that Phonon, which is new in<br \/>\n    Qt&#8217;s 4.4 release is also provided by Qt. Phonon now breathes in a 9 month release cycle<br \/>\n    in Qt, and a 6 months one in KDE. So one could argue that it&#8217;s a smart idea to breathe<br \/>\n    in the same rhythm as Qt does. We could follow up every release of Qt with a KDE release.<br \/>\n    <br \/>This does not solve the initial problem I think, which I think is &#8220;different parts<br \/>\n    of KDE have different heartbeats&#8221;. Neither Tom nor Aaron have really<br \/>\n    questioned the way we currently deal with SVN before<br \/>\n    releases, so I&#8217;ll put on my shiny pink asbestos suit and do it.<\/p>\n<p \/>\n    What if we never froze trunk? Others (such as, incidentally<br \/>\n    Qt) have no freezes in trunk\/ and it seems to be a popular and well-working development<br \/>\n    style for some. When a release enters a freeze, a branch is created that will<br \/>\n    be stabilised towards the release. trunk\/ at the same time stays open for feature<br \/>\n    additions. The Golden Rule is &#8220;You don&#8217;t break trunk\/ (this is what branches are for)&#8221;.<\/p>\n<p \/>\n    (For those not too intimate with development schedules of KDE: trunk\/ is frozen<br \/>\n    roughly 2 months in advance of a release (supposedly every 6 months). After the<br \/>\n    actual release, trunk\/ is opened again for new features. Features that take longer<br \/>\n    than the allotted time  be developed in a branch and moved into trunk\/ &#8220;when<br \/>\n    they&#8217;re ready, but not during freeze&#8221;.)<\/p>\n<p >\n    The obvious downside of this &#8220;It&#8217;s always summer in trunk&#8221; is that you need to<br \/>\n    spend extra efforts to get people<br \/>\n    to stabilise, i.e. working in a stabilise-branch rather than in trunk\/. It needs more<br \/>\n    discipline, and probably puts some extra weight on the shoulders of those who simply<br \/>\n    care about good KDE releases. But as we all agree,<br \/>\n    SVN sucks for branching and merging. So right now we make it hard for people to work<br \/>\n    with different branches (stable\/ and trunk\/).<br \/>\n    It would allow those that need more time to<br \/>\n    do their thing to stay in sync with latest features. Basically, it would allow for<br \/>\n    different rhythms in the community. As this community grows and becomes more diverse<br \/>\n    this might pay off in the end.<br \/>\n    <br \/>New tools are on the horizon as well. Distributed version control systems allow<br \/>\n    for a more flexible way of sharing code between peers.<\/p>\n<p \/>\n    The thing is that we cannot really choose, people are using git anyway. And after<br \/>\n    having used it for a bit, and git-svn to interact with svn, I have to say that it<br \/>\n    makes a lot of things much easier. For one, it doesn&#8217;t force the commit policy of<br \/>\n    the project (&#8220;don&#8217;t break trunk&#8221; maybe ;-)) on yourself or your team, and it makes<br \/>\n    it easy to share code with others. That might want to work one a feature (or some<br \/>\n    surgery) together, but others (those that don&#8217;t want to be affected by this surgery<br \/>\n    just want their desktop to work. Now imagine these peeps, just start developing<br \/>\n    features by sharing a number of git trees and committing features to trunk\/ when<br \/>\n    they stabilise, i.e. presumably don&#8217;t cause regressions. It also nicely solves<br \/>\n    another issue we had recently. Rafael needs some time to finish Goya (have it API<br \/>\n    reviewed by Kevin ;-)), but Jeremy already wants to use this feature in<br \/>\n    GetHotNewStuff2. Those three share a &#8220;review&#8221; branch, which is merged when<br \/>\n    everyone&#8217;s happy (after having been announced on kde-core-devel. (Imagine<br \/>\n    integration of some sort of peer review system, like review board with<br \/>\n    this branch!). This development<br \/>\n    style can partly be tested by a subproject, of course. This subproject can then<br \/>\n    track trunk\/ from SVN and develops features in a distributed way, probably with<br \/>\n    another branch as master that sits on top of it and tracks. It&#8217;s not really a<br \/>\n    technical problem, after all, the tools should support the natural way of<br \/>\n    breathing for the community. For git in particular, I see the steep learning<br \/>\n    curve as one of the major show-stoppers right now. It would, at this point<br \/>\n    simply make the barrier of entering a project much higher, which is not a good<br \/>\n    thing. With distributed source code management, the question &#8220;Which one is<br \/>\n    the authoritative copy?&#8221; becomes a purely social thing. In the SVN case, it&#8217;s<br \/>\n    always the SVN server, in the DVCS (OMG!) case, it&#8217;s &#8220;who you trust&#8221;, that<br \/>\n    would be the version we publish via SVN.<\/p>\n<p \/>\n    Interestingly, the KDE&#8217;s Internationalisation people already work in a distributed<br \/>\n    fashion. In the Netherlands for example, Rinse collects translations; that are sent to<br \/>\n    him by the people in the translation team he reviews them and commits them to SVN.<\/p>\n<p \/>\n    Does this whole mess of an idea also contain a solution for &#8220;synching downstream&#8221;?<br \/>\n    One of the reasons why the Release Team initially decided to adopt 6 months<br \/>\n    releases is to make it easier<br \/>\n    for downstream (distributions, for example) to ship a recent version of KDE.<br \/>\n    The thing is that those distributions also have different heartbeats, OpenSuse comes<br \/>\n    8-9 monthly, Fedora comes 6 monthly, others as well. Now we&#8217;re trying to<br \/>\n    sync with upstream, in<br \/>\n    different heartbeats and downstream in different heartbeats. Right now, we have<br \/>\n    the unfortunate situation that we&#8217;re just too late for OpenSuse 11 (which is really<br \/>\n    one of the symptoms of &#8220;heartbeats out of sync&#8221;). At last year&#8217;s Akademy, Mark<br \/>\n    Shuttleworth brought up the idea of synching release over the whole Free software<br \/>\n    stack. While this is a nice vision, I do not see this happen &#8216;globally enough&#8217; so<br \/>\n    that it really works. The <a href=\"http:\/\/blog.red-bean.com\/sussman\/?p=90\">trend<br \/>\n    in the Free Software<\/a> world seems to be to move to a more distributed way<br \/>\n    of development.<\/p>\n<p \/>\n    This &#8220;we all breathe synchronously&#8221; might be one of the things that ties us<br \/>\n    together. We&#8217;ve seen this a lot in the time up to 4.0. That was where we as<br \/>\n    a community acted as one and lifted KDE from &#8216;utterly broken&#8217; into a<br \/>\n    releasable desktop. In KDE 4.x, things are fundamentally different. With all<br \/>\n    the new frameworks and libraries solidly in place now we we want this to be a<br \/>\n    stable platform for a long time. That means we develop features on top of it<br \/>\n    and fix bugs in the infrastructure and extend it &#8211; not break it. Basically that&#8217;s<br \/>\n    the &#8220;Binary Compatible until KDE 5.0&#8221; promise.<\/p>\n<p \/>\n    Moving from one, proven style of development to another is something we<br \/>\n    should not take lightly. On the one hand it would help us solving some<br \/>\n    scalability challenges in the community (such as too many different people,<br \/>\n    expectations, needs for their product and whatnot) and adopting new styles<br \/>\n    of collaboration in a community where you&#8217;re free to share.<\/p>\n<p \/>\n    Things such as new ways of working together and the ever more diverse community&#8217;s<br \/>\n    needs, expectations and lifestyles are not something we can ignore. We need to<br \/>\n    constantly look at ourselves and our environement and think about how we can<br \/>\n    improve it. Probably not one big step (&#8220;starting tomorrow we never freeze<br \/>\n    trunk again, promised&#8221;) but hundreds of little baby steps.<\/p>\n<p \/>\n","protected":false},"excerpt":{"rendered":"<p>Tom and Aaron discuss timing and release schedules, and development cycles. Aaron talks about trunk\/ and freezes therein should follow a natural lifecycle. This assumes that the whole KDE community lives and breathes as one individual, synchronised and all. So a development-and-release-cycle forces all developers into one rhythm. Everyone has to follow this one release&hellip; <a class=\"more-link\" href=\"https:\/\/vizZzion.org\/blog\/2008\/05\/are-we-breathing-in-the-same-rhythm\/\">Continue reading <span class=\"screen-reader-text\">Are we breathing in the same rhythm?<\/span> <span class=\"meta-nav\" aria-hidden=\"true\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29],"tags":[],"class_list":["post-1246","post","type-post","status-publish","format-standard","hentry","category-kde"],"_links":{"self":[{"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/posts\/1246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/comments?post=1246"}],"version-history":[{"count":0,"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/posts\/1246\/revisions"}],"wp:attachment":[{"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/media?parent=1246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/categories?post=1246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vizZzion.org\/blog\/wp-json\/wp\/v2\/tags?post=1246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}