FLOSS Project Planets

Justin Mason: Links for 2017-08-12

Planet Apache - Sat, 2017-08-12 19:58
  • Hyperscan

    a high-performance multiple regex matching library. It follows the regular expression syntax of the commonly-used libpcre library, yet functions as a standalone library with its own API written in C. Hyperscan uses hybrid automata techniques to allow simultaneous matching of large numbers (up to tens of thousands) of regular expressions, as well as matching of regular expressions across streams of data. Hyperscan is typically used in a DPI library stack. Hyperscan began in 2008, and evolved from a commercial closed-source product 2009-2015. First developed at Sensory Networks Incorporated, and later acquired and released as open source software by Intel in October 2015.  Hyperscan is under a 3-clause BSD license. We welcome outside contributors. This is really impressive — state of the art in parallel regexp matching has improved quite a lot since I was last looking at it. (via Tony Finch)

    (tags: via:fanf regexps regular-expressions text matching pattern-matching intel open-source bsd c dpi scanning sensory-networks)

Categories: FLOSS Project Planets

Sooper Drupal Themes: Unsplash Drupal Module, Product Updates For Drupal 7 and Drupal 8.x-alpha2

Planet Drupal - Sat, 2017-08-12 18:28

Today we announce updates to our Drupal 7 Glazed Theme and Builder, an update alpha2 release for Drupal 8 (Testing only) and announce the Unsplash Media module.

Media Unsplash: Free Photos Without Leaving Your Website

This week we're adding a new module to our Glazed CMS Distribution that will be especially exciting to all designers, publishers, marketers, and lovers of photograph among us. Rather than searching Google for free photos, you can browse the Unsplash collection of over 200.00 free photos right in your Drupal 7 Media popup. To the uninitiated: Unsplash is a carefully curated collection of professional photography that has been shaking up the stock photography market in the past few years. All photos are provided totally free with a do whatever you want license. This module provides a simple search interface right in your Media popup, see how simple it works in the video:

Sorry, the Youtube video can't load here, you may view this post SooperThemes.com and play the video

This module was built by Vallic based on our initiative/idea, collaboration and co-sponsoring. It was an especially smooth collaboration because Vallic has previously ported the media_pixabay module and allthough the Unsplash API was slightly more complicated, the scaffolding of that module could be re-used.

Integration with the Drupal 7 Media module means that the Unsplash library is also available when configuring theme settings, building pages with our Drupal Drag and Drop Builder, and in any other form that leverages the Media browser.

Drupal 8 Alpha2 Test Release

Just 10 days after our first test release for Drupal 8 we are bringing you alpha2! If you are a customer and curious (or excited) about Drupal 8 please join us in the alpha2 testing and feedback thread! The more testing we can do now, the faster we can release the beta and stable version when Drupal 8.4 comes out. Join in and test our latest and greatest today!

Changes in alpha2:

  • Demo Content Import now works if you select and import any language in the installer! The content will be naturalized to match your selected language. This means you can edit demo content and translate it as if it was initially created in your webite's primary language.
  • Fixed missing titles on views and blocks in Glazed Builder
  • Updated branding & Design
  • Minor performance improvements
Glazed Theme 7.x-2.6.5 Release

Today's updates for Glazed theme include a number of minor bug fixes as well as improvements to the admin interface for themers. Several performance improvements were also realized. We added minification to more of the custom Glazed javascript files, we updated some 3rd party libraries (animate.css), and dropped the modernizr dependency for our animated mobile menu. See Changelog for more details.

The branding and design of some elements are slightly changed to reflect the changes we are making for the Drupal 8 release. There's even a single SVG icon that made it into this release, it's from Font Awesome 5 (beta). Expect more where that came from!

Glazed Builder 7.x-1.1.4 Release

This minor release for Glazed Builder includes small bug fixes, some editor-experience enhancements. Modernizations in code and design that reflect the work we are doing for the Drupal 8 release are also included. See Changelog for details.

Try Glazed Builder On Trysooperthemes.com

The Admin demo is free, no registration required!

Important NoteS If You're Updating A Complete Installation Profile

We open sourced our GridStack Drupal module! Now our profiles includes sooperthemes_gridstack. This is a rebrand of the glazed_gridstack module that you might have in your website. If you're updating your installation profile you should check if you use any GridStack view on your site. If you do, you can choose to either disable the sooperthemes_gridstack module, or rebuild (or export/import) them using the SooperThemes GridStack module and then disable and uninstall the glazed_gridstack module. This goes both for customers using our premium theme and for people on the free Glazed CMS Distribution.

Join SooperThemes Or Upgrade To Unlimited today!

We're super excited about our Drupal products and we think you will be too! If you're on the fence about getting a subscription, or waiting for the Drupal 8 products, wait no longer! Join now and get 10% discount if you join our newsletter. Once you've tried Glazed Theme and our Glazed Drag And Drop Builder you''ll never build Drupal sites the old way again. Joining is risk free, no questions asked refund policy if you change your mind within 20 days after purchase.

Subscribe Now To Download

Risk Free: 20 day refund policy

Categories: FLOSS Project Planets

Bryan Pendleton: Arcadia: a very short review

Planet Apache - Sat, 2017-08-12 18:13

I've been trying to put my finger on why Iain Pears's Arcadia is such an engrossing and entertaining book.

