Words from the Inside Uninteresting things from an uninteresting developer https://blogs.igalia.com/jasuarez/ Thu, 09 Mar 2017 13:56:55 +0100 Thu, 09 Mar 2017 13:56:55 +0100 Jekyll v2.4.0 Grilo, Travis CI and Containers <p>Good news! Finally, we are using containers in <a href="https://travis-ci.org">Travis CI</a> for <a href="https://wiki.gnome.org/Projects/Grilo">Grilo</a>!. Something I was trying for a while, but we achived it now. I must say that a <a href="https://www.bassi.io/articles/2017/02/11/epoxy">post Bassi wrote</a> was the trigger for getting into this. So all my kudos to him!</p> <p>In this post I’ll explain the history behind using Travis CI for Grilo continuous integration.</p> <h2 id="the-origin">The origin</h2> <p>It all started when one day exploring how GitHub integrates with other services, I discovered <a href="https://travis-ci.org">Travis CI</a>. As you may know, Travis is a continuous integration service that checks every commit from a project in GitHub, and for each one it starts a testing process. Roughly, it starts a “virtual machine”<sup id="fnref:1"><a href="#fn:1" class="footnote">1</a></sup> running Ubuntu<sup id="fnref:2"><a href="#fn:2" class="footnote">2</a></sup>, clones the repository at that commit under test, and runs a set of commands defined in the <code>.travis.yml</code> file, located in the same project GitHub repository. In that file, beside the steps to execute the tests, it contains the instructions about how to build the project, as well as which dependencies are required.</p> <p>Note that before Travis, instead of a continuous integration system in Grilo we had a ‘discontinuous’ one: run the checks manually, from time to time. So we could have a commit entering a bug, and we won’t realize until we run the next check, which can happen way later. Thus, when I found Travis, I thought it would be a good idea to use it.</p> <p>Setting up <code>.travis.yml</code> for Grilo was quite easy: in the <code>before_install</code> section we just use <code>apt-get</code> to install all requirements: <code>libglib2.0-dev</code>, <code>libxml2-dev</code>, and so on. And then, in the <code>script</code> section we run <code>autogen.sh</code> and <code>make</code>. If nothing fails, we consider the test is successful. We do not run any specific test because we don’t have any in Grilo.</p> <p>For the plugins, the same steps: install dependencies, configure and build the plugins. In this case, we also run <code>make check</code>, so tests are run always. Again, if nothing fails Travis gives us a green light. Otherwise, a red one. The status is shown in the <a href="https://wiki.gnome.org/Projects/Grilo">main web page</a>. Also, if the test fail, an email is sent to the commit author.</p> <p>Now, this has a small problem when testing plugins: they require Grilo, and we were relying in the package provided by Ubuntu (it is listed in the dependencies). But what happens if the current commit is using a feature that was added in Grilo upstream, but not released yet? One option could be cloning Grilo core, building and installing it, before the plugins, and then compiling the plugins, depending on this version. This means that for each commit in plugins, we need to build two projects, adding lot of complexity in the Travis file. So we decided to go with a different approach: just create a Grilo package with the required unreleased Grilo core version (only for testing), and put it in a <a href="https://launchpad.net/~grilo-team/+archive/ubuntu/travis">PPA</a>. Then we can add that PPA in our <code>.travis.yml</code> file and use that version instead.</p> <p>A similar problem happens with Grilo itself: sometimes we require a specific version of a package that is not available in the Ubuntu version used by Travis (Ubuntu 12.04). So we need to backport it from a more recent Ubuntu version, and add it in the same PPA.</p> <p>Summing up, our <code>.travis.yml</code> files just add the PPA, install the required dependencies, build and test it. You can take a look at the <a href="https://git.gnome.org/browse/grilo/tree/.travis.yml?id=ce1fa94cc8759616a6aacfe94c09ffbf3432f7c0">core</a> and <a href="https://git.gnome.org/browse/grilo-plugins/tree/.travis.yml?id=f93e959f0243f5207dd23bbed21b8be20dfa76b4">plugins</a> file.</p> <h2 id="travis-and-the-peter-pan-syndrome">Travis and the Peter Pan syndrome</h2> <p>Time passes, we were adding more features, new plugins, fixing problem, adding new requirements or bumping up the required versions… but Travis continues using Ubuntu 12.04. My first thoughts were <em>“OK, maybe Travis wants to rely only in LTS releases”</em>. So we need to wait until the next LTS is released, and meanwhile backporting everything we need. No need to say that doing this becomes more and more complicated as time is passing. Sometimes backporting a single dependency requires to backport a lot of other dependencies, which can end up in a bloody nightmare. <em>“Only for a while, until the new LTS is released”</em>, repeated to myself.</p> <p>And good news! Ubuntu 14.04, the new LTS, is released. But you know what? Travis is not updated, and still uses the old LTS!. What the hell!</p> <p>Moreover, two years later after this release, Ubuntu 16.04 LTS is also released, and Travis still uses 12.04!</p> <p>At that moment, backporting were so complex that basically I gave up. And Continuous Integration was basically broken.</p> <h2 id="travis-and-the-containers">Travis and the containers.</h2> <p>And we were under this broken status until I read Travis was adding support for containers. <em>“This is what we need”</em>. But the truth is that even I knew that it would fix all the problems, I wasn’t very sure how to use the new feature. I tried several approaches, but I wasn’t happy with none of them.</p> <p>Until <a href="https://twitter.com/ebassi">Emmanuele Bassi</a> published a <a href="https://www.bassi.io/articles/2017/02/11/epoxy">post about using Meson in Epoxy</a>. That post included an explanation about using Docker containers in Travis, which solved all the doubts I had, and allowed me to finally move to use containers. So again, thank you, Emmanuele!</p> <p>What’s the idea? First, we have created a <a href="https://hub.docker.com/r/grilofw/grilo">Docker container</a> that has preinstalled all the requirements to build Grilo and the plugins. We tagged this image as <em>base</em>.</p> <p>When Travis is going to test Grilo, we instruct Travis to build a new container, based on <em>base</em>, that builds and installs Grilo. If everything goes fine, then our continous integration is successful, and Travis gives green light. Otherwise it gives red light. Exactly like it happened in the old approach.</p> <p>But we don’t stop here. If everything goes fine, we push the new container into Docker register, tagging it as <em>core</em>. Why? Because this is the image we will use for building the plugins.</p> <p>And in the case of plugins we do exactly the same as in the core. But this time, instead of relying in the <em>base</em> image, we rely in the <em>core</em> one. This way, we always use a version that has an up-to-date version of Grilo, so we don’t need to package it when introducing new features. Only if either Grilo or the plugins require a <strong>new dependency</strong> we need to build a new <em>base</em> image and push it. That’s all.</p> <p>Also, as a plus, instead of discarding the container that contains the plugins, we push it in Docker, tagged as <em>latest</em>. So anyone can just pull it with Docker to have a container to run and test Grilo and all the plugins.</p> <p>If interested, you can take a look at the <a href="https://git.gnome.org/browse/grilo/tree/.travis.yml?id=fcdcd29b1bc6aec03f57dac39b7b5a7df60c8cae">core</a> and <a href="https://git.gnome.org/browse/grilo-plugins/tree/.travis.yml?id=8a8f1a829cc222230ca16aa0a5f522dfb394225d">plugins</a> files to check how it looks like.</p> <p>Oh! Last but not least. This also helped us to test the building both using <a href="https://en.wikipedia.org/wiki/GNU_Build_System">Autotools</a> and <a href="http://mesonbuild.com">Meson</a>, both supported in Grilo. Which is really awesome.</p> <p>Summing up, moving to containers provides a lot of flexibility, and make things quite easier.</p> <p>Please, leave any comment or question either in <a href="https://www.facebook.com/jsuarezr/posts/1633824283311177">Facebook</a> or <a href="https://plus.google.com/+jasuarez/posts/df1d8wufjZj">Google+</a>.</p> <div class="footnotes"> <ol> <li id="fn:1"> <p>Let’s call Virtual Machine, container, whatever. In this context it doesn’t matter. <a href="#fnref:1" class="reversefootnote">&#8617;</a></p> </li> <li id="fn:2"> <p>Ubuntu 12.04 LTS, to be exact. <a href="#fnref:2" class="reversefootnote">&#8617;</a></p> </li> </ol> </div> Thu, 09 Mar 2017 00:00:00 +0100 https://blogs.igalia.com/jasuarez/2017/03/09/grilo-travis-containers/ https://blogs.igalia.com/jasuarez/2017/03/09/grilo-travis-containers/ grilo multimedia gnome igalia New Year, New Blog! <p>A new year has come! And with the new year, the usual new proposals: be better person, do more exercise, blog more, … <img class="emoji" title=":smile:" alt=":smile:" src="https://assets.github.com/images/icons/emoji/unicode/1f604.png" height="20" width="20" align="absmiddle" /></p> <p>More than two years without blogging. Lot of time. So let’s start with the last proposal.</p> <p>But I also wanted to do a clean restart, and entirely reboot my blog. This is something I was thinking of during the last months, specially after <a href="https://blogs.igalia.com/mrego/">Rego</a> moved his blog to <a href="http://jekyllrb.com">Jekyll</a>. I really like how clean and simple it looks like.</p> <p>I have (or better had) my blog hosted in a WordPress server. <a href="https://wordpress.org">WordPress</a> is a very popular and also, why not, very good system to create and manage website content and blogs. It’s entirely an online service, where you create your content, and it’s served to the world. And there are tons of plugins that practically allow to do whatever you need.</p> <p>But to be honest, it seems too much cathedral for me. I just wanted something simpler, that serves the content I have, and nothing else. Specially, after reading lot of times about bugs and different security problems it has (fortunately, most of them fixed quickly). Nevertheless, I’m very lucky in this topic, because the WordPress server I was using is hosted by <a href="http://www.igalia.com">Igalia</a>, and their sysadmins are awesome professional people that keep everything updated. But still, can’t avoid the feeling that there’s still a risk, and that implies spending time from our sysadmins to maintain it.</p> <p>Besides that, there were other reasons that made me to consider a static blog system (again, these reasons are entirely for my personal case).</p> <ul> <li> <p>As said, too much big just to keep a simple blog. Using a static blog seems more suitable.</p> </li> <li> <p>I’m a FLOSS person, and as such, I really like to know what’s going on under the hood. And in this case it is something I don’t really know. Yes, WordPress is a free software, and source code is available out there. What I mean is that I can’t go to the server and freely change things, because I’m not the sysadmin. If I want to use a modified version of a plugin, I can’t do it. Basically, I see it as a service like others in the cloud, that you just use and full stop. On the other hand, static blogging is different: you have the source code, that you can inspect or modify (like I did for this blog), and that runs in your own host. And once the final content is generated, can be served by any webserver. No need to install anything at all in the server.</p> </li> <li> <p>I’m a developer person, and as such, I like the process of <em>writing</em> something in clear text, <em>compile</em> it, and get a <em>final result</em> I can use. Which is something that perfectly matches with the way of doing static blogging: you write your posts in clear text (usually, in <a href="http://daringfireball.net/projects/markdown">MarkDown</a> or <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>), you run a <a href="https://www.staticgen.com">generator</a> which transforms the posts in HTML + CSS, and you get everything inside a directory. You only need to copy the generated content in the proper webserver. Nothing else.</p> </li> <li> <p>A very important one for me, that I think triggered the change from WordPress: I really like <a href="https://git-scm.com">Git</a>. And really missed to have my posts under with Git. But now, as posts are just clear text files, I can easily handle them with Git: I can push, amend, branch, and even accept fixes through pull requests!</p> </li> </ul> <p>Probably there are more reasons that made me to switch from WordPress. But those above are enough.</p> <p>So the next question was: which one? There are lot of different <a href="https://www.staticgen.com">static site generators</a>. Lot time ago I had done some shy attempts with <a href="https://blog.getpelican.com">Pelican</a> first, and with <a href="http://jekyllrb.com">Jekyll</a> later. As Jekyll is the most popular one, I decided to go with it. It has lot of plugins that covers all my needs, and very big community. For sure it is not the fastest one, but I don’t mind spending some minutes if required to generate content. The good thing is that in the future I can move to a different generator if needed, and just use the same posts.</p> <p>Once I decided to use Jekyll, a crucial question came up: which theme? Themes define how your content looks alike. For sure, I wanted something simple, like <a href="https://blogs.igalia.com/mrego/">Rego’s blog</a>, but not the same theme. I’m not a designer, so doing it myself from scratch was discarded. I could buy a theme from a professional designer, but I think it is too early to do that at this moment. Maybe in the future. Thus, I spent several days trying different free themes, checking how they look, until finding one that suited what I wanted: <a href="https://github.com/dirkfabisch/mediator">Mediator theme</a>. I used it as a starting point, fixing some problems (most of those fixes were merged in the original theme), doing some modifications to adapt to my own wishes, and voilà! What you see here is the final result.</p> <p>What’s next? Very likely, search for a way of allowing comments. This is not handled natively in Jekyll, but usually through third-party services, like <a href="https://disqus.com">Disqus</a> or <a href="http://www.discourse.org">Discourse</a>. I could use any of them, but again, I would be in the same situation as with WordPress.</p> <p>So for now, I’ll leave a couple of links in <a href="https://www.facebook.com/jsuarezr/posts/1573891925971080">Facebook</a> and <a href="https://plus.google.com/+jasuarez/posts/e2v3YD3mGbL">Google+</a> where people can leave comments.</p> <p>Happy new year!</p> Thu, 12 Jan 2017 00:00:00 +0100 https://blogs.igalia.com/jasuarez/2017/01/12/new-year-new-blog/ https://blogs.igalia.com/jasuarez/2017/01/12/new-year-new-blog/ igalia Highlights in Grilo 0.2.11 (and Plugins 0.2.13) <p>Hello, readers!</p> <p>Some weeks ago we released a new version of <a href="https://wiki.gnome.org/Projects/Grilo">Grilo</a> and the Plugins set (yes, it sounds like a 70’s music group <img class="emoji" title=":smile:" alt=":smile:" src="https://assets.github.com/images/icons/emoji/unicode/1f604.png" height="20" width="20" align="absmiddle" />). You can read the announcement <a href="https://mail.gnome.org/archives/grilo-list/2014-August/msg00000.html">here</a> and <a href="https://mail.gnome.org/archives/grilo-list/2014-August/msg00001.html">here</a>. If you are more curious about all the detailed changes done, you can take a look at the Changelog <a href="https://download.gnome.org/sources/grilo/0.2/grilo-0.2.11.changes">here</a> and <a href="https://download.gnome.org/sources/grilo-plugins/0.2/grilo-plugins-0.2.13.changes">here</a>.</p> <p>But even when you can read that information in the above links, it is always a pleasure if someone highlights what are the main changes. So let’s go!</p> <h2 id="launch-tool">Launch Tool</h2> <p>Regarding the core system, among the typical bug fixes, I would highlight a new tool: <strong>grl-launch</strong>. This tool, as others, got inspiration from <a href="http://gstreamer.freedesktop.org">GStreamer</a> <a href="http://docs.gstreamer.com/display/GstSDK/gst-launch">gst-launch</a>. So far, when you wanted to do some operation in Grilo, like performing a search in YouTube or getting the title of a video on disk, the recommended way was using Grilo Test UI. This is a basic application that allows you to perform the typical operations in Grilo, like browsing or searching, and everthing from a graphical interface. The problem is that this tool is not flexible enough, so you can’t control all the details you could require. And it is also useful to visually check the results, but not to export the to manage with another tool.</p> <p>So while the Test UI is still very useful, to cover the other cases we have grl-launch. It is a command-line based tool that allows you to perform most of the operations allowed in Grilo, with a great degree of control. You can browse, search, solve details from a Grilo media element, …, with a great control: how many elements to skip or return, the metadata keys (title, author, album, …) to retrieve, flags to use, etc.</p> <p>And on top of that, the results can be exported directly to a <a href="http://en.wikipedia.org/wiki/Comma-separated_values">CSV</a> file so it can be loaded later in a spreadsheet.</p> <p>As example, getting the 10 first trailers from <a href="http://trailers.apple.com">Apple’s iTunes Movie</a> Trailers site:</p> <pre><code>$ grl-launch-0.2 browse -c 10 -k title,url grl-apple-trailers 23 Blast,http://trailers.apple.com/movies/independent/23blast/23blast-tlr_h480p.mov A Most Wanted Man,http://trailers.apple.com/movies/independent/amostwantedman/amostwantedman-tlr1_h480p.mov ABC's of Death 2,http://trailers.apple.com/movies/magnolia_pictures/abcsofdeath2/abcsofdeath2-tlr3_h480p.mov About Alex,http://trailers.apple.com/movies/independent/aboutalex/aboutalex-tlr1b_h480p.mov Addicted,http://trailers.apple.com/movies/lionsgate/addicted/addicted-tlr1_h480p.mov "Alexander and the Terrible, Horrible, No Good, Very Bad Day",http://trailers.apple.com/movies/disney/alexanderterribleday/alexanderterribleday-tlr1_h480p.mov Annabelle,http://trailers.apple.com/movies/wb/annabelle/annabelle-tlr1_h480p.mov Annie,http://trailers.apple.com/movies/sony_pictures/annie/annie-tlr2_h480p.mov Are You Here,http://trailers.apple.com/movies/independent/areyouhere/areyouhere-tlr1_h480p.mov As Above / So Below,http://trailers.apple.com/movies/universal/asabovesobelow/asabovesobelow-tlr1_h480p.mov 10 results </code></pre> <p>As said, if you re-direct the output to a file and you import it from a spreadsheet program as CSV you will read it better.</p> <h2 id="dleynaupnp-plugin">dLeyna/UPnP plugin</h2> <p>Regarding the plugins, here is where the fun takes place. Almost all plugins were touched, in some way or other. In most cases, for fixing bugs. But there are other changes I’d like to highlight. And among them, UPnP is one that suffered biggest changes.</p> <p>Well, strictly speaking, there is no more UPnP plugin. Rather, it was replaced by new dLeyna plugin, written mainly by <a href="http://nerd.ocracy.org/em">Emanuele Aina</a>. From an user point of view, there shouldn’t be big differences, as this new plugin also provides access to UPnP/DLNA sources. So where are the differences?</p> <p>First off, let’s specify what is <a href="https://01.org/dleyna">dLeyna</a>. So far, if you want to interact with a UPnP source, either you need to deal with the protocol, or use some low-level library, like <a href="https://wiki.gnome.org/Projects/GUPnP"><em>gupnp</em></a>. This is what the UPnP plugin was doing. Still it is a rather low-level API, but higher and better than dealing with the raw protocol.</p> <p>On the other hand, dLeyna, written by the <a href="https://01.org">Intel Open Source Technology Center</a>, wraps the UPnP sources with a D-Bus layer. Actually,not only sources, but also UPnP media renderers and controllers, though in our case we are only interested in the UPnP sources. Thanks to dLeyna, you don’t need any more to interact with low-level UPnP, but with a higher D-Bus service layer. Similar to the way we interact with other services in GNOME or in other platforms. This makes easier to browser or search UPnP sources, and allows us to add new features. dLeyna also hides some details specific to each UPnP server that are of no interest for us, but we would need to deal with in case of using a lower level API. The truth is that though UPnP is quite well specified, each implementation doesn’t follow it at 100%: there are always slight differences that create nasty bugs. In this case, dLeyna acts (or should act) as a protection, dealing itself with those differences.</p> <p>And what is needed to use this new plugin? Basically, having dleyna-service D-Bus installed. When the plugin is started, it wakes up the service, which will expose all the available UPnP servers in the network, and the plugin would expose them as Grilo sources. Everything as it was happening with the previous UPnP source.</p> <p>In any case, I still keep a <a href="https://github.com/jasuarez/grilo-upnp-plugin">copy of the old UPnP plugin</a> for reference, in case someone want to use it or take a look. It is in “unmaintained” mode, so try to use the new dLeyna plugin instead.</p> <h2 id="lua-factory-plugin">Lua Factory plugin</h2> <p>There isn’t big changes here, except fixes. But I want to remark it here because it is where most activity is happening. I must thank <a href="http://www.hadess.net">Bastien</a> and <a href="http://www.victortoso.com">Victor</a> for the work they are doing here. Just to refresh, this plugin allows to execute sources written in <a href="http://www.lua.org">Lua</a>. That is, instead of writing your sources in GObject/C, you can use Lua. The Lua Factory plugin will load and run them. Writing plugins in Lua is a pleasure, as it allows to focus on fixing the real problems and leave the boiler plate details to the factory. Honestly, if you are considering writing a new source, I would really think about writing it in Lua.</p> <p>And that’s all! It is a longer post than usual, but it is nice to explain what’s going on in Grilo. And remember, if you are considering using Grilo in your product, don’t hesitate to <a href="http://www.igalia.com/contact">contact with us</a>.</p> Mon, 29 Sep 2014 00:00:00 +0200 https://blogs.igalia.com/jasuarez/2014/09/29/highlights-in-grilo-0-2-11/ https://blogs.igalia.com/jasuarez/2014/09/29/highlights-in-grilo-0-2-11/ grilo multimedia gnome igalia Another year, another GUADEC <p>It’s 2014, and like previous years:</p> <p><a href="https://2014.guadec.org"><img src="/jasuarez/assets/post_images/2014-07-24-guadec2014.png" alt="GUADEC 2014" class="center-block" /></a></p> <p>This time I won’t give any talk, just relax and enjoy <a href="http://www.igalia.com/nc/igalia-247/news/item/meet-us-at-guadec-2014-strasbourg-july-26-august-1">talks from others</a>, and hope <a href="http://www.strasbourg.eu">Strasbourg</a>.</p> <p>And what is more important, meet those hackers you interact with frequently, and maybe share some beers.</p> <p>So if you go there, and you want to have a nice chat with me, or talk about <a href="https://wiki.gnome.org/Projects/Grilo">Grilo</a> project, don’t hesitate to do it. <a href="http://www.igalia.com">Igalia</a>, which is kindly sponsoring my attendance, will have a place there during the core days, so likely you could find me around or ask anyone there for me.</p> <p>Enjoy!</p> Thu, 24 Jul 2014 00:00:00 +0200 https://blogs.igalia.com/jasuarez/2014/07/24/another-year-another-guadec/ https://blogs.igalia.com/jasuarez/2014/07/24/another-year-another-guadec/ guadec gnome igalia Yum Search Extended <p>Hi again! Let me tell you something. I’m a <a href="https://fedoraproject.org">Fedora</a> user since several releases ago, probably since Fedora 13 or 14.</p> <p>Before that, I was using <a href="https://fedoraproject.org">Ubuntu</a>, but decided to switch to Fedora for several reasons that are not worth explaining here. In any case, after switching to Fedora there was something that I was missing quite a lot: the <a href="https://wiki.debian.org/Aptitude">aptitude package manager</a>. aptitude is a deb package manager, similar to <a href="https://wiki.debian.org/Apt">apt</a>. What I really like about aptitude is its flexibility when searching packages.</p> <p>While apt or <a href="http://yum.baseurl.org">yum</a> allows to specify the search term, they just get all the packages matching the search text, but they don’t allow you where to search. Do you want to get only packages that are not installed? Or do you just remember the package had <em>python</em> in the name, and part of the description? With aptitude this is not a problem, as it allows you to specify such search expressions.</p> <p>Though search in yum is not so flexible, as far as I know, it has a nice feature: it allows <a href="http://yum.baseurl.org/wiki/WritingYumPlugins">plugins</a> to implement new features. So several months ago I wrote a plugin to mimic the aptitude search flexibility: <a href="https://github.com/jasuarez/yum-plugin-searchex"><strong>yum searchex (search extended)</strong></a>.</p> <p>It is worth saying that I didn’t want to imitate the full aptitude functionality; only those features that I really missed from Ubuntu.</p> <p>The basic idea is specifying for each term where to search. This is done by prefixing the text with <code>~</code> and a letter that expresses where to search. In some cases, the text to search is not needed. For instance, to search only in the list of installed packages, we would use <code>~i</code>.</p> <p>The full list of the available options can be found in the <a href="https://github.com/jasuarez/yum-plugin-searchex/blob/master/README.md">project forge</a>.</p> <p>As an example is worth a thousand words, let’s show how to search a package that we know it contains <em>python</em> in the name, it is not installed, and also we remember it has something to do with KDE:</p> <pre><code>yum searchex ~apython~dKDE </code></pre> <p>Hope this plugin is as useful for you as it is for me!</p> Thu, 06 Mar 2014 00:00:00 +0100 https://blogs.igalia.com/jasuarez/2014/03/06/yum-search-extended/ https://blogs.igalia.com/jasuarez/2014/03/06/yum-search-extended/ fedora yum gnome igalia See you at GUADEC 2013! <p><a href="https://www.guadec.org">GUADEC</a> 2013 is around the corner.</p> <p><img src="/jasuarez/assets/post_images/2013-07-22-guadec2013.png" alt="GUADEC 2013" class="center-block" /></p> <p><a href="http://www.igalia.com">Igalia</a> is kindly sponsoring my attendance, as well as other mates, to this wonderful conference, where all years I meet good friends, and do new ones.</p> <p>I’ll be there from August, 1st to 5th, both included. On saturday 3rd I’ll give a talk about <a href="https://wiki.gnome.org/Grilo">Grilo</a>. If you are using Grilo or willing to, join us to the talk. Of course, I always welcome any question, so if you see me and want to ask anything, don’t hesitate to address me.</p> <p>Also, I expect to attend on 5th the <a href="https://wiki.gnome.org/Hackfests/Music2013">gnome-music BoF</a>. gnome-music is one of the programs I collaborate with that heavily use Grilo. I really suggest to give a try. I’ts so nice!</p> <p>Besides all above, Igalia will have a booth during all the event, where we will be showing some of the cool things we do. I still don’t know where it be exactly located, but if you see us, come there!</p> Mon, 22 Jul 2013 00:00:00 +0200 https://blogs.igalia.com/jasuarez/2013/07/22/see-you-at-guadec-2013/ https://blogs.igalia.com/jasuarez/2013/07/22/see-you-at-guadec-2013/ grilo guadec gnome igalia Grilo 0.2.8 released <p>I did a new <a href="https://mail.gnome.org/archives/grilo-list/2013-May/msg00017.html">release of grilo plugins</a> only one week after the <a href="https://mail.gnome.org/archives/grilo-list/2013-May/msg00012.html">previous release</a> because it includes a <a href="https://bugzilla.gnome.org/show_bug.cgi?id=700517">patch</a> that people from <a href="https://live.gnome.org/GnomePhotos">gnome-photos</a> would like to see in next <a href="http://www.gnome.org">GNOME</a> 3.9 pre-release.</p> <p>Besides that patch, this new release also includes a new plugin to get content from the <a href="http://magnatune.com">Magnatune</a> service. Credits go to <a href="http://www.victortoso.com">Victor Toso</a>, who did a great job on it.</p> <p>Happy weekend from <a href="http://www.igalia.com">Igalia</a> headquarter!</p> Sat, 25 May 2013 00:00:00 +0200 https://blogs.igalia.com/jasuarez/2013/05/25/grilo-plugins-0-2-8-released/ https://blogs.igalia.com/jasuarez/2013/05/25/grilo-plugins-0-2-8-released/ grilo multimedia gnome igalia What's going on in Grilo? <p>There’s a lot of time I don’t blog about <a href="https://live.gnome.org/Grilo">Grilo</a>. But it doesn’t mean we are not working on it! Here at <a href="http://www.igalia.com">Igalia</a> we do, and we also get lot of contributions from community. All the announcements are sent to the Grilo <a href="https://mail.gnome.org/mailman/listinfo/grilo-list">mailing list</a>.</p> <p>During this week we have released a new version of Grilo, both for core (v0.2.6) and for the plugins (v0.2.7). You can see the announcements <a href="https://mail.gnome.org/archives/grilo-list/2013-May/msg00011.html">here</a> and <a href="https://mail.gnome.org/archives/grilo-list/2013-May/msg00012.html">here</a>. If you are interested in more detailed changelogs, you can see them <a href="http://ftp.gnome.org/pub/GNOME/sources/grilo/0.2/grilo-0.2.6.changes">here</a> and <a href="http://ftp.gnome.org/pub/GNOME/sources/grilo-plugins/0.2/grilo-plugins-0.2.7.changes">here</a>.</p> <p>So what happens in this release?</p> <ul> <li> <p>As usual, lot of bugfixes.</p> </li> <li> <p><a href="http://www.hadess.net">Bastien</a> added support for non-file URIs in Filesystem plugin. What this means? In Filesystem plugin you can configure the base path from which the source can show content. Thus, if you setup the base path as <code>~/Music</code>, it means Filesystem will show only content placed in that directory. With the new approach, you could use as base-path something like <code>recent://</code>, getting the list of recently used items. Cool, uh?</p> </li> <li> <p>My mate <a href="http://blogs.igalia.com/svillar">Sergio</a> fixed the cache system in GrlNet. Seems we broke it at some point in the history, and we didn’t realize. We rely on libsoup and its caching feature, and Sergio is very skilled in libsoup. So who’s better than him to fix it? <img class="emoji" title=":grinning:" alt=":grinning:" src="https://assets.github.com/images/icons/emoji/unicode/1f600.png" height="20" width="20" align="absmiddle" /></p> </li> <li> <p>We improved <code>grl-inspect</code> tool. Inspired in <code>gst-inspect</code> from <a href="http://gstreamer.freedesktop.org">GStreamer</a>, this tool helps to list all the available sources in the system, and list all the supported features. Now, it can also list all the available metadata keys developer can use. Moreover, it also list which sources support each key.</p> </li> <li> <p>We added support for i18n! Now we speak Brazilian, Czech, Galician, Greek, Polish, Serbian, Slovenian, Spanish and Tajik. And we hope to support more languages in the coming releases. Many thanks to <a href="https://l10n.gnome.org/users/rafaelff1">Rafael</a>, <a href="https://l10n.gnome.org/users/Marv">Marek</a>, <a href="https://l10n.gnome.org/users/frandieguez">Fran</a>, <a href="https://l10n.gnome.org/users/dmtrs32">Dimitris</a>, <a href="https://l10n.gnome.org/users/raven">Piotr</a>, <a href="https://l10n.gnome.org/users/MirosNik">Мирослав</a>, Martin, <a href="https://l10n.gnome.org/users/migueldemalaga">Miguel</a> and <a href="https://l10n.gnome.org/users/ibragimov">Victor</a> for their work on translating Grilo.</p> </li> <li> <p>Marek Chalupa added support for <a href="https://live.gnome.org/GnomeOnlineAccounts">GOA</a> in the Flickr plugin. This means that if you have a Flickr account configured in GOA, you will get for free a Flickr source dealing with that account. Nice!</p> </li> </ul> <p>I think that’s all. If you use Grilo and needs help or support, don’t hesitate to <a href="http://www.igalia.com/contact">contact us</a>!</p> Sat, 18 May 2013 00:00:00 +0200 https://blogs.igalia.com/jasuarez/2013/05/18/whats-going-on-in-grilo/ https://blogs.igalia.com/jasuarez/2013/05/18/whats-going-on-in-grilo/ grilo multimedia gnome igalia Grilo at GUADEC 2012 <p>A new year, a new <a href="http://guadec.org">GUADEC</a>. And as in previous years:</p> <p><img src="/jasuarez/assets/post_images/2012-07-19-guadec2012.png" alt="GUADEC 2012" class="center-block" /></p> <p>This year is a bit special for different reasons:</p> <ul> <li> <p>GUADEC 2012 is allocated in the same city as <a href="http://www.igalia.com">Igalia</a> headquarter. And in the same <a href="http://en.wikipedia.org/wiki/Galicia_(Spain)">region</a> I was born.</p> </li> <li> <p>I’ll give a <a href="https://www.gpul.org/indico/contributionDisplay.py?contribId=34&amp;confId=0">talk</a> about <a href="https://live.gnome.org/Grilo">Grilo</a>, reviewing its current state and talking about what’s coming next.</p> </li> <li> <p>There will be also a <a href="https://live.gnome.org/GUADEC/2012/BOFs">BoF</a> where we can talk for 2 hours about next features and what would be good to have in Grilo.</p> </li> </ul> <p>Of course, do not hesitate to ask me (or other Grilo contributors) whatever you want to know about Grilo if you see us around. We will be more han happy to answer any doubt.</p> Thu, 19 Jul 2012 00:00:00 +0200 https://blogs.igalia.com/jasuarez/2012/07/19/grilo-at-guadec-2012/ https://blogs.igalia.com/jasuarez/2012/07/19/grilo-at-guadec-2012/ grilo guadec gnome igalia Grilo at Desktop Summit 2011 <p>Are you interested on <a href="http://live.gnome.org/Grilo">Grilo</a>? Are you going to <a href="https://www.desktopsummit.org">Desktop Summit</a> 2011? Then let’s meet there. Among other <a href="http://www.igalia.com/igalia-247">igalians</a>,</p> <p><img src="/jasuarez/assets/post_images/2011-07-29-desktopsummit2011.jpg" alt="Desktop Summit 2011" class="center-block" /></p> <p>Also, I and my fellow <a href="http://www.igalia.com/nc/igalia-247/igalian/item/gemont">Guillaume</a> have organized a <a href="http://wiki.desktopsummit.org/Workshops_&amp;_BoFs/2011/Developing_applications_with_Grilo">hacking session</a> on <a href="https://desktopsummit.org/program/workshops-bofs">Wednesday 10th, 9:00 in room 1.401/2</a>. If you want to learn more about Grilo, and how to use it to develop your ideas, then write down in the attendant list. It will be a pleasure to count on you, and have a funny time.</p> <p>And don’t miss neither the BoF about using <a href="http://billetvert.blogspot.com/2011/07/seedkit-bof-at-desktop-summit-2011.html">SeedKit to develop your applications</a>, organized by <a href="http://www.igalia.com/nc/igalia-247/igalian/item/amazari">Alexandre</a>.</p> <p>If you don’t have time, but still you have any question related to Grilo, don’t hesitate to contact with any of us. See you all there!</p> <p style="color: blue"><em>UPDATE</em>: Do not forget neither the lightning talk about <a href="https://desktopsummit.org/program/sessions/integration-web-media-lookup-gnome-shell-grilo">Grilo extension for GNOME Shell</a>, by <a href="http://www.igalia.com/nc/igalia-247/igalian/item/pnormand">Philippe</a>!</p> Fri, 29 Jul 2011 00:00:00 +0200 https://blogs.igalia.com/jasuarez/2011/07/29/grilo-ds2011-2/ https://blogs.igalia.com/jasuarez/2011/07/29/grilo-ds2011-2/ grilo guadec gnome igalia