25 Jun 2017

feedFedora People

Mo Morsi: RetroFlix / PI Switch Followup

I've been trying to dedicate some cycles to wrapping up the Raspberry PI entertainment center project mentioned a while back. I decided to abandon the PI Switch idea as the original controller which was purchased for it just did not work properly (or should I say only worked sporadically/intermitantly). It being a cheap device bought online, it wasn't worth the effort to debug (funny enough I can't find the device on Amazon anymore, perhaps other people were having issues...).

Not being able to find another suitable gamepad to use as the basis for a snap together portable device, I bought a Rii wireless controller (which works great out of the box!) and dropped the project (also partly due to lack of personal interest). But the previously designed wall mount works great, and after a bit of work the PI now functions as a seamless media center.

Unfortunately to get it there, a few workarounds were needed. These are listed below (in no particular order).

<style> #rpi_setup li{ margin-bottom: 10px; } </style>


Finally RetroFlix received some tweaking & love. Most changes were visual optimizations and eye candy (including some nice retro fonts and colors), though a workers were also added so the actual downloads could be performed without blocking the UI. Overall it's simple and works great, a perfect portal to work on those high scores!

That's all for now, look for some more updates on the ReFS front in the near future!

25 Jun 2017 10:11pm GMT

Julita Inca Chiroque: First Round Talks of Fedora + GNOME at UPN

Today our local group has traveled many miles to the north of Lima to present our lately work by using Fedora and GNOME as users and developers. Thanks to the organizers of the IT Forum to invite us and support our job as Linux volunteers and very nice potential contributors to GNOME and Fedora and the group we have formed in Lima, Peru.I has started with what Linux is, who have created it, why do they created it, why it is important, what Fedora is, what GNOME is, how did I get involved in GNOME and Fedora, how anyone can be involved, about the awesome GNOME and Fedora community

Then Solanch Ccasa, student System Engineering from UPIG, did share her experiences in the workshops she had helped me in the last year as well as her experiences in the GNOME Peru Challenge. Great job so far Solanch! 🙂Toto is another fantastic potential contributor to both projects is Toto. He is student of system Engineering from UNTELS and I trust him the general coordination of the GNOME Peru Challenge. Thank you Toto for all your effortFollowed by Toto, it was Leyla from UPN! Our outstanding designer and also python trained student in the GNOME Peru Challenge. She is System Engineering and she have organized many FLOSS events and she is so lovely! The hardworking Martin from UNMSM, was also there supporting us! He is an experiment developer and talent IT people, he is physics and also smart and funny person. Say hi to Martin Vuelta! 😉Alex from SENATI is another autodidact and inspired guy who is always helping us in this effort. He did a talk regarded on the terminal and commands that help developers in their daily 😀Felipe Moreno from UNI, a computer Science, is another very well skilled student that explain us GTK and his experiences with Go and IT related technologies with GNOME y Fedora. Grow up in FLOSS Felipe! 🙂Sheyla is also a student of mechatronic at UTP. She is a programmers and designer, she has been involved in the GNOME Peru Challenge lately and I hope she will fix a bug soon!Last but not least! Mario Antizana was showing his work with Mechatronics in UTP, and his experiences with KIA Motors and the Fedora project he has proposed and won! Awesome!The fee for the event had not charge, it was for free and we definitely prize our attendances

Screen Shot 2017-06-24 at 11.17.33 PM

Thanks to GOD first! for having the support of these talent and good people to build a Linux community that exert me to be a better leader and person for the sake of our group!Every experience we have as a group is a new satisfactory adventure, we enjoy this way… despite of ignorance, ridiculous and opposition! Thanks again guys! More pics as follow:Thanks again to the UPN (Private University of North) for everything!


Filed under: FEDORA, GNOME, τεχνολογια :: Technology Tagged: community, fedora, Fedora + GNOME community, FLOSS, FLOSS community, GNOME, GNOME 3.22, GNOME Peru Challenge, GNOME Peru Challenge 2017, Julita Inca, Julita Inca Chiroque, Lima, linux, Perú, UPN

25 Jun 2017 3:51am GMT

24 Jun 2017

feedFedora People

Christian Dersch: Improving QtWebKit security for Fedora

The Qt port of the WebKit engine was unmaintained for years, until Konstantin Tokarev (also known as annulen) decided to pick it up about ten months ago. Within the last months he did an impressive job on getting QtWebKit up to date again, some days ago he released the second alpha of QtWebKit 5.212.0. As the current state of QtWebkit is really bad in Fedora, we always shipped the latest one from Qt upstream, but they did not do any backports of security fixes from upstream WebKit anymore, the KDE SIG now decided to move to the new community QtWebKit. Qt itself only supports the QtWebEngine based on Chromium, which itself has some issues (hard to maintain as we have to remove codec stuff, always some Chromium releases behind) , but more important: Many applications have not been ported and still use QtWebKit. With Konstantins work on QtWebKit it is possible to use them without all these unfixed security issues again. There are also some reasons to use QtWebKit instead of QtWebEngine, checkout the QtWebKit Wiki.

Within the last two weeks I worked on packaging the new QtWebKit and testing it with several browsers and KDE components to ensure that we do not break the world. So far it looks like new QtWebKit is what it is promised to be: a drop-in replacement for the old one, even without the need to recompile anything. For now our plan to get it in Fedora:

Note that I'm talking about the Qt5 version of QtWebKit. There is no upstream support for Qt4 anymore, but it is still in Fedoras repositories. So Qt4 QtWebKit is still without any fixes, I guess we should retire it at some point, in the same way our WebKitGTK+ friends already did.

24 Jun 2017 11:11am GMT

Adam Young: Running virt-controller locally

While developing Kubevirt, I often want to step through my code. My most recent tasks have involved the virt-controller process. Here's how I debug them.

A little background; during development, we use a vagrant based deployment of Kubernetes running in a two node cluster. We need two nodes to test VM migrations. This has been the biggest reason we have not yet moved to minikube.

The various piece of kubevirt run in the vagrant cluster inside containers. However, the design of Kubernetes (which kubevirt follows) allows a controller to run from pretty much anywhere that it has access to the API server. In this case, I want to run it from within my git repo on my laptop. I actually run it from gogland, as I like the interactive debugger, but that is not a requirement.

The first step is to bring up the cluster;

vagrant up
make vagrant-deploy

Once that is up and running (successfully), delete the virt-controller deployment.

cluster/kubectl.sh delete deployments virt-controller

One hack: I had to change the name of the file from cmd/virt-controller/virt-controller.go to cmd/virt-controller/main.go or I could not debug it. Seems to be a bug in gogland. Once I changed the file name, running it will report an error.

2017/06/23 22:09:25 invalid configuration: default cluster has no server defined

To run any of the kubernetes aware pieces you have to pass in a proper configuration environment. In the case of virt-controller, that is done by setting the parameters on the command line by adding the flag.

--kubeconfig=/home/ayoung/go/src/kubevirt.io/kubevirt/cluster/vagrant/.kubeconfig

Find the run toolbar.

Edit the configuration for main.go

Add the above line to Program Arguments.

once you run it you should see successful start up in the logs:

 level=info timestamp=2017-06-24T02:10:35.858154Z pos=main.go:89 component=virt-controller service=http action=listening interface=0.0.0.0 port=8182
 level=info timestamp=2017-06-24T02:10:35.858175Z pos=vm.go:73 component=virt-controller service=http msg="Starting controller."
 level=info timestamp=2017-06-24T02:10:35.858272Z pos=migration.go:70 component=virt-controller service=http msg="Starting controller."

To run from the command line, after running make to compile all the files:

$ bin/virt-controller --kubeconfig=/home/ayoung/go/src/kubevirt.io/kubevirt/cluster/vagrant/.kubeconfig
level=info timestamp=2017-06-24T02:13:03.129090Z pos=virt-controller.go:89 component=virt-controller service=http action=listening interface=0.0.0.0 port=8182
level=info timestamp=2017-06-24T02:13:03.129093Z pos=vm.go:73 component=virt-controller service=http msg="Starting controller."
level=info timestamp=2017-06-24T02:13:03.129170Z pos=migration.go:70 component=virt-controller service=http msg="Starting controller."

24 Jun 2017 2:16am GMT

23 Jun 2017

feedFedora People

Randy Barlow: Welcome to Caleigh

Last week was an exciting week for Bodhi as our summer intern Caleigh Runge-Hottman began her summer Outreachy internship. Caleigh will be adding support for batched updates over the summer, and probably some other cool stuff too. Be sure to say hi to her on Freenode in #bodhi or #fedora-apps!

23 Jun 2017 8:58pm GMT

Mary Shakshober: Building Design Team Approved Presentations

Throughout the last month I've been working on creating an updated presentation template for the Fedora community to use. With Flock coming up quickly, there's no better time to give these new templates a shot as a vehicle to present your talks!

I've made these templates available on three different platforms; LibreOffice Impress, reveal.js/slides.redhat, and GoogleSlides. While any of these three ways to build your slides are perfectly usable, I want to point out a few differences between the three.

  1. LibreOffice slides have SVG graphic elements, so all of the visuals will look very clear, crisp, and professional during a presentation! The only *very minor* limitation is that in using SVGs, the subtle dark blue to light blue gradient that I designed (and that is present in the other two forms) is not present here. My option with LibreOffice was to either keep the gradients but have the visuals be PNG (which resulted in a blurry appearance when enlarged) or to sacrifice the gradient but keep the quality at the high level provided with an SVG. I opted for quality over gradient use 🙂
  2. GoogleSlides… User friendly and accessible…. and apparently not accepting of SVG graphics. So this is in fact an option, but I would probably suggest one of the other formats before this one. It's a sad day when a graphic designer's vector art gets bimapped!
  3. reveal.js/slides.redhat is the template that I think will produce the best product for presentations, with clean SVG backgrounds AND gradients *happy dances*. I've embedded the reveal template below.

//redhat.slides.com/mshaksho/deck/embed?token=PEg7VVfs

It doesn't seem that I'm able to attach the actual documents here, so if you're interested in using any of the mentioned templates feel free to check out the Design Team ticket that they all *should* be available on. The most updated files are in the last comment of the thread. If you have any issues accessing them through the ticket, feel free to reach out to me and I will manually email them to you too 🙂

Happy presenting!


23 Jun 2017 7:24pm GMT

Simone Caronni: Plex Media Player and MPV with CUDA

The Plex Media Player is now part of the multimedia repository for Fedora 25+. I works as a standalone player and also as the main interface for an HTPC setup, where the "TV interface" starts as the main thing when you power up your system.

Plex Media Player uses MPV in the background, so any compilation option that was added to MPV, is now also part of Plex Media Player by using the same libraries that were already available in the multimedia repository.

If you are using Gnome Software, you will also find it in the software selection screens.

To install it on Fedora, just perform the following commands:

dnf -y install plex-media-player

You will then find it along with the other applications in your menu.

Normal desktop interface

To get to the normal desktop interface just look for the Plex Media Player icon in your menu. You will be greeted with the familiar Plex web interface, with the main difference being that the player is local through the MPV library.

Enabling Plex Media Player startup at boot

If you are planning to do an HTPC installation, and would like to have Plex Media Player starting instead of the login screen the moment you boot the device, execute the following commands as root:

dnf install plex-media-player-session
systemctl set-default plex-media-player
echo "allowed_users = anybody" >> /etc/X11/Xwrapper.config

The first command installs the required files (services, targets and PolicyKit overrides). The second command instructs the system to load by default the Plex Media Player target; that is X immediately followed by the player itself. The third command allows the system to start the X server as the Plex Media Player user, otherwise only users logged in through a console or root can start it.

You will be greeted with the TV interface just after boot:

If you want to go back to your normal installation (let's say Gnome), then revert back the changes (again type the following commands as root):

systemctl set-default graphical
sed -i -e '/allowed_users = anybody/d' /etc/X11/Xwrapper.config
rpm -e plex-media-player-session

MPV with CUDA

This has been already available for a long time, but with FFmpeg 3.3, CUDA dynamic support loading is enabled also in MPV, so the hard dependency on the CUDA library is gone, and the binaries load the library dynamically:

$ strings /usr/bin/mpv | grep libcuda
libcuda.so.1
$ strings /usr/lib64/libmpv.so.1.25.0 | grep libcuda
libcuda.so.1

So assuming you have the Nvidia driver already installed with the appropriate CUDA part, you can then play a video with the following command line:

mpv --hwdec=cuda /path/to/video.file

And then check with nvidia-smi or with the Nvidia control panel if the video engine is being utilized:

If you want to enable that by default, just make sure your configuration file has something like this inside:

$ cat ~/.config/mpv/mpv.conf 
#hwdec=vdpau
#vo=vdpau
hwdec=cuda

23 Jun 2017 5:28pm GMT

Fedora Community Blog: Earn Fedora Badges designing Badges!

Fedora Badges is a perfect place to start if you want to help out the Fedora Design Team. "I'm not a designer!" "I can't draw!" "I've never opened Inkscape" - you might say. And that is totally fine! Everybody can help out, and none of those reasons will stop you from designing your first badge (and getting badges for designing badges).

Finding a Badges ticket

There are quite a few badges tickets. One might have difficulty looking for one that's open, one that's possible to implement, or one with a concept. So we decided to put together a list of relatively easy badges designs that are up for grabs. This post will go out about once a month and provide you with such list of badge tickets carefully selected by us!

First of all let's look at the process of creating a badge. If you can, attend a badges workshop. If none are available, no problem! Here's a step-by-step guide with tips. You can also ask questions on IRC (#fedora-design) or at our bi-weekly meeting every other Wednesday at 7-8 AM EST on #fedora-meeting-1 on freenode.

These badges are still up for grabs! Try designing one of the following badges and we will help you through the process:

  • #432: "I've been there", for visiting a Fedora booth at any event
    For this badge design, reuse this artwork (https://badges.fedoraproject.org/badge/the-panda-is-in) and add a panda in front! (https://badges.fedoraproject.org/badge/lets-have-a-party-fedora-25)
  • #333: "Oh, wait!", for canceling a Koji build
    This artwork just needs a little tweaking, and it will be ready! Download the svg and make the suggested changes in the comments.
  • #150: "Testing Day participant", for contributing to a Fedora QA test day
    This badge needs original artwork, but it will be a breeze! Create a drawing of a piece of paper, and put the letters A+, B, C, D etc in separate files to create an entire series.

The post Earn Fedora Badges designing Badges! appeared first on Fedora Community Blog.

23 Jun 2017 5:03pm GMT

Fedora Magazine: gThumb: View and manage your photos in Fedora

Fedora uses Eye of GNOME to display images, but it's a very basic program. Out of the box, Fedora doesn't have a great tool for managing photos. If you're familiar with the Fedora Workstation's desktop environment, GNOME, then you may be familiar with GNOME Photos. This is a young app available in GNOME Software that seeks to make managing photos a painless task. You may not know that there's a more robust tool out there that packs more features and looks just as at home on Fedora. It's called gThumb.

What is gThumb?

gThumb is hardly a new piece of software. The program has been around since 2001, though it looks very different now than it did back then. As GNOME has changed, so has gThumb. Today it's the most feature-rich way of managing images using a GNOME 3 style interface.

While gThumb is an image viewer that you can use to replace Eye of GNOME, that's only the beginning of what it can do. Thanks to the inclusion of features you would normally find in photo managers like digiKam or the now discontinued Picasa, I use it to view the pictures I capture with my DSLR camera.

How gThumb handles photos

At its core, gThumb is an image viewer. While it can organize your collection, its primary function is to display pictures in the folders they're already in. It doesn't move them around. I consider this a plus.

I download images from my camera using Rapid Photo Downloader, which organized and renames files precisely as I want them. All I want from a photo manager is the ability to easily view these images without much fuss.

That's not to say that gThumb doesn't offer any of the extra organizational tools you may expect from a photo manager. It comes with a few.

Labeling, grouping, and organizing

Determining your photo's physical location on your hard drive is only one of many ways to keep up with your images. Once your collection grows, you may want to use tags. These are keywords that can help you mark and recall pictures of a certain type, such as birthdays, visits to the park, and sporting events. To remember details about a specific picture, you can leave a comment.

gThumb lets you save photos to one of three collections, indicated by three flags in the bottom right corner. These groups are color coordinated, with the options being green, red, and blue. It's up to you to remember which collections correspond with what color.

Alternatively, you can let gThumb organize your images into catalogs. Catalogs can be based on the date images were taken, the date they were edited, or by tags.

It's also an image editor

gThumb provides enough editing functions to meet most of my needs. It can crop photos, rotate them, and adjust aspects such as contrast, lightness, and saturation. It can also remove red-eye. I still fire up the GIMP whenever I need to do any serious editing, but gThumb is a much faster way of handing the basics.

gThumb is maintained by the GNOME Project, just like Eye of GNOME and GNOME Photos. Each offers a different degree of functionality. Before you walk away thinking that GNOME's integrated photo viewers are all too basic, give gThumb a try. It has become my favorite photo manager for Linux.

23 Jun 2017 8:00am GMT

Remi Collet: PHP version 7.0.21RC1 and 7.1.7RC1

Release Candidate versions are available in remi-test repository for Fedora and Enterprise Linux (RHEL / CentOS) to allow more people to test them. They are available as Software Collections, for a parallel installation, perfect solution for such tests (for x86_64 only), and also as base packages.

RPM of PHP version 7.0.21RC1 are available as SCL in remi-test repository and as base packages in the remi-test repository for Fedora 25 or remi-php70-test repository for Fedora 23-24 and Enterprise Linux.

RPM of PHP version 7.1.7RC1 are available as SCL in remi-test repository and as base packages in the remi-test repository for Fedora 26 or remi-php71-test repository for Fedora 23-25 and Enterprise Linux.

PHP version 5.6 is now in security mode only, so no more RC will be released.

PHP version 7.2 is in development phase, version 7.2.0alpha2 is also available.

emblem-notice-24.pngInstallation : read the Repository configuration and choose your version.

Parallel installation of version 7.0 as Software Collection:

yum --enablerepo=remi-test install php70

Parallel installation of version 7.1 as Software Collection:

yum --enablerepo=remi-test install php71

Update of system version 7.0:

yum --enablerepo=remi-php70,remi-php70-test update php\*

Update of system version 7.1:

yum --enablerepo=remi-php71,remi-php71-test update php\*

Notice: version 7.1.7RC1 is also available in Fedora rawhide (for QA).

emblem-notice-24.pngRC version is usually the same as the final version (no change accepted after RC, exception for security fix).

Software Collections (php70, php71)

Base packages (php)

23 Jun 2017 5:09am GMT

22 Jun 2017

feedFedora People

Jean-Baptiste Holcroft: Fournir une trace lors du plantage d'une application Android

Tout comme les logiciels de son ordinateur, fournir un rapport de bug est une contribution importante dans le logiciel libre. Voici les quelques étapes à mener pour un téléphone sur Android. J'utilise Fedora, mais il n'y a pas de raison que cela fonctionne très différemment sur une autre distribution.

Parfois un plantage m'est égal car c'est mineur ou tellement rare que je ne saurais pas le reproduire, d'autre c'est vraiment gênant ou fréquent, dans ce cas je dois le signaler. Dans mon cas ce sont les applications OpenFoodFacts, OpenBeautyFacts et OpenPetFoodFacts qui m'ont posé problème.

J'utilise rarement ces applications, mais j'aime leur principe et quelques fois par ans je parcours tout ce qui sort de mes sacs de course pour apporter ma petite contribution à leurs projets. Cependant, j'avais des plantages communs à plusieurs applications et triviaux à reproduire, j'ai donc décrit ce que je rencontrais sur le dépôt github du projet

La source du problème, c'est probablement le fait que mon Fairphone utilse une version désormais un peu ancienne d'Android (4.2), et même si les développeurs font attention à ne pas exclure trop rapidement ces terminaux en choisissant correctement les API sur lesquels ils s'appuient (merci !), ils peuvent ne pas avoir le matériel pour produire localement le plantage. Dans ce cas, ils demandent une trace du plantage, globalement c'est l'ensemble de la chaîne explicative, qui permet de dire : « depuis l'interface, ce bouton a appelé telle fonction qui s'appuie sur telle autre qui a provoqué telle erreur ». Les Anglais parlent aussi de backtrace.

Bon, c'est très simple :

  1. Activez l'option « Débogage USB » dans la partie Options pour les développeurs des paramètres de votre téléphone

    En cas d'absence de ce menu « Options pour les développeurs" : allez dans les Paramètres généraux, ouvrez « À propos de l'appareil ». Puis tapotez par quatre fois le « Numéro de Build » pour débloquer les « Options pour les développeurs ».

  2. Installer adb via « sudo dnf install adb »

  3. Branchez votre téléphone à votre ordinateur
  4. Lancer la comment « adb devices » devrait le détecter

    Si ne montre rien échoue, assurez-vous que votre téléphone détecte bien qu'il est branché en USB, et qu'il marque que la connexion est en mode « Déboguage USB »).

Pour extraire les journaux (logs), rien de plus simple puisqu'il faut saisir « adb logcat » dans son terminal.

Vous découvrirez probablement que votre téléphone est très bavard ! Restreindre la sortie est heureusement possible via la commande : « adb logcat "*: E" ».

Pensez à signaler vos problèmes ! (et à être gentil :))

22 Jun 2017 10:00pm GMT

Angela Pagan (Outreachy): Second batch of boards!1: The bull springs into action2:...



Second batch of boards!

1: The bull springs into action

2: Piloting

3: Zoom out

4: Space ship

5: Warp drive

6: Saturn

7: The ship flying in

8: Finding the rover

22 Jun 2017 7:47pm GMT

Sarup Banskota: Writing a Babel codemod plugin

If you haven't already, you first want to check out the Babel Handbook, a fantastic document that walks you through the way Babel is designed. There is even a section on Writing a Babel plugin, however for me a newbie, the foo === bar example was a bit too simple.

To do a quick recap, Babel goes through 3 primary stages - parse, transform and generate.

  1. Parse - Take in code to transform, identify familiar tokens, and generate an Abstract Syntax Tree
  2. Transform - Traverse the AST from the previous step, and modify it into the AST representation for the transformed code
  3. Generate - Take in the final AST and convert it into transformed code

A Babel plugin comes in as part of the transform stage. Here's what a plugin export file looks like on the inside, just for illustration:

<script src="https://gist.github.com/9467a6bfba0cddcd469866fddeebd21b.js"> </script>

Every plugin has a visitor property that describes traversal order and modifications to the original AST. The visitor description leverages babel-types, a library that helps a plugin author identify what kind of Node one is dealing with, its properties etc, and information for Babel to process, validate, and transform it.

You can read in length about the context of the plugin we're going to write today, but in a nutshell, we want to be able to transform the core plugins within Babel to contain a name. e.g for the plugin export file described above, we want to modify it into:

<script src="https://gist.github.com/95e91ba30d139398a244f7eb2cec7de8.js"> </script>

So in the two examples above, we want to get into the default export function, find the object being returned, and inject the name as the first property.

At least that's what I concluded and coded out the first version. Soon enough, Henry pointed out some examples of plugin export files that don't follow that structure.

https://github.com/babel/kneden/blob/master/src/index.js#L19

https://github.com/tleunen/babel-plugin-module-resolver/blob/master/src/index.js#L25

https://github.com/lodash/babel-plugin-lodash/blob/master/src/index.js#L141

On first glance, it appears like a crazy feat, those files look pretty different. As he hints however, we can indeed just look for the visitor property, and plug name as another property to the parent object.

Not so soon 😉 Here's an example where this logic won't apply:

<script src="https://gist.github.com/d3cf799c49995a644fd96fba2c2a2749.js"> </script>

Well it does look like we can apply our original idea for files that follow the structure above. Let's work with both approaches, and hopefully they cover most file structures. Skimming through the plugin handbook quickly, let's start with this template:

<script src="https://gist.github.com/8b6d5158008ca7f302236e2398a58a4a.js"> </script>

To make a better mental model for approaching the traversal, we want to visualise first the AST we're dealing with. To do this, we can plug our initial source code into an AST explorer.

Some tinkering around the interface reveals AST Explorer highlights the Nodes for us.

Screenshot of an AST Explorer highlight

On the AST, click through the part that says ExportDefaultDeclaration, expanding your way until you arrive at the ObjectExpression we're targeting. That's exactly how I made a mental model for approaching this plugin. Next you'll need to spend some time skimming through the Babel Types README. This will help you familiarise with the various types and properties available. Here on, it's pretty simple.

We want to traverse the AST using Babel's APIs, such that we arrive at the ObjectExpression we found earlier. By repeatedly plugging in some console.log() statements, you can arrive at the following:

<script src="https://gist.github.com/dd51c9653983a3573400ffb6f04ceda4.js"> </script>

We'll make those chained .get() statements compact, and finally reading through the Transformation Operations section in the handbook, we realise that inserting a sibling node is exactly what we want to do.

We're therefore done with our first iteration!

<script src="https://gist.github.com/e7abf9fdb230f8f5dadc8e78d9f05ae4.js"> </script>

That solved for one file structure case, and now we want to account for the (hopefully easier) case Henry pointed out, the one where we want to plugin the name right before the visitor.

On the outset, that should be much easier to visualise, and it's easy to come up with a good first draft for the visitor, such as this:

<script src="https://gist.github.com/ade8d35fef5b97ec2828a5cba69d4f6d.js"> </script>

The observant will note that we want to prevent inserting name twice, in the event that a file structure contains both types of nodes. Therefore, we'll do a little name check. With some standardisation of variable names, and sharing the name check, our final plugin looks as follows:

<script src="https://gist.github.com/96265e368f843f7f1fdd01be03139eff.js"> </script>

That is it! I've published the same code as an npm package if you're keen to take a look. If you clone it and follow the instructions on the README, you should be able to see it in action!

The best part for me throughout this learning exercise was that I realised at the end I forgot to add a name property to this plugin 😄 Guess what I'm gonna run 😈

$ codemod --require babel-register -o index='{"pluginName": "babel-plugin-add-name-to-plugin"}' --plugin src/index.js src/index.js

Always be eating your own dog food!

22 Jun 2017 7:00pm GMT

Adam Samalik: Modular F27 Server Edition – initial design

Recently, I have started a discussion on the Server mailing list about building the Fedora 27 Server Edition using Modularity. Langdon White is already working on a change request. If that happens, there will be a lot of work in front of us. So let's start with writing blog posts!

To build the Fedora 27 Server Edition using Modularity, Adam thinks we need to focus on two things:

First is the initial design of the basic set of modules for the F27 Server Edition - including the Host and Platform modules, as well as other 'application/content' modules. To make this easier, I'm proposing a tool temporarily called The Graph Thing.

Second is a great packager UX for the build pipeline. This will lead to more content built by the community. It will include The Graph Thing and BPO, and I will be talking about it in a different post.

This post covers the first part - the initial design.

Modularizing the F27 Server Edition - introduction

To build Fedora 27 Server Edition using Modularity, we need to split the monolithic distro into smaller modules. Modules can come in multiple streams and on independent lifecycles. However, in Fedora 27, all modules will be on the same lifecycle of 13 months as the rest of Fedora 27.

Splitting Fedora 27 into modules

The Platform team defines the Host and Platform modules by deciding which packages are needed in which modules and including their dependencies into these modules. They already started defining the Host and Platform modules in the Host and Platform GitHub repository.

Other modules will be defined based on the Fedora 27 Server Edition use-cases. We need to create modules for all server roles and other components that will be part of the server. Defining these modules will also influence the Platform module as it will include some of the packages shared between other modules.

Splitting the distribution into individual modules is not easy. We need to work with hundreds of packages with complex dependencies and carefully decide what package goes into which module. To do the initial distribution design, I am proposing a tool that will help us. I temporarily call it The Graph Thing and I hope the name will change soon.

After the initial split, we expect other people adding modules to the distribution as well. Making the packager UX great is crucial for us, if we want to get a lot of content from the community. Packagers will be also able to use The Graph Thing for the initial design of their module, and Build Pipeline Overview (BPO) to monitor their builds.

The Graph Thing - a tool for the initial design

The Graph Thing is a tool that will help people with the initial design of individual modules when modularizing a distribution. It will also help packagers with adding other modules later on.

It will work with resources from the Fedora infrastructure, inputs from the user, and will produce a dependency graph as an output. An example with pictures is better than a thousand words:

Example - defining a nodejs module

The Dependency Thing - first run

In this example, there are three things available as resources:

A packager wants to add a new module: nodejs. The packager have specified in the input that they want to visualize the host and platform modules, as well as the new nodejs module which doesn't exist in the infrastructure. The packager added a nodejs-6.1 package into that module and wants to see if that's enough for the module, or if they need to add something else.

The output shows that the nodejs module will require two other packages directly, library-foo-3.6 and nodejs-doc-6.1, and that the nodejs-doc-6.1 also needs a crazy-thing-1.2.

Seeing this, the packager made the following decision:

  1. The library-foo-3.6 is a package specific for nodejs, so it should be part of the nodejs module.
  2. The nodejs module should not include documentation, as it will be shipped separately. They will modify the nodejs-6.1 package not to include the nodejs-doc-6.1.

With the decision done, the packager wants to see how it's going to look like if they apply the changes. So they modify the input of The Graph Thing and run it again:

Great! It looks like that the module now includes everything that is needed. The packager can make the change in the nodejs-6.1 package and submit this module for a build in the Fedora infrastructure.

Value of The Graph Thing tool

As we saw in the example above, the tool can help with designing new modules by looking at the Fedora 27 packages and giving an instant view of how a certain change could look like, without rebuilding stuff.

It will also help us identify which packages need to be shared between individual modules, so we can decide if we include them in the Platform, or it we make a shared module. An obvious example of a shared module can be a language runtime, like Python or Perl. Other, not that obvious, can be identified with this tool.

Apart from the initial design of the Fedora 27 Server Edition, this tool could be also a part of the packager UX which I will be talking about soon.

Early implementation

I have already created an early partial implementation of this tool. You can find it in my asamalik/modularity-dep-viz GitHub repo.

Next steps

The tool needs to get rewritten to use libsolv instead of multiple repoquery queries - so it produces the correct output, and takes seconds rather than minutes to produce an output. It could also be merged with another similar project called depchase which has been used by the Platform team to define the Base Runtime and Bootstrap modules for the F26 Boltron release.

22 Jun 2017 3:41pm GMT

Stephen Smoogen: Problems with EPEL and Fedora mirroring: Many Root Cause Analysis

There was a problem with EPEL and Fedora mirrors for the last 24 hours where people getting updates would get various errors like:

Updateinfo file is not valid XML: <open></open>

The problem was caused by a problem in the compose which output the XML file not as xml but as sqllite. The problem was fixed within a couple of hours on the Fedora side, but it has taken a lot longer to fix further downstream.

The fixes on the Fedora side are to put in better tests to try and see that this does not happen again. The client side fixes are currently to do either one of the following:

  • yum clean all
  • yum clean metadata
Thank you all for your patience on this problem.

22 Jun 2017 1:26pm GMT

Angela Pagan (Outreachy): Here we have the first batch of storyboard sketches.1: the bull...



Here we have the first batch of storyboard sketches.

1: the bull checks on the rovers

2: the ice rover

3: the ice cracks

4: the crack grows

5: it falls

6: the bull gets a notification/ alert

7: the bull checks o the situation

8: the rover is sad

22 Jun 2017 1:22pm GMT