For one thing, it's a book that you can enjoy in many different ways:

  • Like Connie Willis's To Say Nothing of the Dog, it's a delightful piece of time travel fiction.

  • Like David Mitchell's Cloud Atlas, it's a collection of multiple stories, involving the "same" characters in wildly different settings, inter-twined and juxtaposed.

  • Like C.S. Lewis's Narnia series, and George Orwell's Animal Farm, it's a rumination on current events, by way of a complex fantasy allegory describing how characters work out their problems in a completely different world with completely different rules.

  • And, oh, yeah, like George Orwell's 1984, it's a dystopian novel about the dangers of science, technology, and authoritarian social structures.

Uhm, that's a lot of pretty wonderful books to compare Arcadia to.

Yet I don't feel it's unfair to put Arcadia in the midst of such a discussion; Pears is a superb writer and pulls off these various technical exploits with flair and ease.

But I'd like to suggest that Arcadia's main interest lies in a slightly different direction, something suggested less by the above comparisons but more by Yuvah Noah Harari's Sapiens.

Harari, as you will recall if you've read Sapiens, advances the premise that what makes Homo Sapiens unique is that we are creatures who can envision, imagine, and communicate about things that don't (yet?) exist. That is: Sapiens can invent fiction; Sapiens can tell stories.

I think Pears is fascinated by that most basic of questions that faces writers of fiction: can a story actually change the world?

Early on, we are introduced to our protagonist, Henry Lytten, who has had a number of careers in the past, but now entertains himself by working on his book, a passion he's had since his youth, when he used to read "tales of knights and fair maidens, of gods and goddesses, of quests and adventures."

Regularly, he meets with his friends in the pub; they are all storytellers, and they discuss their efforts. This week, it is Lytten's turn:

"Very well, gentlemen, if you could put your drinks down and pay attention, then I will explain."

"About time."

"In brief..."

"Surely not?"

"In brief, I am creating the world."

He stopped and looked around. The others seemed unimpressed. "No goblins?" one asked hopefully.

Lytten sniffed. "No goblins," he said. "This is serious. I want to construct a society that works. With beliefs, laws, superstitions, customs. With an economy and politics. An entire sociology of the fantastic."

"An entire sociology of the fantastic." Oh, my, that is a gorgeous turn of phrase.

But: creating the world? Constructing a society? How does this actually work, in practice?

Later, Pears tries to explain this in more detail.

I spent many years reading -- really reading, I mean, in libraries at a wooden desk, or curled up on a settee with a little light, holding the book in my hands, turning the pages, glass of brandy, warm fire, all of that. Anyway, I was reading La Cousine Bette by Balzac (which I also recommend) and was struck by how convincing were both the characters and the situations he described. I wondered whether Balzac had taken them from personal observation and simply amended real people and circumstance to serve his purpose.

Then it dawned on me in a moment of such excitement I can remember it perfectly well to this day. Of course he had done that; he had transferred reality into his imagination. But -- and this was my great insight -- he must, at the same time, have transferred his imagination into reality. Clearly, in an infinite universe every possibility must exist, including Balzac's. Imagining Cousin Bette called her into being, although only potentially. The universe is merely a quantity of information; imagining a fictional character does not add to that quantity -- it cannot do so by definition -- but does reorganize it slightly. The Bette-ish universe has no material existence, but the initial idea in Balzac's brandy-soaked brain then spreads outwards: not only to those who read his books, but also, by implication, backwards and forwards. Imagining Cousin Bette also creates, in potential, her ancestors and descendants, friends, enemies, acquaintances, her thoughts and actions and those of everybody else in her universe.

This is as marvelous and compelling a vision of the power of the imagination as I could ever want.

Of course, Pears knows that it isn't, certainly, as simple as that.

Not many people, I suppose, have even the remotest chance of seeing their literary creation in the flesh. Henry is convinced that Shakespeare knew his Rosalind personally in some guise, but that is quite rare. I am sure Dickens would have jumped at the chance of some time in the pub with Mr. Pickwick. No doubt Jane Austen would have got on like a house on fire with Mr. Darcy, and what about Bram Stoker spending an evening chatting away to Count Dracula over a cup of cocoa.

Things move on, and there is some folderol about time travel, and the multiple universes hypothesis, and other notions of that sort, but really, Pears is after something simpler.

Something more fundamentally human.

Something more fundamentally powerful.

Something more fundamentally literary:

"Nothing could happen, because there was no cause of anything happening. Similarly, without effects, there could be no causes. That was to ensure it could have no past or future."

"She got it wrong?"

"No. That girl messed it up, and you don't seem to have helped just now either."

"Rosie? How?"

"She walked into it. You say hello, they say hello back, which they otherwise would not have done. Cause and effect, you see. Anyone who says hello must be real. They must have parents, grandparents, all the way back. That girl started this frozen experiment moving and developing, and that is causing it to join up to the past and future. When I arrived, the effects had already spread back that far. it is now clear the shock waves have spread very much further."

You say hello, they say hello back; anyone who says hello must be real.

What a beautiful sentiment.

What a marvelous illustration of the magnificence and wonder and joy of communication, of imagination, and of storytelling.

Arcadia is a book you can enjoy on many levels.

I certainly did.

Categories: FLOSS Project Planets

Bits from Debian: DebConf17 closes in Montreal and DebConf18 dates announced

Planet Debian - Sat, 2017-08-12 17:59

