In part one of my conversation with Yves Chedemois, we talk about his time working on Drupal, being part of the Drupal community (and the "Hey!" moment), Drupal development sustainability, and how the Drupal community stepped up to help him when he needed it recently.
The complete list of changes is below.Changes in RcppArmadillo version 0.3.920.3 (2013-11-20)
Upgraded to Armadillo release Version 3.920.3
fix for handling of tiny matrices by .swap()
Mogdesign has launched a new crowdfunding platform - Drupalfund.us targeting projects related to Drupal. It took less than 24 hours to successfully fund its first project.
Américo Monteiro reported Debian bug #730000 on Wednesday November 20th, against the bilibop package. One of our recurrent debconf translations bug report
Bug #720000 was reported as of August 17th: 3 months and 3 days for 10,000 bugs. Slight slowdown in the bug reporting rate after a small acceleration last time.
So, we're still on our way to bug #800000 and bug #1000000.
- For those who missed the last time you were on the show, can you give us the run-down of what AberdeenCloud is?
- What’s the company philosophy.
- How long have you guys been around?
- What’s the pricing look like?
- In your original pricing structure you had a reseller plan kind of built in. Do you still have something available to resellers?
- What technology are you using?
- Why do you think #AC provides superior value?
- So, in your video you guys say that you are the most reliable Drupal platform ever built… What in the world does that mean?
- Command line tools
- Hosted repositories
- What kind of support is available?
- Why don’t you guys showcase your client sites?
- What’s in the future for AberdeenCloud?
Have you heard of/used NodeSquirrel?
Use "StartToGrow" it's a 12-month free upgrade from the Start plan to the Grow plan. So, using it means that the Grow plan will cost $5/month for the first year instead of $10. (10 GB storage on up to 5 sites)
Follow me also on Twitter
To make a long story short, Yarn allows the user to write scenarios of the executions of softwares. This scenario will be automatically played by Yarn which also returns the overview of the execution, with the goal to test the behaviour of these softwares.1. Small example of how to use Yarn
Let’s have a look of how to use Yarn with a real example. The scenario will test if the software Brebis, a fully automatized backup checker, executes in an expected way. We can proceed as follow :
- set up the test environment
- launch a command with the software under test in the test environment
- verify the execution of the test
This is an example of a Yarn scenario file, the file is formatted using the Markdown syntax:SCENARIO basic brebis execution GIVEN setting up brebis AND generating backup configuration with brebis WHEN brebis verifies a backup THEN verify brebis output IMPLEMENTS GIVEN setting up brebis hg clone http://hg.brebisproject.org $DATADIR/brebis mkdir -p $DATADIR/brebis/yarn-test cp $DATADIR/brebis/functional-tests/expected-generated-list-for-tar-archive/expected-generated-list-for-tar-archive.tar.gz $DATADIR/brebis/yarn-test IMPLEMENTS GIVEN generating backup configuration with brebis $DATADIR/brebis/brebis.py -G $DATADIR/brebis/yarn-test/expected-generated-list-for-tar-archive.tar.gz IMPLEMENTS WHEN brebis verifies a backup $DATADIR/brebis/brebis.py -c $DATADIR/brebis/yarn-test -l $DATADIR/brebis/yarn-test/brebis.log IMPLEMENTS THEN verify brebis output if [ -s $DATADIR/brebis/yarn-test/brebis.log ]; then return 1; else return 0; fi 2. Result of the execution of the Yarn scenario
Yarn provides at the end of the scenario an overview of the execution, as show below:
$ yarn brebis-scenario
Scenario test suite PASS, with 1 scenarios (4 total steps), in 16.4 seconds
The five first lines are basically your scenario. Each step takes a keyword and a sentence to identify a step. You define a name with the SCENARIO keyword. The next step, GIVEN, allows generally the setup of the test environment. It is possible of course to define different steps with the keywork AND.
Once the environment setup has been completed, we launch the test with the keyword WHEN. At last we check the result of the execution with THEN. It is worth noting that if you need further steps after checking the result of the execution, you can use FINALLY.
Very helpful while setting up the test environment is the variable $DATADIR, automatically initialized by Yarn. It provides the path to a temporary directory where you can store files during the execution of your scenario. This directory is by default removed at the end of the scenario.
Now the real trick: at each step I described above is associated shell commands to execute thanks to the IMPLEMENTS keyword.It’s in my opinion a great way to increase the understanding of what the scenario really does. In a short glance of the first lines, if the names of the steps are carefully chosen, you will understand what the scenario does without needing to read the actual shell code. Simple and efficient.4. More about Yarn
Yarn is written in Python and now available in Debian in the package cmdtest. The sources are available here. In my opinion, if you were looking for this kind of tool, Yarn is in a really good direction. This project is still young but the core features do the job and the upstream is eager to receive feedbacks (and patches)
- The official webpage of cmdtest/Yarn
- Source code of cmdtest/Yarn
- Yarn README
- Introduction to Yarn by his author Lars Wirzenius
Interested in Yarn? What do you think about it? Let us know in the comments of this post.
I love CiviCRM, but sometimes visualising and 'reporting' on data can be a complicated process and personally I think the Drupal Views module is a perfect way of easily generating listings and reports that can be filtered, sorted and manipulated on the fly by non-technical users.
Currently, Views intergration is pretty good but there's more work to do and I'm taking over the views maintenance of CiviCRM, to not only fix bugs, but also add enhahncements and features.
Let me know what you're looking for either in the comments or by creating an issue and tagging it 'views3' and we'll see what we can all accomplish.
There are times when doing Drupal development when you need to run a custom PHP script, maybe moving data from one field to another, that doesn't warrant the time and effort to create a custom module. In this scenario, it would be quicker to write a .php script and bootstrap Drupal to gain access to functions like node_load() and db_query().
To bootstrap Drupal, you would need to add some additional lines of code to the stop of your script. Something like:<?php // Bootstrap Drupal. $drupal_path = $_SERVER['DOCUMENT_ROOT']; define('DRUPAL_ROOT', $drupal_path); require_once DRUPAL_ROOT . '/includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); // Do stuff. $node = node_load(1);
The script would need be placed in the root of your Drupal directory, and you would then have had to open a browser window and visit http://example.com/foo.php to execute it. This is where the "drush script" (or "drush scr" for short) command is useful, and can be used to execute the script from the command line.$ drush scr foo.php
It also means that I no longer need to manually bootstrap Drupal, so my script is much cleaner.<?php // Just do stuff. $node = node_load(1);
I prefer to keep these scripts outside of my Drupal directory in a separate "scripts" directory (with Drupal in a "drupal" directory on the same level). This makes it easier to update Drupal as I don't need to worry about accidentally deleting the additional files. From within the drupal directory, I can now run the following command to go up one level, into the scripts directory and then execute the script.$ drush scr ../scripts/foo.php
If you commonly use the same scripts for different projects, you could also store these within a separate Git repository and checkout the scripts directory using a Git submodule.Tags:
Contrib Search maintainers are committed to make Drupal 8 kick ass with Search API.
Search is a massively cool technology spectrum with loads of really tough problems such as language stemming, delivering search as a site scales and helping customers actually find what they want. However, solving these is not so easy. Let’s look at the history of Search and Solr in Drupal.
I'm turning 35 today. 35 is a weird age. It feels like a milestone birthday; like I'm turning the corner into adulthood for good. Turning 35, it seems, is not without complications. I feel like I became part of the old folk whose cool is threatened by youngsters. Anxious, as I've so much left to achieve and experience.
And yet, I am following my passions and there is not much more I'd want. People have asked me what I'd like for my birthday. I'd love it if you gave me one of the following two things:
A number of countries offer women various social benefits during maternity leave. A new scheme in Australia promises to give virtually all women one hundred percent of their salary for 6 months, capped at a whopping $12,500 per month (some believe it has been funded by abolishing fibre-to-the-home, but that is another topic...)
Many women worry about being out of the workforce for too long and the potential impact on their skills and professional networks. In computing jobs, technology can change a lot in 6 months.
This could be a perfect opportunity for free software development, a win-win situation for women and the wider free software community.
Gnome's latest round of Outreach Program for Women, which has been supported by numerous other projects (such as Debian) offers a $5,000 stipend for a 3 month internship. It has attracted a lot of attention from students and female developers outside the locations where high salaries are the norm.
Australia's maternity leave scheme, however, would appear to squarely match with the salary expectations of more senior software developers with university degrees and several years of industry experience.
Free software development matches well with maternity leave, some of the reasons for this are obvious:
- No management structure, so the female developer can choose to work on the type of code that interests her most and where she is most likely to excel and innovate.
- Many projects are heavily weighted around the concept of the volunteer: Debian even states this explicitly in the constitution. People are not under any contractual obligation to finish anything on a deadline (or finish anything at all).
- Most of the collaboration is made asynchronously using email rather than the immediate pressure of meetings and teleconferences in an office environment.
All of a sudden, women now have an interesting opportunity to spend six months on full pay boosting their skills. At the end of this period, some may even choose to redefine their career, performing free software development work on a freelance basis rather than going back to a nine-to-five office environment.How can free software communities maximise this opportunity?
One thing that we know from the statistics is that most free software projects have far fewer women than the industry average. While 1 in 5 computing graduates is female, only 1 in 50 Debian Developers is female.
The reasons for this are subject to debate and speculation. Nonetheless, it would appear that a lot of women may simply not even be aware of the free software opportunity and the positive effect it can have on their career and the technology they use in everyday life.
Free software communities may want to consider more pro-actively trying to make contact with female developers, making conferences more open to female developers with small children/babies or developing induction materials to help developers who have worked within a very narrow field of development to quickly transition from a very proprietary corporate IT environment to a self-managed home Linux environment.
With some CMSs such as Joomla, menus are very powerful features. They can control layouts, permissions, metadata and much more.
In Drupal, menus have almost no power at all. By default, menus are not capable of controlling much more than the destination of their link.
So, we end up with a lot of questions about menus. This week a member asked us how they control who can see menu links. This tutorial is our answer.
We're going to show how Drupal menu permissions work and how you can make them more powerful.
I wanted to create a Deb-o-Matic environment to testbuild packages for a different architecture. Taking inspiration on Stéphane’s excellent blog post, I tried to replicate the creation of a cross-architecture Linux container in Debian. Here are the steps I made:
Load binfmt_misc module:
# modprobe binfmt_misc
Install the required packages:
# apt-get install lxc debootstrap rsync qemu-user-static binfmt-support
Mount the cgroup virtual filesystem:
# mkdir /cgroup
# echo "none /cgroup cgroup defaults 0 0" >> /etc/fstab
# mount -a
I needed a specific template to create a cross-architecture container. I used the excellent one by Laurent Vivier. Download it, rename it as lxc-cross-debian, mark it executable, and store it under /usr/share/lxc/templates.
Create the cross-architecture container, an armhf one in this case:
# lxc-create -t cross-debian -n debian-armhf -- --arch armhf --suite sid --interpreter-path /usr/bin/qemu-arm-static
After a while, the container was created and I enjoyed my brand new armhf test machine
The process has been ongoing for more than a year but the Debian technical committee is about to select a candidate to recommend for its vacant seat. The Debian Project Leader will then (likely) appoint him (looks like it won’t be a women).
If you look at the current membership of the committee, you will see:
- Bdale Garbee: USA
- Russ Allbery: USA
- Don Armstrong: USA
- Andreas Barth: Germany
- Ian Jackson: United Kingdom
- Steve Langasek: USA
- Colin Watson: United Kingdom
That’s very Anglo-Saxon centric (6 out of 7 members). While I trust the current members and while I know that they are open-minded people, it still bothers me to see this important body with so few diversity.
Coming back to the choice at hand, Keith Packard is American and Philipp Kern is German. No new country in the mix. I can only hope that Philipp will be picked to bring some more balance in the body.
If widgets aren't enough, then you can always use Twitter's REST API to build custom functionality.
Drupal has a bunch of contributed modules that make it easy to integrate Twitter into Drupal.
In this article, I'll show you a few popular modules that can help you add embedded widgets and access Twitter's API from within Drupal.
Tor is a proxy server which allows its users to hide their IP address from the websites they connect to. In order to provide this level of anonymity however, it introduces latency into these connections, an unfortunate performance-privacy trade-off which means that few users choose to do all of their browsing through Tor.
Here are a few things that I have found work quite well through Tor. If there are any other interesting use cases I've missed, please leave a comment!Tor setup
There are already great docs on how to install and configure the Tor server and the only thing I would add is that I've found that having a Polipo proxy around is quite useful for those applications that support HTTP proxies but not SOCKS proxies.
The whole idea behind RSS feeds is that articles are downloaded in batch ahead of time. In other words, latency doesn't matter.
I use akregator to read blogs and the way to make it fetch articles over Tor is to change the KDE-wide proxy server using systemsettings and setting a manual proxy of localhost on port 8008 (i.e. the local instance of Polipo).
Similarly, I use podget to automatically fetch podcasts through this cron job in /etc/cron.d/podget-francois:0 12 * * 1-5 francois http_proxy=http://localhost:8008/ https_proxy=http://localhost:8008/ nocache nice ionice -n7 /usr/bin/podget -s
Prior to that, I was using hpodder and had the following in ~/.hpodder/curlrc:proxy=socks4a://localhost:9050 GnuPG
For those of us using the GNU Privacy Guard to exchange encrypted emails, keeping our public keyring up to date is important since it's the only way to ensure that revoked keys are taken into account. The script I use for this runs once a day and has the unfortunate side effect of revealing the contents of my address book to the keyserver I use.
Therefore, I figured that I should at least hide my IP address by putting the following in ~/.gnupg/gpg.conf:keyserver-options http-proxy=http://127.0.0.1:8008
However, that tends to makes key submission fail and so I created a key submission alias in my ~/.bashrc which avoids sending keys through Tor:alias gpgsendkeys='gpg --send-keys --keyserver-options http-proxy=""' Instant messaging
Communication via XMPP is another use case that's not affected much by a bit of extra latency.
To get Pidgin to talk to an XMPP server over Tor, simply open "Tools | Preferences" and set a SOCKS5 (not Tor/Privacy) proxy of localhost on port 9050.GMail
Finally, I found that since I am running GMail in a separate browser profile, I can take advantage of GMail's excellent caching and preloading and run the whole thing over Tor by setting that entire browser profile to run its traffic through the Tor SOCKS proxy on port 9050.
- Find a relevant-looking project on github. If the name includes Symfony, all the better. It doesn't need to be the main Symfony project. The characters S-y-m-f-o-n-y causes everyone responsible for core to lose all sanity.
- Shovel your code into the project.
- Submit for core inclusion. Do not forget the "Proudly found elsewhere" and the "Symfony" tags.
- Even if someone points out the difference between Symfony and your project, a few weasel words will easily suffice. Noone will check the actual maturity, documentation or test coverage. Don't worry, you used the magic word "Symfony" and everyone is in your thrall already.
- Done! Your code is now in core without any review within a week even if that week is mostly holidays (it is helpful to pull this during holidays so noone can catch this sleight of hand) .