marvil07.net - drupal-planethttp://marvil07.net/etiqueta/drupal-planet
esA release plan for contributed drupal extensionshttp://marvil07.net/blog/2017/a-release-plan-for-contributed-drupal-extensions
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p><em>tl;dr</em>: Review the plan at the end directly.</p>
<p>Software has a changing nature; Drupal and its extensions are not the exception.<br />
To be useful for a most of the users, those need to be on full releases, not only on the version control system; indeed the problem is not new and there is even a well-known phrase for one of its solutions: <em>release early, release often</em><br />
Therefore it is important to have a release plan.<br />
Following after some context and reasoning, I propose a couple of practical guidelines on release schedule for contributed drupal extensions that I intend to use: release weekly until stable, then once a month following core shedule.</p>
<h3>On the changing nature of software</h3>
<p>Software inherently tends to change, there are exceptions like embedded systems or really purpose-specific software.<br />
Even really solid software like <a href="https://www.gnu.org/software/coreutils/coreutils.html">GNU core utils</a> project, started on 1992, which provides tools that I consider among the most mature in the software space used daily, has 253 commits and three point releases in the last 12 months[1].</p>
<p>How much a software change depends on many factors.<br />
I would hypothesize that the most relevant factors are the age of the project, the environment around it, and the amount of people behind it.<br />
In this way, new projects change more than well established projects, and projects around dynamic environments which is also influenced by the amount of people around it, will also change more than the ones in environments with less participants or less technology changes.</p>
<h3>How changing are contributed drupal extensions?</h3>
<p>Drupal contributed extensions are naturally mainly influenced by drupal core, so let us examine a bit how changing is Drupal core.<br />
It is definitely on a dynamic environment, and I will argue that each major release can be considered a new project, making it really changing.</p>
<p>On the dynamic side, even if web standards changes slowly, and for good reasons, technologies around web tools are still constantly changing.<br />
The stack has changed a lot over the years, and even if some tools like apache and mysql/mariadb are still around, other parts of the stack has been changing a lot, especially around client side javascript. </p>
<p>Drupal core project code history is now <a href="https://www.drupal.org/commitlog/commit/2/008612ad4999138662a32abab2115cf3f03bca64">17 years old</a>, which seems like enough time to get into a stable state, especially if you are not yet part of the drupal community.<br />
But the drupal project has a history on rewriting the way its internal works, which has been <a href="https://dri.es/making-drupal-upgrades-easy-forever">argued</a> as one of the reasons why drupal can keep up with the changing environment around web technologies.<br />
It may be also a consequence of its amazingly collaborative community.<br />
And because of this rewriting between major versions, at least internally, each major release can be considered a new project, especially with <span class="geshifilter"><code class="text geshifilter-text">8.x.x</code></span>.<br />
A hint about it may be reflected in the fact that major contributors across different drupal core versions are mainly different; only a few one are as active across releases.</p>
<p>In consequence, drupal core is still a highly changing project, and in the same way its extensions inherit part of that changing nature; but a contributed drupal extension is not really only influenced by core.<br />
Given the amazingly high number of written extensions, it is only natural to start depending on other software pieces and make its maintenance more effective.<br />
For instance, currently there are 13432 and 4069, D7 and D8 compatible modules respectively.</p>
<p>In this way, one of the factors that will clearly influence a contributed extension is their dependencies, both inside and outside the drupal, and how changing they are.</p>
<p>Another factor is the amount of people behind it, not only developers, but also users reporting bugs.<br />
For drupal contributed extensions this vary a lot, but it is usually not that big.</p>
<p>For all this, contributed drupal extensions are usually in a changing environment.</p>
<h3>Commits are not releases: release early, release often</h3>
<p>As a contributed module developer myself, I will start by <em>mea culpa</em>.<br />
Sometimes I wrongly assume that when a change is inside git the work is done, but that may be only true for people willing to take the extra effort to get the changes from git, or assume the consecuences of using a development release.<br />
Commits are a developer tool inside the used version control system, but not necessarily something that is visible/usable for all.</p>
<p>As in many occasions, the problem is not new, and I find a pretty good answer for it on "The Cathedral and the Bazaar" chapter 2: <em>Release early, release often</em>.<br />
It mainly propose that to be able to tackle enough bugs to make the software usable, the amount of releases needs to be as fast as the pace of the development, even at the cost of some stability.<br />
I definitely recommend reading it fully for more context, and a lot more inspiring insights for any open source developer.</p>
<h3>How often is often? A release strategy plan
</h3><p>Granted, the answer is not a recipe, and it makes sense it is that way because it really depends on the project.<br />
On the following lines I will propose an specific release strategy for drupal contributed extensions.</p>
<p><a href="https://www.drupal.org/core/release-cycle-overview">Drupal core already has a release plan</a>, it is really detailed, so please review it if you have not done it yet.<br />
Minor releases are approximately available every six months, but security and bugfix releases for a given minor version branch are available monthly, on third and first Wednesday respectively.</p>
<p>Security releases for drupal contributed extensions are published <a href="https://www.drupal.org/node/101497">in coordination with the security team</a>, so there is no need to plan them here, they also happen on Wednesdays.</p>
<p>Making it simple to remember can help maintainers stick to it, so I will also be using Wednesdays as well as the weekday for releases. </p>
<h3>The plan</h3>
<p>I propose the following for each supported major branch in contributed extensions:</p>
<ul><li>release alpha/beta/rc weekly on Wednesdays, until a stable is ready</li>
<li>release bugfix releases once stable has been reached in the same schedule than core, i.e. the first Wednesday of the month;</li>
</ul><p>Looking back, it seems obvious and really simple, but if it is not documented somewhere, I will probably forget about it.<br />
Hopefully someone else finds this useful, or even better wants to do the same.<br />
Having a more predictable schedule always help to make better planning decisions.</p>
<p>I will start this week using this two guidelines and release a new version in the modules I maintain and there are pending changes to be released.</p>
<h3>Auto-notify maintainers</h3>
<p>Notifications may help us maintainers to stick to this, but I guess the plan itself was relevant enough keep the focus of this post.<br />
I may be exploring some solutions around it in the future.</p>
<p>[1] To reproduce statistics you can retrieve the main repository from <a href="https://git.savannah.gnu.org/cgit/coreutils.git">https://git.savannah.gnu.org/cgit/coreutils.git</a> and then run a couple of commands:<br />
<div class="geshifilter"><pre class="bash geshifilter-bash"><span class="kw2">git log</span> <span class="re5">--oneline</span> <span class="re5">--all</span> <span class="re5">--since</span>=<span class="st0">&quot;1 year ago&quot;</span> <span class="sy0">|</span> <span class="kw2">wc</span> <span class="re5">-l</span>
<span class="kw2">git log</span> <span class="re5">--oneline</span> <span class="re5">--all</span> <span class="re5">--since</span>=<span class="st0">&quot;1 year ago&quot;</span> <span class="re5">--decorate</span> <span class="sy0">|</span> <span class="kw2">grep</span> tag</pre></div></p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Etiquetas: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/etiqueta/drupal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal</a></li><li class="taxonomy-term-reference-1"><a href="/etiqueta/development" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">development</a></li><li class="taxonomy-term-reference-2"><a href="/etiqueta/drupal-planet" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal-planet</a></li></ul></div>Wed, 25 Oct 2017 01:51:57 +0000Marco Villegas194 at http://marvil07.nethttp://marvil07.net/blog/2017/a-release-plan-for-contributed-drupal-extensions#commentsRe-activating Vote Up/Downhttp://marvil07.net/blog/2017/re-activating-vote-updown
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p><a href="https://www.drupal.org/project/vote_up_down">Vote Up/Down</a> is a drupal module that uses <a href="https://www.drupal.org/project/votingapi">Voting API</a> to provide a way to vote.<br />
These notes are about part of the history of the module, and the recent news about it, including a couple of releases!</p>
<h3>A long time ago...</h3>
<p>The project itself is really ancient, it started in 2006 by frjo, in Drupal 4.7, and the same code has evolved until Drupal 7.<br />
I took co-maintainership of the project around 2009-2010, when I met with lut4rp, at the time the one maintainer of the project; who made a rewrite to modularize it at the start of 6.x-2.x.<br />
At that time we were still using CVS officially (and some of us git locally), and we were thrilled to receive and integrate <a href="https://www.drupal.org/node/615548">a patch from merlinofchaos</a>, that extended the module a lot, and make it more maintainable.<br />
With the past of the time, I became the only active maintainer of the module.</p>
<p>At the start I was pretty active as a maintainer there; but over the years, I have not been responsive enough, especially around the D7 port.<br />
During that time the community provided several patches and finally amitaibu created a sandbox, that I end up integrating into the project.<br />
Also, I managed to write another submodule, vud_field, in that process.<br />
For me it was clear, I <a href="https://www.drupal.org/node/1295574">advocated to remove vud_node, vud_term, and vud_comment form the project in favour of vud_field</a>.<br />
From my perspective it was more beneficial: (a) vud_field provided mostly the same functionality on nodes, taxonomy terms, and comments; but also (b) provided voting on any entity, embracing D7 new APIs; and also (c) made things more maintainable.<br />
Sadly, the removal did not happened at that time, and that was one of the reasons why D7 version was never out of alpha status.</p>
<h3>Recent news</h3>
<p>After quite some time of inactivity in vote_up_down, this January, I started to port the module to D8, but I only started: only 4 porting commits got into the new 8.x-1.x branch.</p>
<p>Then, I decided to add a GSoC project as student's suggestion to port Vote Up/Down to D8 for this year.</p>
<p>In preparation, this week I have branched out D7 into two different versions 7.x-1.x and 7.x-2.x, adding respective releases to make things more clear:</p>
<ul><li><em>7.x.1-x</em> (with <a href="https://www.drupal.org/project/vote_up_down/releases/7.x-1.0-beta1">7.x-1.0-beta1</a> release): It still keeps all submodules, but it is not planned to be maintained for much longer anymore. I applied there all related code pending about vud_node, vud_comment, and vud_term.</li>
<li><em>7.x-2.x</em> (with <a href="https://www.drupal.org/project/vote_up_down/releases/7.x-2.0">7.x-2.0</a> release): Instead, it only contains vud and vud_field, and it is planned to be maintained as the stable branch. Sadly there in not a complete upgrade path neither from 6.x-2.x nor from 7.x-1.x, but I <a href="https://www.drupal.org/node/1363928">added some starting code to do that on the related issue #1363928</a>, and maybe someone would like to continue that.</li>
</ul><p>Hopefully one of the students proposing the port to Vote Up/Down to D8 gets accepted.<br />
It will be great to see the module active again!</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Etiquetas: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/etiqueta/drupal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal</a></li><li class="taxonomy-term-reference-1"><a href="/etiqueta/development" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">development</a></li><li class="taxonomy-term-reference-2"><a href="/etiqueta/drupal-planet" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal-planet</a></li></ul></div>Thu, 20 Apr 2017 02:27:54 +0000Marco Villegas193 at http://marvil07.nethttp://marvil07.net/blog/2017/re-activating-vote-updown#commentsOn re-writing drupal contribution analyzer scriptshttp://marvil07.net/blog/2015/on-re-writing-drupal-contribution-analyzer-scripts
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p>In the last months I have been incrementally rewriting the <a href="https://www.drupal.org/sandbox/marvil07/1086028">scripts behind</a> the <a href="http://stats.marvil07.net/drupal-core/">stats I weekly publish about drupal core contributions</a>.</p>
<p>This post is about some background on why and how it happened.</p>
<p>tldr; see conclusion below and the link above with produced data.</p>
<h2>Why</h2>
<h3>Developer experience</h3>
<p>The way scripts worked in past was really different from what a (drupal) web developer is used to.<br />
It used many languages and script tools to be able to produce its output, increasing the difficulty to start modifying it.</p>
<p>Raw data extracted/processed was stored on CSV files, but interacting with it has proven to be tricky and error-prone. </p>
<h3>New/better tools available</h3>
<p>Since the time I originally wrote this better tools have been created or stabilized enough to be used.</p>
<h3>Buggy</h3>
<p>There was some places where the approach was just too fragile and bug prone, specially around the two places where message typos were tried to be corrected by guessing.</p>
<p>Also a Makefile was orchestrating how things were created, but it was just too big to be maintained manually.</p>
<h2>How</h2>
<h3>Restructure</h3>
<p>This project is about a lot of little pieces working together, a.k.a. glue code FTW, so when I wanted to rewrite several pieces in php, I was needing a way to help structure the code. Also, it is mainly about CLI scripts, so using <a href="http://symfony.com/doc/current/components/console/introduction.html">Symfony Console component</a> sounded like a good idea.<br />
And naturally I also wanted a dependency manager now that I was going to use an external code, I ended up with <a href="https://getcomposer.org/">composer</a>.</p>
<p>The target was then clear: to convert scripts piece by piece to php with a symfony console application containing several commands, one for each piece.</p>
<p>Extracting/processing information form git history was the first step. Doing the same than the python git wrapper library plus extra logic did not look like a good option: it is expensive in general because OS process forking is it as well.<br />
Now I'm using libgit2 library php binding and some git forking for non-trivial operationsvia the library, which improves a little performance given we have mainly C speed there.</p>
<p>After that I wanted to introduce some customization for end user, so I used configuration files in YAML, and used <a href="http://symfony.com/doc/current/components/yaml/introduction.html">symfony yaml component</a>.<br />
Three configuration files were added: a general configuration file, a mail to username mapping file and a commit message overrides file based on commit hashes.<br />
Overriding commit messages lets fix commits without replacing matching based on the message, but instead relays on commit hashes, making error-prone replacing disappear, mostly.</p>
<p>In early development it was clear automation was going to be a key part for this project to work because of the inter-dependencies during the run.<br />
The makefile orchestrating the run was good enough at the start, but it was really hard to maintain, so it is now dynamically generated, based on configuration files.</p>
<p>CSV files are now replaced with one table in a sqlite database per scenario, so it can be queried easily.</p>
<p>Drupal developers should now see more familiarity in this project: php is the main language used together with a database.</p>
<h3>Generalization</h3>
<p>This project has been about drupal core for a while, but the way used to extract information is not drupal core specific, but drupal community specific.<br />
There was not really anything apart from scripts flexibility preventing to use it for non-core drupal projects, so I added missing abstraction pieces in order to do it.</p>
<h3>New features</h3>
<p>This restructure has proven useful for me: I could add several more pieces relatively easy.</p>
<p>CSV and files with username:score are useful, but html is more natural to show in a browser, so I added variations to generate html files of scoreboards. I started using twig to handle related templates.</p>
<p>Data can be seen in context better when shown in a plot. I added some extra generation code using also the flot library to draw some indicators.</p>
<p>It also adds some inter-scenario comparisons, e.g. core's 7.x vs 8.0.x branches indicators.</p>
<h3>Automation</h3>
<p>This set of scripts historically has been tricky to setup/install.<br />
In the new runner branch I am now maintaining a script to automate the process even more.<br />
It is mainly about calling the right commands in the right environment and hopefully also works as always updated documentation on how to run them.</p>
<h2>Conclusion</h2>
<p>In conclusion, this rewrite:</p>
<ul><li>Improves developer experience and maintainability in general: less languages/tools, more unification on overall process with clear points to override data.</li>
<li>Generalizes the target to be usable by any drupal project, e.g. contribute modules, so not only core benefits with it.</li>
<li>Restructures logic using new/better tools for some tasks: libgit2, composer, symfony components, flot and twig.</li>
<li>Stores extracted information in a sqlite database table, allowing new indicators to be extracted more naturally through queries.</li>
</ul><h2>Future</h2>
<p>This code is far from perfect, but I am glad of how it end up, it's cleaner and easier to develop/maintain/improve.</p>
<p>Hopefully someone else finds this as useful as me. If you want to help/fix/request a feature please use the <a href="https://www.drupal.org/project/issues/1086028">relevant issue queue</a>, where I try to keep pending stuff, patches there are welcome!</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Etiquetas: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/etiqueta/drupal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal</a></li><li class="taxonomy-term-reference-1"><a href="/etiqueta/codeswarm" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">codeswarm</a></li><li class="taxonomy-term-reference-2"><a href="/etiqueta/statistics" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">statistics</a></li><li class="taxonomy-term-reference-3"><a href="/etiqueta/development" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">development</a></li><li class="taxonomy-term-reference-4"><a href="/etiqueta/tag-cloud" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">tag cloud</a></li><li class="taxonomy-term-reference-5"><a href="/etiqueta/drupal-planet" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal-planet</a></li></ul></div>Sat, 03 Jan 2015 18:56:16 +0000Marco Villegas171 at http://marvil07.nethttp://marvil07.net/blog/2015/on-re-writing-drupal-contribution-analyzer-scripts#commentsAnother try to automate drupal core contribution statistics generationhttp://marvil07.net/blog/2012/another-try-to-automate-drupal-core-contribution-statistics-generation
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p>I have been writing about Drupal core statistics several times in the past, and incrementally, I have been automating the process of extract/sanitize contributors from commit messages and generating visualizations of the contributions.</p>
<p>The code is maintained on one of my drupal.org sandboxes, <a href="http://drupal.org/sandbox/marvil07/1086028">Drupal contribution analyzer</a>, but I know, specially for the dependencies, that is not really trivial to run.</p>
<p>This time, instead of just presenting a new set of the statistics/visualizations output, I am glad to announce that I will be releasing a new version of the statistics and the visualizations once per week. In that way, the results will be available while I iterate on the code.</p>
<p>The site where the data will be available will be <a href="http://stats.marvil07.net/drupal-core">Drupal core contribution statistics website</a>.</p>
<p>If you want to make any suggestion, please do it on the <a href="http://drupal.org/project/issues/1086028">project's issue queue</a>.</p>
<p>Following, one of the images generated, just to provide an idea of what is there.</p>
<p><a href="http://www.flickr.com/photos/marvil07/8010036825/in/photostream"><img src="http://farm9.staticflickr.com/8033/8010036825_bca3c04a52.jpg" alt="Drupal 8.x participation by commits no maintainers (20120919)" /></a></p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Etiquetas: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/etiqueta/drupal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal</a></li><li class="taxonomy-term-reference-1"><a href="/etiqueta/codeswarm" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">codeswarm</a></li><li class="taxonomy-term-reference-2"><a href="/etiqueta/statistics" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">statistics</a></li><li class="taxonomy-term-reference-3"><a href="/etiqueta/development" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">development</a></li><li class="taxonomy-term-reference-4"><a href="/etiqueta/tag-cloud" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">tag cloud</a></li><li class="taxonomy-term-reference-5"><a href="/etiqueta/drupal-planet" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal-planet</a></li></ul></div>Sun, 23 Sep 2012 16:55:42 +0000Marco Villegas161 at http://marvil07.nethttp://marvil07.net/blog/2012/another-try-to-automate-drupal-core-contribution-statistics-generation#commentsA late note about DrupalCon Chicagohttp://marvil07.net/blog/2011/a-late-note-about-drupalcon-chicago
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p>I was lucky to receive <a href="http://chicago2011.drupal.org/news/drupalcon-chicago-scholarship-recipients-announced">one of the partial scholarships</a> to attend <a href="http://chicago2011.drupal.org">DrupalCon Chicago 2011</a>. So, thanks for giving me the opportunity to be there!</p>
<p>As any drupalcon I had been part of, the way I feel inside it is just awesome. Actually take almost the whole Sheraton for a week was insane! Let me tell a little bit about my stay there.</p>
<h2>People</h2>
<p>Definitely the first point. Drupal community is the most friendly and hoping-to-collaborate people I have met in open source community, so meeting those people in real life is just better.</p>
<p>This time there was something special. The <a href="http://drupal.org/node/1068664">Great Git Migration finally was moved to production on Drupal.org</a> on February 24th. I have been participating on the migration team, and I already knew some of them in person from before. But not all, so I have experienced again that great special feeling to meet in person for the first time people I have been interacting with almost every day since November or before.<br />
Actually I was on the marriage of two of them inside the conference! Congratulations again Melissa and Michael!</p>
<p>I also met many people on casual conversations, meet many know developers again, I mean, a week of awesomeness.</p>
<h2>Core conversations</h2>
<p>I really enjoyed to be part of this track of the conference. It amazing to shared thoughts with people really involved in the project(aka the ones to make drupal happen).</p>
<p>It was really nice that the space was open for anyone who would like to participate.</p>
<p>Three presentations was around the deployment problem: <a href="http://chicago2011.drupal.org/coreconv/why-our-approach-deployment-problem-all-wrong">Why our approach to the deployment problem is all wrong</a>(by Greg Dunlap), <a href="http://chicago2011.drupal.org/coreconv/configuration-management-drupal-8">Configuration Management in Drupal 8</a>(by Howard Tyson) and <a href="http://chicago2011.drupal.org/coreconv/unifying-drupal-configuration">Unifying Drupal configuration</a>(by David Strauss ). Well, after a little time <a href="http://drupal.org/user/128537">heyrocker</a> <a href="http://buytaert.net/configuration-management-in-drupal-8">was chosen as the first core initiative owner</a> for this, so we <em>will have a solution in core for this</em> finally!</p>
<p>There was one presentation about core search, <a>Core Drupal Search Architecture for D8</a>, by Jennifer Hodgdon and Peter Wolanin. They definitely agree that a lot of work is needed to be done for drupal 8. Actually they also mentioned <a href="http://drupal.org/project/search_api">Search API</a>, the contrib module created by <a href="http://drupal.org/user/205582">Thomas</a> in GSoC 2010. I was really interested in this since I am now maintaining <a href="http://drupal.org/project/xapian">Xapian integration</a>, which implement both core search and Search API with Xapian. So, probably Search will be another Core initiative for Drupal 8, awesome news for me.</p>
<p>Leisa Reichelt and Randy Fay presented <a href="http://chicago2011.drupal.org/coreconv/redesigning-issue-queue">Redesigning the Issue Queue</a>, a session that really inspire us about the future of our development communication hub, Drupal.org. Randy pointed some issues that will help in the short term, and Leisa help us to think in a long solution. Actually just after the session, she started the <a href="http://groups.drupal.org/prairie-initiative">Prairie group</a>, which is the right place to get involved.</p>
<p>Finally, Dries presented <a href="http://chicago2011.drupal.org/coreconv/drupal-8-how-do-we-do">Drupal 8: How do we do that?</a>, a summary session of the keynote, that tried to start the conversation about how the development of the Drupal 8 is going to be a little different. By the way, during the presentation Sam(sdboyer) help Dries in the creation of the <em>8.x</em> branch: epic!</p>
<h2>Sprints</h2>
<p>One of the nicest things of drupalcons is that you can sprint, basically anywhere, anytime if you wave network and power.</p>
<p>This time was not so productive for me, but I actually made some progress on some issues, open 7.x branch on vote up/down, and enjoy a lot hacking with many friends in the same room on different days :-)</p>
<h2>BoFs</h2>
<p>This conversations are a pretty good space to know people with your same interests.</p>
<p>Like I mentioned after the core conversation about search, Jenniffer scheduled a <a href="http://chicago2011.drupal.org/conference/bof/search-api">BoF about it</a>. I was trying to point how the current contrib Search API is doing a good job. But she also makes me realize that we can improve it a lot, and we end up suggesting to use CTools plugins all over there. Several more conclusions and suggestions/details can be found on the wiki <a href="http://drupal.org/node/1095092">Search module as API framework</a> created for that propose. Actually I have also seen that Thomas has <a href="http://groups.drupal.org/node/135544">proposed a GSoC project to improve Search API contrib</a> this year, so there will be news on this soon \o/</p>
<p>In the <a href="http://chicago2011.drupal.org/conference/bof/google-summer-code-bof">Google Summer of Code BOF</a>, I finally decided to be a mentor for Drupal this year! Sumit did a really great job around drupalcon looking for mentors in the conference. Thanks Sumit!</p>
<p>There was also a <a href="http://chicago2011.drupal.org/conference/bof/git-team-photo-and-eliza411-halstead">Git Team Photo session</a>, where all the migration team joined to talk about <a href="http://drupal.org/community-initiatives/git/phase-3">Git Phase 3</a>, take a photo an attend eliza411 and halstead marriage :-)</p>
<p>I also scheduled a session <a href="http://chicago2011.drupal.org/conference/bof/drupal-contributions-visualization">Drupal contributions visualization</a>, but it just did not work because I scheduled it at the same time that the <a href="http://www.lullabot.com/blog/come-party-with-us">Lullabot party</a> was taking place. Anyway, it helps me to <a href="http://drupal.org/sandbox/marvil07/1086028">move the scripts I wrote to Drupal.org</a>, now that we have sandboxes.</p>
<h2>Sessions</h2>
<p>I also attended some of the sessions, but instead of mentioning all of them, I will try to recommend(from those I attended) the ones that I like the most. Please note that following the links you will find the videos ;-)</p>
<ul><li><a href="http://chicago2011.drupal.org/keynote-dries-buytaert">Dries keynote</a>: Definitely a must see. It was great when he mention the new model Core development will be trying to use now that Git our version control system. Each major set of related features will be called initiatives, and instead of having one co-maintainer, each initiative will have its own "intitiative owner". That is a key decision to start embracing the distribute nature of Git, and will let us scale the development.</li>
<li><a href="http://chicago2011.drupal.org/sessions/git-phase-next-promised-land">Git Phase Next: The Promised Land </a>: Angie, Melissa, Derek and Sam made a pretty good summary of what we have now on Drupal.org and mention some ideas that we will be implementing on Phase 3.</li>
</ul><p>I also need to mention two of the sessions <a href="http://www.koumbit.org/en/articles/my-stay-drupalcon-chicago">anarcat have mentioned in his post</a>, because they are great:</p>
<ul><li><a href="http://chicago2011.drupal.org/sessions/aphorisms-api-design">Aphorisms of API design</a>: Crell talking about good practices on the architect level for making APIs.</li>
<li><a href="http://chicago2011.drupal.org/sessions/show-me-money">Show me the money</a>: This is a continuation of the blog post <a href="http://www.lullabot.com/blog/show-me-money">Show me the money!</a> wrote by Liza Kindred, about what are the prices out there that companies are using. This is always interesting, and make us question about the rates we use.</li>
</ul><p>And if you have a user id on Drupal.org you probably want to see Angie and Greg's presentation <a href="http://chicago2011.drupal.org/sessions/scaling-drupal-community">Scaling the Drupal Community</a>.</p>
<p>Thanks drupal community to be so great! I do not know if I would be able to attend DrupalCon London 2011 (I just feel guilty to ask for scholarship again :-p), so I hope to see you soon and keep the great work!</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Etiquetas: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/etiqueta/software-libre" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">software libre</a></li><li class="taxonomy-term-reference-1"><a href="/etiqueta/drupal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal</a></li><li class="taxonomy-term-reference-2"><a href="/etiqueta/asombroso" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">asombroso</a></li><li class="taxonomy-term-reference-3"><a href="/etiqueta/drupalcon" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupalcon</a></li><li class="taxonomy-term-reference-4"><a href="/etiqueta/drupal-planet" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal-planet</a></li><li class="taxonomy-term-reference-5"><a href="/etiqueta/drupalcon-chi2011" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupalcon-chi2011</a></li></ul></div>Fri, 01 Apr 2011 04:07:56 +0000Marco Villegas159 at http://marvil07.nethttp://marvil07.net/blog/2011/a-late-note-about-drupalcon-chicago#commentsAnalyzing Drupal 7.0 development historyhttp://marvil07.net/blog/2011/analyzing-drupal-70-development-history
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p>I <a href="http://marvil07.net/blog/analyzing-drupal-core-commits">tried before</a> to analyze the development of drupal history, and I end up creating a little project to actually track the scripts and other things I am using to do that.</p>
<p>Now that drupal 7.0 is out, I improve a little more those scripts named <a href="http://github.com/marvil07/drupal-contribution-analyzer">drupal contribution analyzer</a>, and now I am uploading the results of that.</p>
<p>Results contains: a group of tag clouds(now based on <a href="http://processing.org/">processing</a> + <a href="http://code.google.com/p/wordookie/">wordookie</a> instead of <a href="http://www.wordle.net/">wordle</a>) and a <a href="http://codeswarm.googlecode.com/">codeswarm</a> video(also some basic statistics in plain text).</p>
<p>So, no more waiting, here the results:</p>
<h3>Tagclouds</h3>
<p>Activity by changed files</p>
<p><a href="http://www.flickr.com/photos/marvil07/5337015367/" title="drupal-7.0-dev-participation-by-file-changes por marvil07, en Flickr"><img src="http://farm6.static.flickr.com/5242/5337015367_fc2eb52b6b.jpg" width="500" height="321" alt="drupal-7.0-dev-participation-by-file-changes" /></a></p>
<p>Activity by changed files(excluding CVS committers)</p>
<p><a href="http://www.flickr.com/photos/marvil07/5337625330/" title="drupal-7.0-dev-participation-by-file-changes-no-committers por marvil07, en Flickr"><img src="http://farm6.static.flickr.com/5283/5337625330_ddb82d358b.jpg" width="500" height="321" alt="drupal-7.0-dev-participation-by-file-changes-no-committers" /></a></p>
<p>Activity by commits</p>
<p><a href="http://www.flickr.com/photos/marvil07/5337004609/" title="drupal-7.0-dev-participation-by-commits por marvil07, en Flickr"><img src="http://farm6.static.flickr.com/5002/5337004609_cb341542bb.jpg" width="500" height="321" alt="drupal-7.0-dev-participation-by-commits" /></a></p>
<p>Activity by commits (excluding CVS committers)</p>
<p><a href="http://www.flickr.com/photos/marvil07/5337008203/" title="drupal-7.0-dev-participation-by-commits-no-committers por marvil07, en Flickr"><img src="http://farm6.static.flickr.com/5282/5337008203_3dd081ed05.jpg" width="500" height="321" alt="drupal-7.0-dev-participation-by-commits-no-committers" /></a></p>
<h3>Codeswarm video</h3>
<p>It is based on commit authors and commit attribution(extracted from commit messages), and it starts on the first D7 commit.</p>
<p><!-- VIDEO FILTER - INVALID CODEC IN: [video:http://vimeo.com/18562969] --></p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Etiquetas: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/etiqueta/drupal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal</a></li><li class="taxonomy-term-reference-1"><a href="/etiqueta/codeswarm" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">codeswarm</a></li><li class="taxonomy-term-reference-2"><a href="/etiqueta/statistics" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">statistics</a></li><li class="taxonomy-term-reference-3"><a href="/etiqueta/development" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">development</a></li><li class="taxonomy-term-reference-4"><a href="/etiqueta/drupal-planet" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal-planet</a></li><li class="taxonomy-term-reference-5"><a href="/etiqueta/tag-cloud" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">tag cloud</a></li></ul></div>Sun, 09 Jan 2011 15:03:31 +0000Marco Villegas158 at http://marvil07.nethttp://marvil07.net/blog/2011/analyzing-drupal-70-development-history#commentsAnalyzing Drupal core commitshttp://marvil07.net/blog/2010/analyzing-drupal-core-commits
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p>Sometime ago I posted about <a href="/blog/using-codeswarm-watch-a-video-about-drupal-core-history">making a codeswarm video for drupal</a>.</p>
<p>Since that time I was trying to improve it, and now I want to publish the new code(python prove me that it's rock solid faster :-p) and I also made some scripts to create lists of two interesting factors: activity by commits and by modified files. And, by the way, I generated tag clouds based on that info!</p>
<p>Just to remember, I am parsing commit messages in the history(based on the drupalfr git clone) and using the standard way to give attribution to get it right as much as I can. I know I need still to improve it, but I think it's ready to be public :-)</p>
<p>So, the main repository for this scripts is going to be at github with the name <a href="http://github.com/marvil07/drupal-contribution-analyzer">drupal-contribution-analyzer</a>.</p>
<p>It would be really nice to discuss about drupal contributions tracking (kind of the phrase I can name this :-p) on a BoF at <a href="http://cph2010.drupal.org">DrupalCon Copenhagen</a>.</p>
<p>Here you can see the results I have gotten for Drupal 7 development and for the whole history of the development of drupal.</p>
<p>Since, the main maintainers have <em>a lot</em> of activity(maintainers just <strong>rocks</strong>) I present two results per tag cloud type.</p>
<h2>Drupal 7 development history</h2>
<h3>Tag cloud</h3>
<p>Activity by changed files</p>
<p>Normal:</p>
<p><img src="/sites/default/files/drupal7-dev-participation-by-file-changes_0.png" title=" Activity by changed files" /><br /><a href="/sites/default/files/drupal7-dev-participation-by-file-changes.svg">SVG</a> - <a href="/sites/default/files/drupal7-dev-participation-by-file-changes.pdf">PDF</a></p>
<p>Without maintainers:</p>
<p><img src="/sites/default/files/drupal7-dev-participation-by-file-changes-no-commiters.png" title=" Activity by changed files(without maintainers)" /><br /><a href="/sites/default/files/drupal7-dev-participation-by-file-changes-no-commiters.svg">SVG</a> - <a href="/sites/default/files/drupal7-dev-participation-by-file-changes-no-commiters.pdf">PDF</a></p>
<p>Activity by commits</p>
<p>Normal:</p>
<p><img src="/sites/default/files/drupal7-dev-participation-by-commits.png" title=" Activity by commits" /><br /><a href="/sites/default/files/drupal7-dev-participation-by-commits.svg">SVG</a> - <a href="/sites/default/files/drupal7-dev-participation-by-commits.pdf">PDF</a></p>
<p>Without maintainers:</p>
<p><img src="/sites/default/files/drupal7-dev-participation-by-commits-no-main-maintainer.png" title=" Activity by commits(Without maintainers)" /><br /><a>SVG</a> - <a href="/sites/default/files/drupal7-dev-participation-by-commits-no-main-maintainer.pdf">PDF</a></p>
<h3>Codeswarm video</h3>
<p><!-- VIDEO FILTER - INVALID CODEC IN: [video:http://blip.tv/play/hPcKge66BgA] --></p>
<h2>Whole Drupal development history</h2>
<h3>Tag cloud</h3>
<p>Activity by changed files</p>
<p>Normal:</p>
<p><img src="/sites/default/files/drupalfull-dev-participation-by-file-changes.png" title=" Activity by changed files" /><br /><a href="/sites/default/files/drupalfull-dev-participation-by-file-changes.svg">SVG</a> - <a href="/sites/default/files/drupalfull-dev-participation-by-file-changes.pdf">PDF</a></p>
<p>Without maintainers:</p>
<p><img src="/sites/default/files/drupalfull-dev-participation-by-file-changes-no-main-maintainer.png" title=" Activity by changed files(Without maintainers)" /><br /><a href="/sites/default/files/drupalfull-dev-participation-by-file-changes-no-main-maintainer.svg">SVG</a> - <a href="/sites/default/files/drupalfull-dev-participation-by-file-changes-no-main-maintainer.pdf">PDF</a></p>
<p>Activity by commits</p>
<p>Normal:</p>
<p><img src="/sites/default/files/drupalfull-dev-participation-by-commits.png" title=" Activity by commits" /><br /><a href="/sites/default/files/drupalfull-dev-participation-by-commits.svg">SVG</a> - <a href="/sites/default/files/drupalfull-dev-participation-by-commits.pdf">PDF</a></p>
<p>Without maintainers:</p>
<p><img src="/sites/default/files/drupalfull-dev-participation-by-commits-no-main-maintainer.png" title=" Activity by commits(Without maintainers)" /><br /><a href="/sites/default/files/drupalfull-dev-participation-by-commits-no-main-maintainer.svg">SVG</a> - <a href="/sites/default/files/drupalfull-dev-participation-by-commits-no-main-maintainer.pdf">PDF</a></p>
<h3>Codeswarm video</h3>
<p><!-- VIDEO FILTER - INVALID CODEC IN: [video:http://blip.tv/play/hPcKge66BwA] --></p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Etiquetas: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/etiqueta/drupal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal</a></li><li class="taxonomy-term-reference-1"><a href="/etiqueta/codeswarm" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">codeswarm</a></li><li class="taxonomy-term-reference-2"><a href="/etiqueta/statistics" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">statistics</a></li><li class="taxonomy-term-reference-3"><a href="/etiqueta/development" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">development</a></li><li class="taxonomy-term-reference-4"><a href="/etiqueta/drupal-planet" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal-planet</a></li><li class="taxonomy-term-reference-5"><a href="/etiqueta/tag-cloud" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">tag cloud</a></li></ul></div>Fri, 16 Jul 2010 02:14:43 +0000Marco Villegas157 at http://marvil07.nethttp://marvil07.net/blog/2010/analyzing-drupal-core-commits#commentsVersion Control API introductionhttp://marvil07.net/blog/2010/version-control-api-introduction
<div class="field field-name-upload field-type-file field-label-hidden"><div class="field-items"><div class="field-item even"><table class="sticky-enabled">
<thead><tr><th>Adjunto</th><th>Tamaño</th> </tr></thead>
<tbody>
<tr class="odd"><td><span class="file"><img class="file-icon" alt="File" title="application/vnd.oasis.opendocument.presentation" src="/modules/file/icons/x-office-presentation.png" /> <a href="http://marvil07.net/sites/default/files/vcsapi-bof.odp" type="application/vnd.oasis.opendocument.presentation; length=148983" title="vcsapi-bof.odp">vcsapi-bof.odp</a></span></td><td>145.49 KB</td> </tr>
<tr class="even"><td><span class="file"><img class="file-icon" alt="PDF icon" title="application/pdf" src="/modules/file/icons/application-pdf.png" /> <a href="http://marvil07.net/sites/default/files/vcsapi-bof.pdf" type="application/pdf; length=184811" title="vcsapi-bof.pdf">vcsapi-bof.pdf</a></span></td><td>180.48 KB</td> </tr>
</tbody>
</table>
</div></div></div><div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p>This was originally intended to be a BoF session at <a href="http://sf2010.drupal.org">DrupalCon San Francisco</a>, but after talking with Sam(sdboyer) about it it seems to be a better idea to make a little screencast instead.</p>
<p>So, like I mentioned in <a href="/node/146">the post about the drupalCon SF</a> this is my first attempt to start documenting the 6.x-2.x branch version.</p>
<p>I hope this can help people to get inside the code of the <a href="http://drupal.org/project/versioncontrol">versioncontrol module</a>.</p>
<p>I'm also attaching here the presentation I used in the video.</p>
<p>hint: looks better at fullscreen</p>
<p><!-- VIDEO FILTER - INVALID CODEC IN: [video:http://blip.tv/play/hPcKgduLXAA] --></p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Etiquetas: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/etiqueta/drupal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal</a></li><li class="taxonomy-term-reference-1"><a href="/etiqueta/drupalcon-sf2010" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupalcon-sf2010</a></li><li class="taxonomy-term-reference-2"><a href="/etiqueta/drupal-planet" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal-planet</a></li><li class="taxonomy-term-reference-3"><a href="/etiqueta/versioncontrol" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">versioncontrol</a></li></ul></div>Mon, 03 May 2010 09:17:13 +0000Marco Villegas147 at http://marvil07.nethttp://marvil07.net/blog/2010/version-control-api-introduction#commentsDrupalCon San Francisco 2010 or why I love drupal communityhttp://marvil07.net/blog/2010/drupalcon-san-francisco-2010-or-why-i-love-drupal-community
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p>The last days has been an <em>incredible experience</em> for me. Let's start at the beginning :-)</p>
<p>I had the luck that my application was one of the chosen to receive a scholarship for travelling to <a href="http://sf2010.drupal.org/">this year first DrupalCon</a>, at San Francisco, California on USA. After dealing with visa stuff(thanks for the letter Cary Gordon!), which was <em>really</em> easier than for France, I was in a ten-hours flight to the Con!</p>
<p>Stephanie Canon was the person in charge to coordinate about the scholarship, and it was really easy, mainly because of her great work. Thanks for taking care of so many details!</p>
<p>So, what happened there?</p>
<h3>Volunteering</h3>
<p>I also register as a volunteer for the conference, and this time it was great! I mean, I could help a lot the day before the start moving/getting ready things, and in the first two days, mainly behind the registration table(I can not believe that we registered almost 3,000 people!), but this time I had lot of time to spend at the conference.</p>
<h3>The sessions</h3>
<p>There were a lot of sessions about a lot of topics in many rooms at the same time, and all of them were recorded with really good quality :-), so there is not any excuse to not watch them: <a href="http://sf2010.drupal.org/conference/schedule">they are all on original schedule posts at the official site</a>(<a href="http://www.archive.org/search.php?query=DrupalCon%202010">uploaded to archive.org</a> and embed there)</p>
<p>Here is a mini-list of the sessions I recommend you(only sessions I was in, I still need to watch the other ones):</p>
<ul><li><a href="http://sf2010.drupal.org/conference/sessions/state-drupal">The state of Drupal</a>: the classic Dries session, a must watch.</li>
<li><a href="http://sf2010.drupal.org/conference/sessions/exodus-leading-drupal-out-cvs.html">CVS exodus</a>: some of my favourite drupal heroes together talking about the path to my favourite version control system, git; how we came to git and how can we help in the migration process. It could not be better. BTW: Derek played before the session, <a href="http://soundcloud.com/marvil07/718a13099a2059/s-U5ZFk">here what I could record</a>.</li>
<li><a href="http://sf2010.drupal.org/conference/sessions/accessibility-drupal-6-and-drupal-7-write-accessible-modules-and-themes">Accessibility in Drupal 6 and Drupal 7</a></li>
<li><a href="http://sf2010.drupal.org/conference/sessions/state-panels-3-and-more-what-you-love">The State of Panels 3 and More of What You Love</a></li>
<li><a href="http://sf2010.drupal.org/conference/sessions/aggregate-and-import-feeds">Aggregate and import with Feeds!</a></li>
<li><a href="http://sf2010.drupal.org/conference/sessions/batch-vs-queue-api-smackdown">Batch vs. Queue: an API Smackdown</a></li>
<li><a href="http://sf2010.drupal.org/conference/sessions/leveraging-chaos-tool-suite-module-development">Leveraging the Chaos tool suite for module development</a></li>
<li><a href="http://sf2010.drupal.org/conference/sessions/how-drupal-7-fields-are-changing-way-you-write-modules">How Drupal 7 Fields are changing the way you write modules</a></li>
<li><a href="http://sf2010.drupal.org/conference/sessions/advanced-drush">Advanced Drush</a></li>
</ul><h3>Many productive sprints!</h3>
<p>Everyday after the conference, and also one day before and after there was space to have sprints, they were called <em>ChX coder lounge</em> at conference days.</p>
<p>I tried to participate on them everyday, and it was great to share ideas with community, and it was also pretty productive! The main things I could do there were:</p>
<ul><li><a href="http://drupal.org/node/620530">Vote up/down documentation</a>: finally, after procrastinating this too much, I found the time to do it!</li>
<li>Version Control API introduction documentation: The real plan was to make a BoF session about it, but talking with Sam, the co-maintainer of the module, it seem that it's a better idea to make a little screencast about the presentation I made. So I'll be posting it in this blog and probably on an official channel :-p in the next days.</li>
<li>Core bugs! Yep, we all can fix our beloved beast :-)
<ul><li><a href="http://drupal.org/node/776178">#776178</a> PHP 5.3 warning for command line install: this was an amazing casuality. I was lucky and Moshe was at my left on the table, and after hearing a problem about PHP 5.3 on drush, I tried to help. So, after realizing it was a core bug, and apparently at drupal install, I rolled a little patch to fix it, and I could not beleive it, he RTBC it, and then I was talking to chx about the solution. Magic happens :-) .. it was the quickest core patch I ever get in. The next day, DavidXXXX propose a better solution that I rerolled to include a rollback to my original patch(no more necesary), I mean it was a really tricky bug at Form API, and it was the first time I read drupal install, but anyway it was a _great_ experience, and it show me again that you always learn awesomeness at FLOSS development.</li>
<li><a href="http://drupal.org/node/237566">#237566</a> Automated JavaScript unit testing framework</li>
<li><a href="http://drupal.org/node/507502">#507502</a> Provide Locale support for jQuery UI</li>
</ul></li>
<li><a href="http://drupal.org/community-initiatives/git/feature-list">Git migration planning</a>: On the CVS exodus session, there was an invitation to join the real work behind migrating to git. The session started kind of ethereal, but suddenly all was working, we could communicate between us, and we all have now real assigments to do. Now, I'll do all I can to improve versioncontrol* modules to help.</li>
<li>Close a lot of issues at vote up/down module with the help of Pratul(lut4rp) and Simon(lyricnz) and a big OMG on our faces when Greg deployed it to g.d.o!</li>
</ul><h3>Great time, we love community</h3>
<p>I really appreciate to have had the opportunity to meet a lot of people from the community. Again a lot of new nick-face relations to my head.</p>
<p>Finally I could meet: Sam Boyer(<a href="http://drupal.org/user/146719">sdboyer</a>), one of my mentors at Google Summer of Code 2009; Derek Wright(<a href="http://drupal.org/user/46549">dww</a>), one of the Drupal Infrastructure members who, like he said, maintains the (necessary and awesome!) modules nobody want to maintain; Earl Miles(<a href="http://drupal.org/user/26979">merlinofchaos</a>) the creator of views and other modules you-always-need, who recently writes an awesome ctools integration patch for vote up/down; Damien Tournoud(<a href="http://drupal.org/user/22211">DamZ</a>), one of the top D7 contributors, and the maintainer of git.drupalfr.org; Randy Fay(<a href="http://drupal.org/user/30906">rfay</a>), a great core contributor who actually was some time in Peru; Andrew Berry(<a href="http://drupal.org/user/71291">deviantintegral</a>); Jeremy Andrews(<a href="http://drupal.org/user/409">Jeremy</a>), a great FLOSS contributor whom I'm lucky to share the co-mantaining of <a href="http://drupal.org/project/xapian">xapian integration module</a>; Benjamin Doherty(<a href="http://drupal.org/user/100456">bangpound</a>), Jeff Robbins(<a href="http://drupal.org/user/17190">jjeff</a>), <a href="http://drupal.org/user/13813">HedgeMegde</a>, Simon Roberts(<a href="http://drupal.org/user/33667">lyricnz</a>), Joshua Rogers(<a href="http://drupal.org/user/157922">JoshuaRogers</a>).</p>
<p>I also meet many people I already met before:<br />
Angie Byron(<a href="http://drupal.org/user/24967">webchick</a>), the awesome omni-present D7 branch core co-maintainter; Moshe Weitzman(<a href="http://drupal.org/moshe">moshe</a>), core contributor and the maintainer of modules like devel and og; Károly Négyesi(<a href="">ChX</a>), great core contributor and one of the people behind MongoDB integration for Drupal; Pratul Kalia(<a href="http://drupal.org/user/162357">lut4rp</a>), the co-mantainer of vote up/down; Antoine Beaupré(<a href="http://drupal.org/user/1274">anarcat</a>), one of the maintainers of aegir; Chach Sikes(<a href="http://drupal.org/user/50674">chachasikes</a>), to talk about the Rosa María(<a href="http://drupal.org/user/570788">assoritam</a>) interest about drupalchix; Lisa Rex(<a href="http://drupal.org/user/485222">lisarex</a>); Charlie Gordon(<a href="http://drupal.org/user/157412">cwgordon7</a>); Dmitri Gaskin(<a href="http://drupal.org/user/47566">dmitrig01</a>); Jim Caruso(<a href="http://drupal.org/user/88125">jimcaruso</a>) and many more!</p>
<p>I also met two Drupal Peru people: Fernando(<a href="http://drupal.org/user/125473">develCuy</a>) and Nancy(<a href="http://drupal.org/user/369580">joyita</a>)</p>
<p>Thanks for the opportunity to be at DrupalCon again!</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Etiquetas: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/etiqueta/software-libre" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">software libre</a></li><li class="taxonomy-term-reference-1"><a href="/etiqueta/drupal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal</a></li><li class="taxonomy-term-reference-2"><a href="/etiqueta/asombroso" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">asombroso</a></li><li class="taxonomy-term-reference-3"><a href="/etiqueta/drupalcon" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupalcon</a></li><li class="taxonomy-term-reference-4"><a href="/etiqueta/drupalcon-sf2010" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupalcon-sf2010</a></li><li class="taxonomy-term-reference-5"><a href="/etiqueta/drupal-planet" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal-planet</a></li></ul></div>Thu, 29 Apr 2010 00:21:52 +0000Marco Villegas146 at http://marvil07.nethttp://marvil07.net/blog/2010/drupalcon-san-francisco-2010-or-why-i-love-drupal-community#commentsusing codeswarm: watch a video about drupal core historyhttp://marvil07.net/blog/2009/using-codeswarm-watch-a-video-about-drupal-core-history
<div class="field field-name-upload field-type-file field-label-hidden"><div class="field-items"><div class="field-item even"><table class="sticky-enabled">
<thead><tr><th>Adjunto</th><th>Tamaño</th> </tr></thead>
<tbody>
<tr class="odd"><td><span class="file"><img class="file-icon" alt="Binary Data" title="application/octet-stream" src="/modules/file/icons/application-octet-stream.png" /> <a href="http://marvil07.net/sites/default/files/drupalcodeswarm.20091221_0248.bak_.tar_.gz" type="application/octet-stream; length=618959" title="drupalcodeswarm.20091221_0248.bak_.tar_.gz">drupalcodeswarm.20091221_0248.bak.tar.gz</a></span></td><td>604.45 KB</td> </tr>
<tr class="even"><td><span class="file"><img class="file-icon" alt="Binary Data" title="application/octet-stream" src="/modules/file/icons/application-octet-stream.png" /> <a href="http://marvil07.net/sites/default/files/drupalcodeswarm.20091222_1443.bak_.tar_.gz" type="application/octet-stream; length=619319" title="drupalcodeswarm.20091222_1443.bak_.tar_.gz">drupalcodeswarm.20091222_1443.bak.tar.gz</a></span></td><td>604.8 KB</td> </tr>
</tbody>
</table>
</div></div></div><div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p>(for the impatient: look at the embed video at the end of the post)</p>
<p><a href="http://code.google.com/p/codeswarm">codeswarm</a> is a java project that let you process a version control system log(many are supported) to generate a video that try to make graphics about how the development has happened.</p>
<p><a href="http://www.ohloh.net/accounts/ywarnier?ref=Detailed">Yannick</a>, lead <a href="http://www.dokeos.com">dokeos</a> developer(who made <a href="http://dokeoslead.wordpress.com/2008/06/22/video-activity-report-for-dokeos/">one video for dokeos project</a>), told me about codeswarm project and after some time I made <a href="http://drupal.org/node/286109">a first try video for drupal</a>, based on CVS log, like codeswarm project suggest.</p>
<p><a href="http://code.google.com/p/codeswarm/wiki/GeneratingAVideo">Basically you need to</a> <span class="geshifilter"><code class="text geshifilter-text">cvs log</code></span> and then pass that to a codeswarm python script which generate an xml file. You also need to write a config file for passing it to the codeswarm <span class="geshifilter"><code class="text geshifilter-text">run.sh</code></span> script. This script generate a lot of PNGs that are needed to construct the video.</p>
<p>With the PNGs you make the video using a video encoder(a made a flv directly to avoid losing quality):<br />
<div class="geshifilter"><pre class="bash geshifilter-bash">mencoder mf:<span class="sy0">//*</span>.png <span class="re5">-mf</span> <span class="re2">fps</span>=<span class="nu0">24</span>:<span class="re2">type</span>=png <span class="re5">-ovc</span> lavc <span class="re5">-ofps</span> <span class="nu0">25</span> <span class="re5">-srate</span> <span class="nu0">22050</span> <span class="re5">-ofps</span> <span class="nu0">24</span> <span class="re5">-vf</span> harddup <span class="re5">-lavcopts</span> <span class="re2">vcodec</span>=flv:<span class="re2">vbitrate</span>=<span class="nu0">200</span>:cbp:mv0:<span class="re2">mbd</span>=<span class="nu0">2</span>:trell:v4mv:<span class="re2">last_pred</span>=<span class="nu0">3</span>:<span class="re2">vpass</span>=<span class="nu0">1</span> <span class="re5">-oac</span> copy <span class="re5">-o</span> drupalfull-git-logs-intento2.flv
mencoder mf:<span class="sy0">//*</span>.png <span class="re5">-mf</span> <span class="re2">fps</span>=<span class="nu0">24</span>:<span class="re2">type</span>=png <span class="re5">-ovc</span> lavc <span class="re5">-ofps</span> <span class="nu0">25</span> <span class="re5">-srate</span> <span class="nu0">22050</span> <span class="re5">-ofps</span> <span class="nu0">24</span> <span class="re5">-vf</span> harddup <span class="re5">-lavcopts</span> <span class="re2">vcodec</span>=flv:<span class="re2">vbitrate</span>=<span class="nu0">200</span>:cbp:mv0:<span class="re2">mbd</span>=<span class="nu0">2</span>:trell:v4mv:<span class="re2">last_pred</span>=<span class="nu0">3</span>:<span class="re2">vpass</span>=<span class="nu0">2</span> <span class="re5">-oac</span> copy <span class="re5">-o</span> drupalfull-git-logs-intento2.flv</pre></div><br />
(really not sure if I need two-pass from PNGs.. :-p)</p>
<p>Well, time pass by, Greg <a href="http://growingventuresolutions.com/tags/statistics">posted three blog entries about D7 branch statistics</a> making me remeber codeswarm, so I made a second try, but now I have more tools :-) and I was inspired in Greg work.</p>
<p>What I have done:</p>
<ul><li> I tried to write a custom log parser(see attached files) for drupal(trying to <a href="http://drupal.org/node/52287">extract credit</a> from it). And in this way hack codeswarm, which was made for one user per commit, to recognize many users per commit(duplicating the timestamp as needed). It's not perfect(see TODO inside getauthors.php), but made a good job.
</li><li> I was using a own script to generate the xml, so why not use a handy tool to make the log: I used <a href="http://git.drupalfr.org/cgi-bin/gitweb.cgi?p=core/new-date.git">drupalfr drupal core git clone</a>(aka DamZ git clone) and <span class="geshifilter"><code class="text geshifilter-text">git-log</code></span>/<span class="geshifilter"><code class="text geshifilter-text">git-whatchanged</code></span>.
</li></ul><p>That result in the <a href="http://blip.tv/file/2951644">second try video about only D7</a>(<a href="http://drupal.org/node/286109#comment-2357540">original reference on forum</a>).</p>
<p>Finally, I try to contact directly Greg and Angie to see if I was not losing the time :-p, and both they give me good feedback, so I made one more version.</p>
<p>I was playing <strong>a lot</strong> with codeswarm configuration options and <a href="http://colorschemedesigner.com">colors</a> to get a good and readable representation of the log, and after one day I got a new video, that I show you here:</p>
<p><!-- VIDEO FILTER - INVALID CODEC IN: [video:http://blip.tv/file/2951644] --></p>
<p>There you can see how drupal development have grown up :-)</p>
<p><strong>Update</strong>: I've changed the video to blip.tv, and also use another command to encode it as <a href="http://blip.tv/learning/export">blip.tv recommends</a>, so I also updated the tar-gz for include an script to do so.</p>
</div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above clearfix"><h3 class="field-label">Etiquetas: </h3><ul class="links"><li class="taxonomy-term-reference-0"><a href="/etiqueta/drupal" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal</a></li><li class="taxonomy-term-reference-1"><a href="/etiqueta/codeswarm" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">codeswarm</a></li><li class="taxonomy-term-reference-2"><a href="/etiqueta/statistics" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">statistics</a></li><li class="taxonomy-term-reference-3"><a href="/etiqueta/development" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">development</a></li><li class="taxonomy-term-reference-4"><a href="/etiqueta/drupal-planet" typeof="skos:Concept" property="rdfs:label skos:prefLabel" datatype="">drupal-planet</a></li></ul></div>Mon, 21 Dec 2009 14:54:27 +0000Marco Villegas143 at http://marvil07.nethttp://marvil07.net/blog/2009/using-codeswarm-watch-a-video-about-drupal-core-history#comments