Today, Saturday 12 August 2017, the annual Debian Developers and Contributors Conference came to a close. With over 405 people attending from all over the world, and 169 events including 89 talks, 61 discussion sessions or BoFs, 6 workshops and 13 other activities, DebConf17 has been hailed as a success.

Highlights included DebCamp with 117 participants, the Open Day,
where events of interest to a broader audience were offered, talks from invited speakers (Deb Nicholson, Matthew Garrett and Katheryn Sutter), the traditional Bits from the DPL, lightning talks and live demos and the announcement of next year's DebConf (DebConf18 in Hsinchu, Taiwan).

The schedule has been updated every day, including 32 ad-hoc new activities, planned
by attendees during the whole conference.

For those not able to attend, talks and sessions were recorded and live streamed, and videos are being made available at the Debian meetings archive website. Many sessions also facilitated remote participation via IRC or a collaborative pad.

The DebConf17 website will remain active for archive purposes, and will continue to offer links to the presentations and videos of talks and events.

Next year, DebConf18 will be held in Hsinchu, Taiwan, from 29 July 2018 until 5 August 2018. It will be the first DebConf held in Asia. For the days before DebConf the local organisers will again set up DebCamp (21 July - 27 July), a session for some intense work on improving the distribution, and organise the Open Day on 28 July 2018, aimed at the general public.

DebConf is committed to a safe and welcome environment for all participants. See the DebConf Code of Conduct and the Debian Code of Conduct for more details on this.

Debian thanks the commitment of numerous sponsors to support DebConf17, particularly our Platinum Sponsors Savoir-Faire Linux, Hewlett Packard Enterprise, and Google.

About Savoir-faire Linux

Savoir-faire Linux is a Montreal-based Free/Open-Source Software company with offices in Quebec City, Toronto, Paris and Lyon. It offers Linux and Free Software integration solutions in order to provide performance, flexibility and independence for its clients. The company actively contributes to many free software projects, and provides mirrors of Debian, Ubuntu, Linux and others.

About Hewlett Packard Enterprise

Hewlett Packard Enterprise (HPE) is one of the largest computer companies in the world, providing a wide range of products and services, such as servers, storage, networking, consulting and support, software, and financial services.

HPE is also a development partner of Debian, and provides hardware for port development, Debian mirrors, and other Debian services.

About Google

Google is one of the largest technology companies in the world, providing a wide range of Internet-related services and products as online advertising technologies, search, cloud computing, software, and hardware.

Google has been supporting Debian by sponsoring DebConf since more than ten years, at gold level since DebConf12, and at platinum level for this DebConf17.

Categories: FLOSS Project Planets

Steve Kemp: A day in the life of Steve

Planet Debian - Sat, 2017-08-12 17:00

I used to think I was a programmer who did "sysadmin-stuff". Nowadays I interact with too many real programmers to believe that.

Or rather I can code/program/develop, but I'm not often as good as I could be. These days I'm getting more consistent with writing tests, and I like it when things are thoroughly planned and developed. But too often if I'm busy, or distracted, I think to myself "Hrm .. compiles? Probably done. Oops. Bug, you say?"

I was going to write about working with golang today. The go language is minimal and quite neat. I like the toolset:

  • go fmt
    • Making everything consistent.
  • go test

Instead I think today I'm going to write about something else. Since having a child a lot of my life is different. Routine becomes something that is essential, as is planning and scheduling.

So an average week-day goes something like this:

  • 6:00AM
    • Wake up (naturally).
  • 7:00AM
    • Wake up Oiva and play with him for 45 minutes.
  • 7:45AM
    • Prepare breakfast for my wife, and wake her up, then play with Oiva for another 15 minutes while she eats.
  • 8:00AM
    • Take tram to office.
  • 8:30AM
    • Make coffee, make a rough plan for the day.
  • 9:00AM
    • Work, until lunchtime which might be 1pm, 2pm, or even 3pm.
  • 5:00PM
    • Leave work, and take bus home.
    • Yes I go to work via tram, but come back via bus. There are reasons.
  • 5:40PM
    • Arrive home, and relax in peace for 20 minutes.
  • 6:00PM-7:00PM
    • Take Oiva for a walk, stop en route to relax in a hammock for 30 minutes reading a book.
  • 7:00-7:20PM
    • Feed Oiva his evening meal.
  • 7:30PM
    • Give Oiva his bath, then pass him over to my wife to put him to bed.
  • 7:30PM - 8:00pm
    • Relax
  • 8:00PM - 10:00PM
    • Deal with Oiva waking up, making noises, or being unsettled.
    • Try to spend quality time with my wife, watch TV, read a book, do some coding, etc.
  • 10:00PM ~ 11:30PM
    • Go to bed.

In short I'm responsible for Oiva from 6ish-8ish in the morning, then from 6PM-10PM (with a little break while he's put to bed.) There are some exceptions to this routine - for example I work from home on Monday/Friday afternoons, and Monday evenings he goes to his swimming classes. But most working-days are the same.

Weekends are a bit different. There I tend to take him 6AM-8AM, then 1PM-10PM with a few breaks for tea, and bed. At the moment we're starting to reach the peak-party time of year, which means weekends often involve negotiation(s) about which parent is having a party, and which parent is either leaving early, or not going out at all.

Today I have him all day, and it's awesome. He's just learned to say "Daddy" which makes any stress, angst or unpleasantness utterly worthwhile.

Categories: FLOSS Project Planets

Bastian Blank: Network caps in cloud environments

Planet Debian - Sat, 2017-08-12 17:00

Providing working network is not easy. All the cloud providers seem to know how to do that most of the time. Providing enough troughput is not easy either. Here it get's interresting as the cloud providers tackle that problem with completely different results.

There are essentially three large cloud providers. The oldest and mostly known cloud provider is Amazon Web Services (AWS). Behind that follow Microsoft with Azure and the Google Cloud Platform (GCP). Some public instances of OpenStack exist, but they simply don't count anyway. So we remain with three and they tackle this problem with widely different results.

Now, what network troughput is necessary for real world systems anyway? An old friend gives the advice: 1Gbps per Core of uncongested troughput within the complete infrastructure is the minimum. A generalization of this rule estimates around 1bps per clock cycle and core, so a 2GHz core would need 2Gbps. Do you even get a high enough network cap at your selected cloud provider to fill any of these estimates?

Our first provider, AWS, publishes a nice list of network caps for some of there instance types. The common theme in this list is: for two cores (all the *.large types) you get 500Mbps, for four cores (*.xlarge) you get 750Mbps and for eight cores (*.2xlarge) you get 1000Mbps. This is way below our estimate shown above and does not even raise linear with the number of cores. But all of this does not really matter anyway, as the performance of AWS is the worst of the three providers.

Our second provider, Azure, seems to not publish any real information about network caps at all. From my own knowledge it is 50MBps (500Mbps) per core for at least the smaller instances. At least is scales linear with instance size, but is still way below our estimates.

Our third provider, GCP, documents a simple rule for network caps: 2Gbps per core. This matches what we estimated.

Now the most important question: does this estimate really work and can we actually fill it. The answer is not easy. A slightly synthetic test of a HTTP server with cached static content showed that it can easily reach 7Gbps on a 2GHz Intel Skylake core. So yes, it gives a good estimate on what network troughput is needed for real world applications. However we still could easily file pipe that is larger by a factor of three.

Categories: FLOSS Project Planets

Jeremy Epstein: Using Python's namedtuple for mock objects in tests

Planet Python - Sat, 2017-08-12 16:56

I have become quite a fan of Python's built-in namedtuple collection lately. As others have already written, despite having been available in Python 2.x and 3.x for a long time now, namedtuple continues to be under-appreciated and under-utilised by many programmers.

# The ol'fashioned tuple way fruits = [ ('banana', 'medium', 'yellow'), ('watermelon', 'large', 'pink')] for fruit in fruits: print('A {0} is coloured {1} and is {2} sized'.format( fruit[0], fruit[2], fruit[1])) # The nicer namedtuple way from collections import namedtuple Fruit = namedtuple('Fruit', 'name size colour') fruits = [ Fruit(name='banana', size='medium', colour='yellow'), Fruit(name='watermelon', size='large', colour='pink')] for fruit in fruits: print('A {0} is coloured {1} and is {2} sized'.format( fruit.name, fruit.colour, fruit.size))

namedtuples can be used in a few obvious situations in Python. I'd like to present a new and less obvious situation, that I haven't seen any examples of elsewhere: using a namedtuple instead of MagicMock or flexmock, for mocking objects in unit tests.

Categories: FLOSS Project Planets

Sam Hartman: Debian: a Commons of Innovation

Planet Debian - Sat, 2017-08-12 16:10
I recently returned from Debconf. This year at Debconf, Matthew Garrett gave a talk about the next twenty years in free software. In his talk he raised concerns that Debian might not be relevant in that ecosystem and talked about some of the trends that contribute to his concerns.
I was talking to Marga after the talk and she said that Debian used to be a lot more innovative than it is today.
My initial reaction was doubt; what she said didn't feel right to me. At the time I didn't have a good answer. Since then I've been pondering the issue, and I think I have a partial answer to both Marga and Matthew and so I'll share it here.
In the beginning Debian focused on a lot of technical innovations related to bringing an operating system together. We didn't understand how to approach builds and build dependencies in a uniform manner. Producing packages in a clean environment was hard. We didn't understand what we wanted out of packages in terms of a uniform approach to configuration handling and upgrades. To a large extent we've solved those problems.
However, as the community has grown, our interests are more diverse. Our users and free software (and the operating system we build together) are what bring us together: we still have a central focus. However, no one technical project captures us all. There's still significant technical innovation in the Debian ecosystem. That innovation happens in Debian teams, companies and organizations that interact with the Debian community. We saw several talks about such innovation this year. I found the talk about ostree and flatpak interesting, especially because it focused on people in the broader Debian ecosystem valuing Debian along with some of the same technologies that Matthew is worried will undermine our relevance.
Matthew talked about how Debian ends up being a man-in-the-middle. We're between users and developers. we're between distributions and upstreams. Users are frustrated because we hold back the latest version of software they want from getting to them. Developers are frustrated because we present our users with old versions of their software configured not as they would like, combined with different dependencies than they expect.
All these weaknesses are real.
However, I think Debian-in-the-middle is our greatest strength both on the technical and social front.
I value Debian because I get a relatively uniform interface to the software I use. I can take one approach to reporting bugs whether they are upstream or Debian specific. I expect the software to behave in uniform ways with regard to things covered by policy. I know that I'm not going to have to configure multiple different versions of core dependencies; for the most part system services are shared. When Debian has value it's because our users want those things we provide. Debian has also reviewed every source file in the software we ship to understand the license and license compatibility. As a free software supporter and as someone who consumes software in commercial context, that value alone is enormous.
The world has evolved and we're facing technologies that provide different models. They've been coming for years: Python, Ruby, Java, Perl and others have been putting together their own commons of software. They have all been working to provide virtualization to isolate one program (and its dependencies) from another. Containerization takes that to the next level. Sometimes that's what our users want.
We haven't figured out what the balances are, how we fit into this new world. However, I disagree with the claim that we aren't even discussing the problem. I think we're trying a lot of things off in our own little technical groups. We're just getting to the level of critical mass of understanding where we can take advantage of Debian's modern form of innovation.
Because here's the thing. Debian's innovation now is social, not technical. Just as we're in the middle technically, we're in the middle socially. Upstreams, developers, users, derivatives, and all the other members of our community work together. we're a place where we can share technology, explore solutions, and pull apart common elements. This is the first Debconf where it felt like we'd explored some of these trends enough to start understanding how they might fit together in a whole. Seven years ago, it felt like we were busy being convinced the Java folks were wrong-headed. A couple of years later, it felt like we were starting to understand our users' desires that let to models different than packaging, but we didn't have any thoughts. At least in my part of the hallway it sounded like people were starting to think about how they might fit parts together and what the tradeoffs would be.
Yes, Matthew's talk doubtless sparked some of that. I think he gave us a well deserved and important wake-up call. However, I was excited by the discussion prior to Thursday.
What I'm taking a way is that Debian is valuable when there's a role in the middle. Both socially and technically we should capitalize on situations where something between makes things better and get out of the way where it does not.
Categories: FLOSS Project Planets

Drupal core announcements: Drupal core security release window on Wednesday, August 16, 2017; 8.4.0 beta begins week of August 14

Planet Drupal - Sat, 2017-08-12 16:01
Start:  2017-08-15 12:00 - 2017-08-17 12:00 UTC Event type:  Online meeting (eg. IRC meeting)

The monthly security release window for Drupal 8 and 7 core will take place on Wednesday, August 16.

This does not mean that a Drupal core security release will necessarily take place on that date for any of the Drupal 8 or 7 branches, only that you should watch for one (and be ready to update your Drupal sites in the event that the Drupal security team decides to make a release).

Drupal 8.4.0-beta1 will also be released sometime during the week to continue preparation for the upcoming minor release in October.

There will be no bug fix or stable feature release on this date. The next window for a Drupal core patch (bug fix) release for all branches is Wednesday, September 06. The next scheduled minor (feature) release for Drupal 8 will be on Wednesday, October 5.

For more information on Drupal core release windows, see the documentation on release timing and security releases, and the discussion that led to this policy being implemented.

Categories: FLOSS Project Planets

Release GCompris Qt 0.80

Planet KDE - Sat, 2017-08-12 13:03


We are pleased to announce the release of GCompris version 0.80.

This new version contains 6 new activities:

  • a categorization activity where the child has to categorize item depending on the theme (by Divyam Madaan)
  • a guess count game where the child has to find the good operation to find a given number (by Rahul Yadav)
  • a game where you have to let the opponent put the last ball (by Utkarsh Tiwari)
  • same as above but the child plays with a friend (by Utkarsh Tiwari)
  • a checkers game (by Johnny Jazeix)
  • same as above but the child plays with a friend (by Johnny Jazeix)

We always have new features and bug fixes:

  • Polish lang dataset by Łukasz Wojniłowicz
  • Swedish lang dataset by Stefan Asserhäll
  • Ukrainian lang dataset by Yuri Chornoivanx
  • new icons
  • updated graphics on several activities
  • lots of bug fixes
  • website translation migrated to KDE infrastructure and translated in Belarusian, Catalan, Catalan (Valencia), Romanian, Portuguese and Ukrainian
  • new mingw windows builds
  • partial translations in Greek and Hindi


You can find this new version here:

  • Android:

The new version is available in the Android store


  • Windows:

Windows 32bit or Windows 64bit version


  • Linux:

If your distribution doesn’t provide an updated package, use one of those standalone installers. They must be launched from command line, after adding executable permission on the file. (based on Centos7 – will not work on distributions with older system libraries).
Linux 32bit or Linux 64bit version




  • md5sums :


For all downloads: md5sums



  • GPG verification :

The source tarball, the windows and the linux installers are signed. You can retrieve the public key over https here: 0x63d7264c05687d7e.asc.



On the translation side, we have 17 languages fully supported: Belarusian, British English, Brazilian Portuguese, Catalan, Catalan (Valencian), Dutch, French, Galician, Italian, Norwegian Nynorsk, Polish, Portuguese, Romanian, Spanish, Swedish, Turkish, Ukrainian; and some partially: Breton (75%), Chinese Simplified (88%), Chinese Traditional (90%), Estonian (91%), Finnish (63%), German (92%), Greek (90%), Hindi (98%), Russian (88%), Slovak (88%), Slovenian (80%).

If you want to help, please make some posts in your community about GCompris.

Thank you all,
Timothée & Johnny

Categories: FLOSS Project Planets

Andre Roberge: Reeborg's World: a new version and a book

Planet Python - Sat, 2017-08-12 09:54
After more than a year of rewriting, reorganizing and adding features, a new version of Reeborg's World is finally available.  I have done some fairly extensive testing ... but there's nothing like having other users testing it to discover bugs. I'm hoping to eliminate any remaining bugs by September, in time for the new school year.

As I started to write documentation explaining the new features, I quickly realized that there were a lot of things to be described … so many in fact that it has become a book titled Reeborg’s World: a Teacher’s Guide.  The book is not finished yet but it is available online.

Categories: FLOSS Project Planets

Import Python: Import Python 137

Planet Python - Sat, 2017-08-12 09:23
Worthy Read
Python Oddities Favorite #pythonoddity tweets by @treyhunner
Python for AI research - podcast Today you'll meet Alex Lavin, a Python developer and research scientist at Vicarious where they are trying to develop artificial general intelligence for robots.
Catch Errors Before Users Do Error monitoring, alerting, analytics. Root cause to resolution in 30 secs.
Python decorators, the right way: the 4 audiences of programming languages - Code Without Rules If you’re a Python programmer, the following post will show you why decorators exist, and how to compensate for their limitations.
The Hitchhiker’s Guide to Machine Learning in Python Featuring implementation code, instructional videos, and more
machine learning
Amazon S3 Filesystem for Python I'd like to announce an new Python module to make working with Amazon S3 files a whole lot easier.
aws, s3
Clean Architecture in Django This post will try to explain our approach to apply Clean Architecture on a Django Restful API. It is useful to be familiarized with Django framework as well as with Uncle Bob's Clean Architecture before keep reading.
Week 2 and Useful Pandas Techniques pandas
Predicting Stock Prices in 50 lines of Python In this blog post we’re going to build a stock price predication graph using scimitar-learn in just 50 lines of Python.
stock trading
#DjangoTip?—?Playing with Querysets django
Python Software Foundation News The Ethical Maintainer: Community Service Award Recipient Glyph Lefkowitz.
Sublime Plugin for Spotify from Scratch Part 1 - Series Introduction & Environment Setup.
sublime plugin
Pycon Australia 2017 Videos pycon

tinychain - 1031 Stars, 52 Fork A pocket-sized implementation of Bitcoin.
deep-photo-styletransfer-tf - 161 Stars, 18 Fork Tensorflow (Python API) implementation of Deep Photo Style Transfer.
burpa - 93 Stars, 20 Fork Burp-Automator: A Burp Suite Automation Tool with Slack Integration.
textgenrnn - 75 Stars, 4 Fork textgenrnn is a Python 3 module on top of Keras/TensorFlow which can easily generate text using a pretrained recurrent neural network.
pennsignals/aptos - 57 Stars, 4 Fork A tool for validating data using JSON Schema and converting JSON Schema documents into different data-interchange formats
tsrc - 32 Stars, 1 Fork Manage several git repositories / GitLab automation.
easychain - 18 Stars, 0 Fork A simple python blockchain ledger.
domain_analyzer - 12 Stars, 0 Fork Analyze the security of any domain by finding all the information possible. Made in python.
pygorithm - 0 Stars, 0 Fork A Python module for learning all major algorithms.
mistletoe - 0 Stars, 0 Fork mistletoe is a Markdown parser in pure Python, designed to be fast, modular and fully customizable.
pywonderland - 0 Stars, 0 Fork Render beautiful images or animate interesting algorithms in mathematics with Python.
Categories: FLOSS Project Planets

Jaime Buelta: ffind v1.2.0 released!

Planet Python - Sat, 2017-08-12 08:36
The new version of ffind v1.2.0 is available in GitHub and PyPi. This version includes the ability to configure defaults by environment variables and to force case insensitivity in searches. You can upgrade with     pip install ffind --upgrade This will be the latest version to support Python 2.6. Happy searching! Tagged: english, ffind, pypi, python, software
Categories: FLOSS Project Planets

Catalin George Festila: The flickrapi python module .

Planet Python - Sat, 2017-08-12 08:29
Flickr is one of the most popular photo hosting websites.
The development team let us to test the API and with a plenty of opportunity to use Flickr.
Today I tested the flickrapi python module.
I used the python 2.7 version and pip to install it.
C:\>cd Python27

C:\Python27>cd Scripts

C:\Python27\Scripts>pip install flickrapi
Collecting flickrapi
Downloading flickrapi-2.3-py2-none-any.whl
Running setup.py install for oauthlib ... done
Successfully installed flickrapi-2.3 oauthlib-2.0.2 requests-oauthlib-0.8.0 requests-toolbelt-0.8.0You need to have / make a API key into Account Settings, see my api key:
Your API keys You have 1 API key registered to this account.
Then you need to know your user_id.
This can be done by asking api online with your user name and the result will be something like this: xxxxxxxx@Nxx.
The example I used is from documentation and I change with my api key to test this python module.

>>>import flickrapi
>>>flickr = flickrapi.FlickrAPI(api_key, api_secret)
>>>photos = flickr.photos.search(user_id='xxxxxxxx@Nxx', per_page='10')
>>>sets = flickr.photosets.getList(user_id='xxxxxxxx@Nxx')
>>> dir(sets)
['__class__', '__contains__', '__copy__', '__deepcopy__', '__delattr__', '__delitem__', '__doc__',
'__format__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__iter__', '__len__',
'__new__', '__nonzero__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__',
'__setitem__', '__sizeof__', '__str__', '__subclasshook__', '_init', 'addnext', 'addprevious',
'append', 'attrib', 'base', 'clear', 'cssselect', 'extend', 'find', 'findall', 'findtext', 'get',
'getchildren', 'getiterator', 'getnext', 'getparent', 'getprevious', 'getroottree', 'index', 'insert',
'items', 'iter', 'iterancestors', 'iterchildren', 'iterdescendants', 'iterfind', 'itersiblings',
'itertext', 'keys', 'makeelement', 'nsmap', 'prefix', 'remove', 'replace', 'set', 'sourceline',
'tag', 'tail', 'text', 'values', 'xpath']
>>> print sets.attrib['stat']
>>> sets.find('photosets').attrib
{'total': '4', 'perpage': '4', 'page': '1', 'pages': '1'}
>>> print "upload a photo via browser - set permisions"
upload a photo via browser - set permisions
>>> flickr.authenticate_via_browser(perms='write') - - [12/Aug/2017 22:05:00] "GET /?oauth_token=xxxxxx-xxxxx&oauth_verifier=xxxxxxxxx HTTP/1.1" 200 -
>>> flickr.upload("0001.gif")

>>> print "try show title of my photos and id"
try show title of my photos and id
for child in photos:
for i in child:
photo_set = []
title = i.attrib['title']
print title
except Exception, e:
print e
sets = flickr.photos_getAllContexts(photo_id = i.attrib["id"])
for j in sets:
if j.tag == "set":
print photo_set
The result is my photos title and id:
I tested wit Python 362 version:
C:\Python27>cd ..

C:\>cd Python362

C:\Python362>cd Scripts

C:\Python362\Scripts>pip install flickrapi
Collecting flickrapi
Downloading flickrapi-2.3-py3-none-any.whl
Collecting requests>=2.2.1 (from flickrapi)
Downloading requests-2.18.3-py2.py3-none-any.whl (88kB)
100% |████████████████████████████████| 92kB 1.4MB/s
Collecting six>=1.5.2 (from flickrapi)
Using cached six-1.10.0-py2.py3-none-any.whl
Successfully installed certifi-2017.7.27.1 chardet-3.0.4 flickrapi-2.3 idna-2.5 oauthlib-2.0.2 requests-2.18.3
requests-oauthlib-0.8.0 requests-toolbelt-0.8.0 six-1.10.0 urllib3-1.22
Categories: FLOSS Project Planets

How to extend Brooklyn with new chat protocols

Planet KDE - Sat, 2017-08-12 07:02

Do you like Brooklyn but you use a chat protocol which is not officially supported?
All you have to do is following this tutorial step by step!

First of all, you have to check if there is a Java library for the protocol whereby you want to create the bot.
If it doesn't exist, you've to write it by yourself (as I did to support Rocket.Chat). Then, add the library you have just created to Maven.
Finally import it on Brooklyn through Maven.

Secondly, you have to create a *nameOfTheProtocol*Bot class (e.g. IrcBot) inside the bots package.
This class have to implement the Bot interface: public final class IrcBot implements Bot {
} Then you have to implement these methods:

  • boolean init(String botId, Map configs, String[] channels): here you have to init your bot. botId is the name retrieved from the config file, configs contains all the bot configs and channels is the list of channels in which the bot have to be. It returns true if everything is ok, false otherwise;
  • void addBridge(Bot bot, String channelTo, String channelFrom): it has to connect the channel channelTo of the bot bot to its channel channelFrom so every message received from channelFrom have to be sent to the channel channelTo of bot;
  • Optional<String> sendMessage(BotTextMessage msg, String channelTo): when the bot receives a message from another bot, it has to send it to the right channel. In this case it has to send a text message msg to the channelTo channel. Usually this function returns a message id related to the message, but there are protocols which don't support ids like IRC. In this particular scenario this function simply have to return Optional.empty();
  • Optional<String> sendMessage(BotDocumentMessage msg, String channelTo): same as the previous function, except that it has to send an attachment and not only plain text;
  • void editMessage(BotTextMessage msg, String channelTo, String messageId): it has to edit the message sent on channelTo which has an id messageId. The new message can be retrieved from msg;
  • List getUsers(String channel): it has to return a list of usernames that are inside channel;
  • String getId(): it has to return the botId of the bot in which it is called;
There are protocols in which channel ids are different from the channel names (e.g. telegram).
In this case the bot must have to override String getChannelName(String channelId).
NB: you don't always have to reinvent the wheel.
There is a beautiful class named BotsController which help you formatting messages and routing them correctly.
You should look at other bot classes to learn how to implement these methods correctly.

Finally, when you've done everything you just have to rebuild the application and insert a new bot of type *nameOfTheProtocol*Bot in the config file.

Categories: FLOSS Project Planets

Bryan Pendleton: Software Engineering Interns at Salesforce

Planet Apache - Fri, 2017-08-11 22:33

I hope you can find a few minutes to read this wonderful article by Aditya Shetty: More Than a Brand Name and a Tech Stack: What I Learned During My Engineering Internship at Salesforce.

Aditya sat at the next desk to mine during his summer at Salesforce, and I really enjoyed getting to know him during a brief summer that went by very fast.

He's already a very good software engineer; I think he will be a great one, assuming that's what he decides to do.

Categories: FLOSS Project Planets

Thorsten Glaser: [PSA] Fixing CVE-2017-12836 (Debian #871810) in GNU cvs

Planet Debian - Fri, 2017-08-11 19:49

Considering I’ve become the de-facto upstream of cvs(GNU) even if not yet formally the de-iure upstream maintainer, fixing this bug obviously falls to me — not quite the way I had planned passing this evening after coming home from work and a decent and, worse, very filling meal at the local Croatian restaurant. But, so’s life.

The problem here is basically that CVS invokes ssh(1) (well, rsh originally…) but doesn’t add the argument separator “--” before the (user-provided) hostname, which when starting with a hyphen-minus will be interpreted by ssh as an argument. (Apparently the other VCSes also had additional vulnerabilities such as not properly escaping semicoloi or pipes from the shell or unescaping percent-escaped fun characters, but that doesn’t affect us.)

The obvious fix and the one I implemented first is to simply add the dashes. This will also be backported to Debian {,{,old}old}stable-security.

Then I looked at other VCSes out of which only one did this, but they all added extra paranoia hostname checks (some of them passing invalid hostnames, such as those with underscores in them). OK, I thought, then also let’s add extra checks to CVS’ repository reference handling. This will end up in Debian sid and MirBSD, pending passing the regression tests of course… hah, while writing this article I had to fixup because a test failed. Anyway, it’s not strictly necessary AFAICT to fix the issue.

Update, about 2⅕ hours past midnight (the testsuite runs for several hours): of course, the “sanity” testsuite (which itself is rather insane…) also needs adjustments, plus a bonus fix (for something that got broken when the recent allow-root-regex patch was merged and got fixed in the same go to…night).

tl;dr: a fix will end up in Debian *stable-security and can be taken out of my mail to the bugreport; another few changes for robustness are being tested and then added to both MirBSD and Debian sid. The impact is likely small, as it’s hard to get a user (if you find one, in the first place) to use a crafted CVSROOT string, which is easy to spot as well.

Update, Monday: apparently someone took care of the DSA and DLA yesterday after ACCEPTing the uploads — thanks, I was outside during the day.

Categories: FLOSS Project Planets

Another iteration and one tough bug

Planet KDE - Fri, 2017-08-11 19:30

One more time I decided to start from the beginning and try another even more radical approach to my Xwayland GSoC project than the last time. I have now basically written a full API inside the Present extension, with which modes of presentation can be added. There are of course only two modes right now: The default screen presenting mode as how it worked until now and the new one for Xwayland to present on individual windows and without the need of them being full screen. While this was also possible with the version from last week, the code is now substantially better structured.

I’m currently still in a phase of testing so I won’t write much more about it for now. Instead I want to talk about one very persistent bug, which popped up seemingly from one day to the other in my KWin session and hindered my work immensely.

This is also a tale of how difficult it can be to find the exact reason for a bug. Especially when there is not much information to work with: As said the problem came out of nowhere. I had used Neverball to test my Xwayland code in the past all the time. But starting a few days ago whenever I selected a level and the camera was to pan down to the level the whole KWin session blocked and I could only hard reboot the whole computer or SIGKILL the KWin process via SSH. The image of the level was frozen and keyboard inputs didn’t work anymore. That said I still heard the Neverball music playing in the background, so the application wasn’t the problem. And Xwayland or KWin didn’t quit with a segfault, they just stopped doing stuff.

So I began the search. Of course I first suspected my own code to be the problem. But when I tried the Xwayland master branch I experienced the same problem. But please, what was that? Why suddenly didn’t Neverball work at all anymore? I had used it in the past all the time, but now everything blocks? So I tried first to roll back commits in the master branches of Xwayland, KWin, KWayland in the last few weeks, thinking that the problem must have been introduced at that point in time because I could still use Neverball just recently without problems, right?

But the problem was still there. So I went further back. It worked with my distribution’s Xwayland and when manually testing through the input related commits to Xwayland starting from somewhere at the beginning of the year I finally found the responsible commit, or so I thought. But yeah, before that commit no blocking, with it blocking, so there has to be an error with this particular commit, right? But on the other side why could I use Neverball just one week ago without blocking and this commit is several months old?

Nevertheless I studied the Xwayland input code thoroughly. The documentation for this stuff is non-existent and the function patterns confusing, but with time I understood it well enough to decide that this couldn’t be the cause of the problem. Another indicator for that was, that Weston worked. The problem had to be in KWin or KWayland somewhere. After lots of time I also finally understood somewhat why I still could use Neverball a few days ago but now not at all anymore: I always started KWin from the terminal before that without launching a full Wayland Plasma session. But after here everything worked fine I switched to testing it in the Plasma session and apparently missed that from now on the problem existed. So was it Plasma itself? But this wasn’t really possible, since Plasma is a different process.

I didn’t want to give up and so I looked through the KWayland and KWin code related to pointer locking and confinement, which is a lot. Hours later I finally found the root cause: KWin creates small on screen notifications when a pointer is locked or confined to a window. Most of the time this works without problem, but with the above patch to Xwayland the client sends in quick succession the pointer confine and lock requests to KWin and for some reason when trying to show both notifications at the same time KWin or maybe the QML engine for the notification can’t process any further. Without the patch Xwayland always only sent the confinement request and nothing blocked. I don’t know how Martin would like to have this issue solved so I created a bug report for now. It’s weird that it was such a petty cause in the end with such huge consequences, but that’s how it goes.

Categories: FLOSS Project Planets
Syndicate content