Fedora Hub

September 25, 2017

Fedora Magazine

Nine reasons to use Fedora Modules for your container images

Since Boltron is out and the team is working hard on Fedora 27 modular server, we could start talking more about what it all means. One of the aspects our team is interested in is utilizing modules in container images. If the world of Modularity is still new to you, don’t worry, we have you covered! I advise you to read the Boltron announcement and dive deep into Fedora Modularity website. As for containers, they keep being great at packaging applications with its dependencies and basic runtime environment in a single “box” which is easy to operate.

You might be wondering why anyone would include modules inside container images. There are some very practical reasons that make modules a good fit for containers.

1. You know what you are getting.

With traditional distribution, it’s hard to predict the version of software being installed. Let’s do an example. Do you know what version of nodejs you’ll get when you install it inside registry.fedoraproject.org/fedora:26 container image?

$ dnf install nodejs

 

It may be version 6, it may be version 8, who knows? You could check koji, bodhi or dist-git to find out, but none of those would give you the answer. Only running the command would tell.

So how will modules help here? Let’s proceed to the next point.

2. You can pick the version you want.

Modules have a concept of a stream. Streams are defined by packagers where they clearly state what the compatibility status of the stream is. Some may be strict which will require all updates within the stream to be API and ABI compatible, others may just provide latest upstream version with no guarantees. The strict streams are usually tied to upstream major releases. When installing a module, you can select a stream to be installed. In the example below, I chose stream 8 for nodejs, which is tied to upstream version 8.

$ dnf install @nodejs:8
======================================================
Package     Arch            Version
======================================================
Installing group packages:
nodejs      x86_64          1:8.0.0-1.module_42d8f2a0

 

Since the stream guarantees compatibility, updating nodejs package within that stream ensures that you will always be getting version 8.

This will also solve one of the problems we have when building container images in Fedora. There is a guideline that you should not set version label, because no one knows what version of the package is going to be installed. We concluded that it’s better to ignore the label rather than setting it wrong. With modules, we’ll select a precise stream and we’ll be sure to get a version we picked.

3. Compatibility under control.

Let’s get back to the first point.

What if your software stack works only with NodeJS 6 and the command dnf install nodejs would install version 8. That would be a problem, right?

With streams, you will be able to select one which guarantees that you will always get an API/ABI compatible packages within that stream. If you need stability, pick a stream with strict compatibility guarantees — no surprises when installing packages anymore. So predictable, such happiness!

4. A module may come optimized for the container use case.

Back in the day we defined an install profile named “container”. Install profile contains a set of packages which are meant to be installed. The “container” install profile should contain a list of RPM packages which are meant to be installed into containers.

So in dnf, all you need to do is just:

$ dnf install @nodejs:8/container

and you should be getting the right packages. No need to spend time figuring out what those should be. And obviously, you can always pick the ones you really need.

5. The installation is simple and your muscle memory works.

Modules don’t need a new package manager. You can easily install them using dnf. Optionally, if you want better experience, you can use the functionality supporting modularity which was added into dnf.

6. In the end, you are getting ordinary RPMs.

Modularity is not a new packaging technology. When you’re installing modules, in reality, you are getting RPMs. So, don’t fear that you need to learn a new packaging format.

7. Automation!

This is my favorite one. Once the Factory 2 team reaches their goals, we’ll have a complete build pipeline in-place. This means that to build an updated container-image, all you need to do, is to update an RPM spec file, commit the changes and push them into Fedora dist-git. You heard me.

The pipeline should then trigger the build of the RPM, which should trigger a build of the associated modules, which should trigger a build of container images which utilize the modules. On top of it, every step will be gated by CI.

We’re not quite there yet, but we’re right on track.

With this kind of automation, rebuilding container images for sake of fixing CVEs should be much easier. Benefit for users is to get updated container images within hours.

8. Rebuilds that work.

Imagine this: there is a new CVE with a fancy name. Fedora rebuilds all container images to pick up the fix from a base image based on the automation work described in previous point. And boom! A bunch packages were updated which turned into breaking functionality of the particular containers. That’s not we wanted, right?

This scenario should not happen with modules. As I explained when talking about streams, when you select a stream with strict compatibility guarantees, you should be getting functional, compatible packages forever.

9. The simplicity.

If you ever played with Software Collections, or even tried to create a container image based on an existing collection, you might got to a point when it was too complicated:

  • RPMs installed into a separate tree in /opt
  • the need to scl enable a collection
  • and for sure, a bunch of hacks

Our goal is to make those pain points history. Why? Modules are installed directly in your root filesystem, you don’t need dedicated tooling to use the modules and… no hacks!

Oh, but your requirement is to have three database versions installed in parallel — no problem. Just get a container image for every version and you are good to go. Modularity doesn’t provide a solution for parallel installation, it provides multiple versions for a single package.

Are you so hyped for modules as I am?

by Tomas Tomecek at September 25, 2017 08:00 AM

xkcd.com

September 22, 2017

Fedora Magazine

Join the Magazine team

The recent Flock conference of Fedora contributors included a Fedora Magazine workshop. Current editorial board members Ryan LerchJustin W. Flory, and Paul W. Frields covered how to join and get started as an author. Here are some highlights of the workshop and discussion that took place.

Writing process

The process of writing an article for Fedora magazine is simple and involves only a few steps.

  1. The writer pitches an idea which summarizes the topic and its objectives.
  2. Once the pitch is approved, the writer creates a draft.
  3. The editors work with the author to get the article finished and scheduled for publishing.

The Fedora Magazine’s editorial board meeting happens every Tuesday, where approvals and scheduling happen. If you follow the process, you can usually expect your article to be published within a week or two, depending on the queue and time critical articles.

The full process of writing an article is covered here on the Magazine itself.

Tips for better articles

The Magazine provides articles about and outreach for Fedora. As a result, articles focus mainly on Fedora users, rather than just contributors. However, the Community Blog provides a focus on contributors, and might be the right place for some news. Ask yourself a few questions as you think about your pitch or article:

  • Who’s your target audience? What kind of readers are you talking to?
  • What do you want them to know or achieve by reading the article?

Also, articles don’t have to be big and complex. If you think your article is going beyond 500-600 words, you may want to break it up into two or more shorter, simpler articles. The Magazine also hosts series of articles, as long as authors are willing to write several entries before publishing the first.

The Magazine features a dedicated page full of tips and advice on writing better articles: Tips for article style, grammar, content, and SEO

Get your red hot pitches

During the workshop, some fantastic pitch ideas were discussed.

  • Kernel bench-marking in Fedora
  • Add-ons to improve your privacy on Thunderbird
  • How to use Thunderbird mail filters
  • Installing Mycroft.ai
  • How to use Webex on Fedora
  • Awesome GNOME extensions for developers
  • Installing Hawkular on Fedora
  • How to create a stratum 0 time source

The editorial board has already pre-approved each of the above pitch ideas. One of them might be a good start for your article for the Magazine. To claim a pitch, just follow the process described above and claim an idea.

Join the team

The Magazine’s reach and readership grows steadily every release. You too can be part of this team — it’s easy to get started and fun to work on. Your contributions directly impact the growth of the Magazine. Why not join today?


Photo by Aaron Burden on Unsplash

by Amita Sharma at September 22, 2017 08:00 AM

xkcd.com

September 20, 2017

xkcd.com

Fedora Magazine

Improved multimedia support with Pipewire in Fedora 27

Pipewire — a new project of underlying Linux infrastructure to handle multimedia better — has just been officially launched. The project’s main goal is to improve the handling of both audio and video. Additionally, Pipewire introduces a security model to allow easy interaction with multimedia devices from containerized and sandboxed applications, i.e. Flatpak apps.

The Pipewire website clearly states the goals of the project:

PipeWire is a project that aims to greatly improve handling of audio and video under Linux. It aims to support the usecases currently handled by both PulseAudio and Jack and at the same time provide same level of powerful handling of Video input and output. It also introduces a security model that makes interacting with audio and video devices from containerized applications easy, with supporting Flatpak applications being the primary goal. Alongside Wayland and Flatpak we expect PipeWire to provide a core building block for the future of Linux application development.

An initial version of Pipewire is available now in the Fedora 27 prereleases. This initial version only uses Pipewire for video, not audio. Check out the announcement post by Christian Schaller, as well as the Pipewire website for general information about the project, and the Pipewire Wiki for the documentation.

by Ryan Lerch at September 20, 2017 01:48 AM

September 18, 2017

Fedora Magazine

Running the Fedora kernel regression tests

When a new kernel is released, users often want to know if it’s usable. The kernel has a set of test cases that can be run to help validate it. These tests are run automatically on every successful build. They are designed to validate a basic set of functionality and some Fedora specific features, such as secure boot signing. Here’s how you can run them.

This wiki page provided by the Fedora QA team describes the process to run the regression tests on your local machine. To run these tests, you need the gcc, git, and python-fedora packages installed on your system. Use this sudo command if needed:

sudo dnf install gcc git python-fedora

Getting and running the tests

First, clone the kernel-tests repository and move into the directory:

git clone https://pagure.io/kernel-tests.git
cd kernel-tests

Next, set some configuration options. The easiest way to get started is to copy the config.example file:

cp config.example .config

The most important settings are the ones labeled to set submission. By default, tests do not submit results to the server. To submit results anonymously, use the setting submit=anonymous. To submit results linked to your FAS username, set submit=authenticated and username=<your FAS login> in .config. If you link your submission to your FAS username, you’ll also receive a Fedora badge.

To run the basic set of tests, use this command:

$ sudo ./runtests.sh

To run the performance test suites, use this command:

$ sudo ./runtests.sh -t performance

The expected result is that the tests pass. However, some tests may fail occasionally due to system load. If a test fails repeatedly, though, consider helping by reporting the failure on Bugzilla.

Running these regression tests helps validate the kernel. Look for more tests added in the near future to help make the kernel better.

by Laura Abbott at September 18, 2017 10:10 AM

xkcd.com

September 15, 2017

Fedora Magazine

4 cool new projects to try in COPR

COPR is a collection of personal repositories for software that isn’t carried in Fedora. Some software doesn’t conform to standards that allow easy packaging. Or it may not meet other Fedora standards, despite being free and open source. COPR can offer these projects outside the Fedora set of packages. Software in COPR isn’t supported by Fedora infrastructure or signed by the project. However, it can be a neat way to try new or experimental software.

Here’s a set of new and interesting projects in COPR.

exa

Exa is an alternative for the ls command. By default it uses colors to distinguish between different file types and access permissions. It also can show status of source code managed by git, and show directories with a tree view. Exa is written in the Rust programming language.

Installation instructions

The repo currently provides exa for Fedora 25, 26, and Rawhide. To install exa, use these commands:

sudo dnf copr enable eclipseo/exa
sudo dnf install exa

Bazel

Bazel is a tool that automatically builds and tests software. It can produce packages for deployment on Android and iOS. It uses the Bazel query language to declare dependencies. Bazel can also produce dependency graphs of the entire source code. Thanks to these graphs, it rebuilds only what is necessary. Bazel supports Python, Java, C++, C and Objective C natively. It also works with any other language using its extension language, Skylark.

Installation instructions

The repo currently provides Bazel for EPEL 7 and Fedora 24, 25, 26, and Rawhide. To install bazel, use these commands:

sudo dnf copr enable vbatts/bazel
sudo dnf install bazel

Riot

Riot is a client for the decentralized messaging and data-transfer protocol Matrix. It supports voice and video conferencing, and customizable and keyword specific notifications. It allows file-sharing as well, including file archiving. Riot also can connect to other communicating systems like IRC, Slack and Gitter.

Installation instructions

The repo currently provides Riot for EPEL 7 and Fedora 25 and 26. To install the Riot package, use these commands:

sudo dnf copr enable ansiwen/Riot
sudo dnf install riot

Simon Tatham’s Portable Puzzle Collection

This package collects several simple one-player puzzle games. It includes favorites like minesweeper, sudoku, n15-puzzle, and many others. It uses its own framework to enable the games to run on multiple platforms. The games are written in C.

Installation instructions

The repo currently supports Fedora 24, 25, 26, and Rawhide. To install the puzzles, use these commands:

sudo dnf copr enable ribenakid/puzzles
sudo dnf install puzzles

by Dominik Turecek at September 15, 2017 08:00 AM

xkcd.com

September 14, 2017

Fedora Magazine

Keep DNF automatic updates rolling in Fedora 26

DNF Automatic is an optional Fedora component you can configure for automatic updates of packages. DNF Automatic is provided by the (aptly named) dnf-automatic package. This package has been available in previous releases of Fedora as well as in Fedora 26. As with all releases, though, Fedora 26 introduced numerous updates. These updates included DNF version 2, in which DNF Automatic configuration changed in an undocumented way.

As a result of the change, if you previously configured DNF Automatic and then upgraded to Fedora 26, your system may not be getting automatic updates. However, there’s now a DNF package that restores the previous configuration interface. But of course, you’ll need to install that update manually. After that, automatic updates will resume on your system.

Restoring automatic updates

Through updates-testing

If you don’t want to wait for a stable update through normal channels, you can use packages intended for advance testing. To update, temporarily enable the updates-testing repository with sudo and dnf:

sudo dnf --enablerepo=updates-testing update dnf\*

Through stable updates

To restore automatic updates using a stable update (available later this week), do one of the following:

  1. If you’re running Fedora Workstation, use the Software application to apply updates.
  2. Or, run dnf upgrade from the command line. You may want to run this command under screen or tmux to reduce the risk of interruption.

Checking results

After you complete either of the above, run the following command:

rpm -q dnf

You should receive this version (or higher):

dnf-2.6.3-11.fc26.noarch

Don’t stop there!

Using DNF Automatic alone isn’t enough to keep your system fully updated. Remember, DNF Automatic doesn’t reload or restart services, or reboot systems. These are often critical steps in applying security updates. Don’t forget to take these steps with the systems you care about.


Photo by mrigendra chauhan on Unsplash.d

by Paul W. Frields at September 14, 2017 12:37 PM

September 13, 2017

xkcd.com

September 11, 2017

xkcd.com

September 08, 2017

xkcd.com

September 06, 2017

Fedora Magazine

Move status icons to your GNOME top bar

The GNOME desktop environment comes installed with Fedora Workstation. GNOME hackers have continued to refine it over several years. However, not all third party software providers update their apps accordingly. Some software providers still make use of outdated status bar icons for their apps, for instance. It’s nice to be able to move status icons for these apps to the GNOME top bar. Often these apps are proprietary but popular, including:

  • Google Chrome addons like Hangouts
  • Google Music Manager
  • DropBox
  • Skype

However, there are also free and open source apps with the same issues. These apps haven’t been updated to use newer features when installed in a GNOME environment like Fedora Workstation.

An app that uses these status bar icons appears in a “drawer” at the lower left of the GNOME screen. You can pop open this drawer by moving your mouse to the lower left of the screen to open the drawer.

GNOME status icon drawer

This presents the user with a difficult choice. Should you leave the drawer open, cutting off part of your screen? Or should you close it and miss seeing some indications on icons in the drawer? Fortunately, you don’t have to choose between these options. There’s another solution, the TopIcons Plus extension for GNOME Shell.

The TopIcons Plus extension can move status icons to your GNOME Shell top bar. The icons then appear next to your other standard icons such as network status. Now you can see these status icons without using up screen real estate, or having to remember to open a drawer.

To install the extension, open Firefox and navigate to the TopIcons Plus extension page. Use the On/Off button to install the extension to your personal environment.

GNOME TopIcons Plus extension page

If you have apps installed that use status icons in the drawer, you’ll now see them in the GNOME top bar. You can use the same mouse actions on them as in the drawer.

GNOME top bar with TopIcons Plus extension activated

However, the way these icons use the mouse may not be the same as standard GNOME status icons. Just keep this in mind as you work with them, and understand this is due to the software provider, not GNOME.


Image courtesy of Kaleb Nimz — originally uploaded to Unsplash as Untitled.

by Paul W. Frields at September 06, 2017 08:00 AM

xkcd.com

September 04, 2017

xkcd.com

September 01, 2017

xkcd.com

August 30, 2017

Fedora Magazine

Make a Github Pages blog with Pelican

Pelican is a utility that lets you create beautiful weblogs using just text files. The files can be in reStructured Text or Markdown formats, which are both simple to learn. Like other blog software, you can make both timed posts and static pages. Pelican supports feeds, external analytics tools, and can import from WordPress or other feeds.

Github, arguably the world’s most popular open source code hosting service, offers a simple, elegant website solution for projects it hosts. Github Pages allows users to store page content in a git repository along with their code. By combining Pelican with Github Pages, you can have a reliable and attractive blog site for your projects.

Pelican may be a text-based blogging tool but it can produce beautiful blogs:

Pelican blogs are completely themeable, as you can see above; this particular theme is called Chunk. There are hundreds available on the web already, including responsive and bootstrap based.

Now that you’ve seen the value of Pelican, let’s get started building a site. You’ll need to be familiar with using the git command to follow the steps in this article.

Set up a github.io page

To create your Github user page, log in to Github and create two new repositoriesusername.github.io-src and username.github.io, as explained on Github pages. (Use your Github username for these repositories.) The username.github.io-src repository will hold the sources of your blog and the username.github.io repository will contain the output HTML files Pelican generates. To add the output directory as a submodule, initialize it with a README file.

Install Pelican

On Fedora, this is a very very simple command:

sudo dnf install python-pelican

Clone the source repository you created:

git clone [email protected]:username/username.github.io-src ghpages

Then change directory to the site:

cd ghpages

Set up the blog with Pelican

Double check that you’re working in the source git repository using:

git remote -v

You should see that you are using the username.github.io-src repository. Then, clone the output repository as a git submodule (substitute your Github username):

git submodule add [email protected]:username/username.github.io.git output

Pelican provides an excellent quickstart command. Run it:

pelican-quickstart

The quickstart will ask you various questions, which you can answer in turn. Here are some specific answers you should give:

  • Where do you want to create your new web site? (hit Enter)
  • URL prefix: http://username.github.io
  • Generate a Fabfile/Makefile: Yes (for most users)
  • Auto-reload & simpleHTTP script: Yes (for most users)
  • Upload mechanisms: choose No for all except Github Pages
  • Is this your personal page (username.github.io)? Yes

You may receive an error message because the output directory already exists. This is OK.

Open the publishconf.py file and set the DELETE_OUTPUT_DIRECTORY variable to False. Otherwise, each time you publish, Pelican deletes your submodule, which is not what you want.

Tweaks

There are various tweaks and tips mentioned here that may be of interest. One of the more handy tweaks is the addition of a newpost command in the Makefile.

First post

Write a quick post, using either Markdown or reStructured Text format, in the content folder.

Build, commit, push, done!

Once done, build your blog and test the results:

make html && make serve

This builds the blog, and then runs a local webserver on port 8000. Direct your browser there to see the results of your work. If everything is OK, generate the website:

make publish

Then add your files to git tracking, commit them, and push to the repositories. Due to the use of a submodule, you should do this with your output files before you push the source files.

cd output
git add .
git commit -m "First post."
git push -u origin master
cd ..
echo '*.pyc' >> .gitignore #don't need pyc files
git add .
git commit -m "First commit."
git push -u origin master

Now, you can visit the https://username.github.io and see the new site you’ve just created.

Caveats and customisations

Everything can be customized in Pelican. To start with, you can choose from a set of themes. There are also a set of plug-ins that help you add various functions to your site. Of course, you can write your own, or customize existing plugins and themes.

The Pelican documentation refers to a tool called ghp-pages, but the Pelican 3.6.0 version shipped in Fedora 22 doesn’t work as described in these docs. The submodule method above will help work around this problem.

Image courtesy Manjith Kainickaraoriginally posted to Flickr as American White Pelican.

by Ankur Sinha "FranciscoD" at August 30, 2017 07:56 PM

Fedora黑

xkcd.com

Fedora黑

August 28, 2017

xkcd.com

August 27, 2017

Fedora黑

August 25, 2017

Fedora Magazine

Never leave IRC again with ZNC

IRC (Internet Relay Chat) is an online chat protocol that has existed since 1988. IRC is a network of large chat rooms. Each room lets members of a community talk with each other from all corners of the world. Those new to IRC may have used a web chat interface. Many users have an IRC client to connect to their favorite IRC networks and channels. After a while, you may notice some groups of users seem to always be in the channel, each time you connect. Are they really sitting in front of their computers with their IRC clients all day?

The simple answer to that is usually no. Many avid IRC users use an IRC bouncer, a proxy service that remains persistently connected to your preferred IRC networks and channels. Instead of connecting directly to an IRC network such as irc.example.com, you connect to a machine like bouncer.mysite.com which runs the bouncer software. The bouncer, in turn, is connected to the IRC network. When you log into your bouncer, it shows messages in your channels you may have missed while offline, as well as private messages from other users.

What is ZNC?

ZNC is a bouncer application that provides this awesome set of features. ZNC is readily available in the Fedora software repositories for you to install wherever you like. Fortunately, using ZNC is quick and easy. In little time, you too can have your own ZNC bouncer up and running. You’ll never have to leave an IRC channel again!

Installing and Using ZNC

Installation

Before getting started, make sure your server is publicly accessible on the Internet, and that the port you’ll use for your bouncer is open. Usually, this is port 6667 for unencrypted or 6697 for encrypted SSL traffic. If you’re unsure how to configure your firewall, run the following commands to open the desired port on your server:

$ sudo firewall-cmd --add-port=<port number>/tcp
$ sudo firewall-cmd --runtime-to-permanent

Afterwards, run the following command to install ZNC:

$ sudo dnf install znc

Initial configuration at the command line

Once installation finishes, you’re ready to jump into configuration. To do so, run the configuration generator as the znc user. Use the following command:

$ sudo -u znc znc --makeconf

You’ll be prompted through a series of configuration options for ZNC. An example of my configuration is below. Password entries have been omitted, and for some options like Nick, I’ve hit Enter to accept a default.

-- Global settings --
Listen on port (1025 to 65534): 6697
Listen using SSL (yes/no) [no]: yes
Listen using both IPv4 and IPv6 (yes/no) [yes]: # you can default this to yes unless you have a reason to prevent IPv6 traffic
-- Admin user settings --
Username (alphanumeric): jflory7
Enter password:
Confirm password:
Nick [jflory7]:
Alternate nick [jflory7_]:
Ident [jflory7]:
Real name [Got ZNC?]: Justin W. Flory
Bind host (optional):

If you wish to set up a network inside of your terminal, you can. If not, you can do this later on in your web administration portal.

Launch ZNC now? (yes/no) [yes]:
Success, you made it to your ZNC web panel for IRC!

Success, you made it to your ZNC web panel!

Congratulations, your ZNC server is now running! If everything’s set up correctly, you should be able to log into your web panel.

To get to your web panel, open your web browser and enter the location http(s)://<server_ip>:<your_port>. You should now see the ZNC panel. If you opted to use SSL earlier, your browser will likely warn you about insecure SSL certificates. That’s okay for now, since we generated them on our own to use for the server. You can safely ignore the warning.

Finishing configuration in the web panel

Once you log into your web panel, you’re greeted by plenty of different options. Find the user account that you set up in the web panel and edit the user, so you can add a network. For the scope of this article, we’ll add a popular IRC network, freenode.

Your window will look similar to this for adding an IRC network.

Your window will look similar to this for adding an IRC network.

The information for freenode is listed below for you to add to ZNC. If you wish to connect to a different IRC network, please refer to the server information provided by that network.

  • Network Name: freenode
  • Nickname, alt. nickname, ident, and real name can be left blank. They will be inherited from your user’s global settings that we set earlier.
  • Servers of this IRC network: chat.freenode.net +6697
  • Modules:
    • Modules are convenient “extras” that can make your IRC experience more customized or smoother. The full list can be found on the ZNC wiki, but experiment with ones you think you would find useful!
    • Some of my favorites are: crypt, keepnick, kickrejoin, simple_away.

Once you finish, select Save and return.

The last step is to add some channels. You can do this in the network configuration page for the network you just configured. This is the easiest part! Look for the section on the page that mentions channels and select Add. You’ll be greeted by a few different options, but for our purposes, only two are relevant.

Channel Name is the name of a channel you want to join, such as #fedora. The other setting you may find useful is Buffer Count. The buffer count is how many messages will be stored in the history for a particular channel when you log into IRC after being away. For most channels, 50 lines is probably plenty. But if you’re in a particularly chatty channel and don’t want to miss any messages, you can bump this setting to 200 or even 500 lines.

Easy as 1,2,3 - add your favorite IRC channels and you're ready to go!

Easy as 1,2,3 – add your favorite channels and you’re ready to go!

Final Steps

Now that ZNC is fully configured, start the service and make sure it automatically starts itself if the server ever reboots. To do that, run the following commands:

$ sudo systemctl start znc
$ sudo systemctl enable znc

ZNC is now up and running on your server, and you can use your IRC client to connect.

Setting Up Your IRC Client

Now that the hard work is done, you should configure your IRC client to use your ZNC bouncer service. A popular IRC client available in Fedora is the HexChat client. But there are plenty of options for you to find what works best for you.

Change the generic information to the address and password for your ZNC IRC bouncer.

Change the generic information to the address and password for your server.

Instead of adding the settings for an IRC network to your client, you’ll add information for your bouncer. The screenshot shows an example of how this might look for you.

The server password is how you authenticate to your bouncer. Instructions for how to connect are at the top of the ZNC page for your user. They’re generally formatted as username/network_name:password. You can refer to the ZNC wiki for more information about connecting with your IRC client.

Once you’re finished adding the network, you can connect to the network. Now you never have to worry about missing another message in an IRC channel again!

by Justin W. Flory at August 25, 2017 08:00 AM

xkcd.com

August 23, 2017

Fedora Magazine

3 ways to trick out your terminal emulator

The command line is one of the most well-loved parts of a Linux distribution. Maybe not just because of what you can do with it, but how you can use it. Terminal windows are notorious for customization, and there’s several different ways you can make it your own. You can change the theme color, adjust transparency, use different fonts, or even different terminal emulators. This article will show you three ways you can customize your terminal emulator in Fedora.

Change your fonts

Some people are fine with the default fonts, but what if you have a favorite or want to try something new? There’s a lot of monospaced fonts packaged in Fedora. Check out this round-up of six fonts you can try out and customize in your terminal to make it your own.

6 great monospaced fonts for code and terminal in Fedora

Power up with powerline

Ever seen one of those cool lines in someone’s terminal? Powerline is one tool that makes it possible. You can have helpful status markers, like seeing what git branch you’re in or whether you’re inside of a Python virtual environment. There’s also plugins available for Vim and tmux. Learn how to enable it in Fedora with this quick how-to.

Add power to your terminal with powerline

Try the Tilix terminal emulator

If you’ve been in a terminal for a while and want to try something new, why not look at Tilix? Tilix is a tilable emulator that lets you split your terminal windows in different ways at once. It also follows the GNOME Human Interface Guidelines to be as user-friendly as possible. Learn how to get started with Tilix in Fedora 26 in this article.

Try Tilix — a new terminal emulator in Fedora

Tips and tricks?

If you’ve never thought about customizing your terminal emulator before, hopefully these tips will let you start playing around with your own unique configurations! Is there something you think we missed or is there a cool tweak you know of you want to share? Let us know how you’re tricking out your terminal in the comments below.


Photo by Ilya Pavlov on Unsplash.

by Justin W. Flory at August 23, 2017 08:00 AM

xkcd.com

August 21, 2017

Fedora Magazine

Edit images with GNU Parallel and ImageMagick

Imagine you need to make changes to thousands or millions of images. You might write a simple script or batch process to handle the conversion automatically with ImageMagick. Everything is going fine, until you realize this process will take more time than expected.

After rethinking the process, you realize this task is taking so long because the serial method processes one image at a time. With that in mind, you want to modify your task to work in parallel. How can you do this without reinventing the wheel? The answer is simple: use GNU Parallel and the ImageMagick utility suite.

About GNU Parallel and ImageMagick

The GNU Parallel program can be used to execute jobs faster. If you use xargs or tee, you’ll find parallel easy to use. It’s written to have the same options as xargs. If you write loops in the shell, you’ll find parallel can often replace most of the loops and finish the work faster, by running several jobs in parallel.

The ImageMagick suite of tools offers many ways to change or manipulate images. It can deal with lots of popular formats, such as JPEG, PNG, GIF, and more.

The mogrify command is part of this suite. You can use it to resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more.

Using parallel with mogrify

These packages are available in the Fedora repositories. To install, use the sudo command with dnf:

sudo dnf install ImageMagick parallel

Before you start running the commands below, be aware the mogrify command overwrites the original image file. If you want to keep the original image, use the convert command (also part of ImageMagick) to write to a different image file. Or copy your originals to a new location before you mogrify them.

Try this one-line script to resize all your JPEG images to half their original size:

cd ~/Pictures; find . -type f | egrep "*.jpg" | parallel mogrify -resize 50% {}

If you wanted to convert these files instead, adding -new to the filename:

cd ~/Pictures; find . -type f | egrep "*.jpg" | parallel convert -resize 50% {} {.}-new.jpg

Resize all your JPEG images to a maximum dimension of 960×600:

cd ~/Pictures; find . -type f -iname "*.jpg" | parallel mogrify -resize 960x600 {}

Convert all your JPEG images to PNG format:

cd ~/Pictures; find . -type f | egrep "*.jpg" | parallel mogrify -format png {/}

For more information about the mogrify command and examples of usage, refer to this link. Enjoy!


Photo by John Salzarulo on Unsplash.

by Diego Roberto dos Santos at August 21, 2017 08:00 AM

xkcd.com

August 18, 2017

Fedora Magazine

Installing Ring in Fedora 26

Many communication platforms promise to link people together by video, voice, and data. But almost none of them promise or respect user privacy and freedom to a useful extent.

Ring is a universal communication system for any platform. But it is also a fully distributed system that protects users’ confidentiality. One protective feature is that it doesn’t store users personal data in a centralized location. Instead, it decentralizes this data through a combination of OpenDHT and Ethereum blockchain technology. In addition to being distributed, it has other unique features for communication:

  • Cross platform (works on Linux, Windows, MacOS, and Android)
  • Uses only free and open source software
  • Uses standard security protocols and end-to-end encryption
  • Works with desktop applications (like GNOME Contacts)

In July the Savoir-faire Linux team released the stable 1.0 version of Ring. Although it isn’t included in Fedora due to some of its requirements, the Savoir-faire team graciously provides a package for the Fedora community.

How to install Ring

To install, open a terminal and run the following commands:

sudo dnf config-manager --add-repo https://dl.ring.cx/ring-nightly/fedora_26/ring-nightly.repo
sudo dnf install ring

If you’re using an older version of Fedora, or an entirely different platform, check out the download page.

How to setup a RingID

Now that it’s installed, you’re ready to create an account (or link pre-existing one). The RingID allows other users to locate and contact you while still protecting your privacy. To create one:

  1. First, click on Create Ring Account.
  2. Next, add the required information.
  3. Finally, click Next.
Ring welcome screen Ring register user name RingID

The tutorial page offers more information on setting up this useful app. For example, you can learn how to secure your account and add devices which all notify you on a call. To learn more, check out the tutorial page.

 

by Ryan Desfosses at August 18, 2017 08:00 AM

xkcd.com

August 17, 2017

Fedora Magazine

5 apps to install on your Fedora Workstation

A few weeks ago, Fedora 26 was released. Every release of Fedora brings new updates and new applications into the official software repositories. Whether you were already a Fedora user and upgraded or you are a first-time user, you might be looking for some cool apps to try out on your Fedora 26 Workstation. In this article, we’ll round up five apps that you might not have known were available in Fedora.

Try out a different browser

By default, Fedora includes the Firefox web browser. But in Fedora 25, Chromium (the open source version of Chrome) was packaged into Fedora. You can learn how to start using and install Chromium below.

How to install Chromium in Fedora

Sort and categorize your music

Do you have a Fedora Workstation filled with local music files? When you open it in a music player, is there missing or just straight out wrong metadata? MusicBrainz is the Wikipedia of music metadata, and you can take back control of your music by using Picard. Picard is a tool that works with the MusicBrainz database to pull in correct metadata to sort and organize your music. Learn how to get started with Picard in Fedora Workstation below.

Picard brings order to your music library

Get ready for the eclipse

August 21st is the big day for the total solar eclipse in North America. Want to get a head start by knowing the sky before it starts? You can map out the sky by using Stellarium, an open source planetarium application available in Fedora now. Learn how to install Stellarium before the skies go dark in this article.

Track the night sky with Stellarium on Fedora

Control your camera from Fedora

Have an old camera lying down? Or maybe do you want to upgrade your webcam by using an existing camera? Entangle lets you take control of your camera all from the comfort of your Fedora Workstation. You can even adjust aperture, shutter speed, ISO settings, and more. Check out how to get started with it in this article.

Tether a digital camera using Entangle

Share Fedora with a friend

One of the last things you might need to do with your Fedora Workstation is extend it! With the Fedora Media Writer, you can create a USB stick loaded with any Fedora edition or spin of your choice and share it with a friend. Learn how to start burning your own USB drives in this how-to article below.

How to make a Fedora USB stick

by Justin W. Flory at August 17, 2017 08:00 AM

August 16, 2017

xkcd.com

August 14, 2017

Fedora Magazine

Fedora Classroom Session 4

The Fedora Classroom sessions continues this week. You can find the general schedule for sessions on the wiki. You can also find resources and recordings from previous sessions there.

Here are details about this week’s session on Friday, August 18 at 1300 UTC.

Instructor

Eduard Lucena is an IT Engineer and an Ambassador from the LATAM region. He started working with the community by publishing a simple article in the Magazine. Right now he actively works in the Marketing group and aims to be a FAmSCO member for the Fedora 26 release. He works in the telecommunication industry and uses the Fedora Cinnamon Spin as his main desktop, both at work and home. He isn’t a mentor, but tries to on-board people into the project by teaching them how to join the community in any area. His motto is: “Not everything is about the code.”

Topic: Vim 101

Like many classic utilities developed during UNIX’s early years, vi has a reputation for being hard to navigate. Bram Moolenaar’s enhanced and optimized clone, Vim (“vi Improved“), is the default editor in almost all UNIX-like systems. The world’s come a long way since Vim was written. Even though the system resources have grown, many still stick with the Vim editor, including Fedora.

This hands-on session will teach you about the different Vim versions packaged in Fedora. Then, we’ll go deeper into how to use this powerful tool. We’ll also teach you how not to flounder trying to close the editor!

Joining the session

Since this is a hands-on session, you’ll want to have a Linux installation to follow it properly. Preferably you’ll have Vim installed with full features. If you don’t have it, don’t worry — you’ll learn how to install it and what the differences are. No prior knowledge of the Vim editor is required.

This session will be held via IRC. The following information will help you join the session:

We hope you can attend and enjoy this experience from some of the people that work in the Fedora Project.


Photograph used in feature image is San Simeon School House by Anita Ritenour — CC-BY 2.0.

by Eduard Lucena at August 14, 2017 08:43 PM

xkcd.com

August 11, 2017

Fedora Magazine

Fedora August 2017 election change

UPDATE (2017-Aug-14): The Fedora Engineering Steering Committee (FESCo) voting also had to be rescheduled due to a candidate listing error. It will run during the same time as the FAMSCo voting period listed below. You can read more information here.

As seen earlier this week, the Fedora community holds elections in several groups. One group that elects seats this month is the Fedora Ambassador Steering Committee (FAMSCo).

The FAMSCo election started along with others this week. However, due to a technical error, the voting system prevented some eligible people from voting. Contributors have now fixed this issue. Fedora Program Manager Jan Kurik announced the issue and the fix on the Ambassadors’ mailing list.

What does this mean?

Of course the project wants to ensure the election is open and fair for all. Therefore, the FAMSCo election will restart next week. The new voting period begins on Tuesday, August 15 at 0000 UTC (click the link for local time). It ends on Monday, August 21 at 2359 UTC.

Votes from the original FAMSCo election do not count. Only the new votes are valid. So if you voted in the original election, you must vote again to be counted.

What about other elections?

As mentioned in the announcement, the Fedora Council and FESCo elections continue unaffected. The announcement here contains additional details.

by Paul W. Frields at August 11, 2017 03:40 PM

How to upgrade from Fedora 25 Atomic Host to 26

In July the Atomic Working Group put out the first and second releases of Fedora 26 Atomic Host. This article shows you how to prepare an existing Fedora 25 Atomic Host system for Fedora 26 and do the upgrade.

If you really don’t want to upgrade to Fedora 26 see the later section: Fedora 25 Atomic Host Life Support.

Preparing for Upgrade

Before you perform an update to Fedora 26 Atomic Host, check the filesystem to verify that at least a few GiB of free space exists in the root filesystem. The update to Fedora 26 may retrieve more than 1GiB of new content (not shared with Fedora 25) and thus needs plenty of free space.

Luckily Upstream OSTree has implemented some filesystem checks to ensure an upgrade stops before it fills up the filesystem.

The example here is a Vagrant box. First, check the free space available:

[[email protected] ~]$ sudo df -kh /
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/atomicos-root  3.0G  1.4G  1.6G  47% /

Only 1.6G free means the root filesystem probably needs to be expanded to make sure there is plenty of space. Check the free space by running the following commands:

[[email protected] ~]$ sudo vgs
  VG       #PV #LV #SN Attr   VSize  VFree
  atomicos   1   2   0 wz--n- 40.70g 22.60g
[[email protected] ~]$ sudo lvs
  LV          VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  docker-pool atomicos twi-a-t--- 15.09g             0.13   0.10                            
  root        atomicos -wi-ao----  2.93g

The volume group on the system in question has 22.60g free and the atomicos/root logical volume is 2.93g in size. Increase the size of the root volume group by 3 GiB:

[[email protected] ~]$ sudo lvresize --size=+3g --resizefs atomicos/root
  Size of logical volume atomicos/root changed from 2.93 GiB (750 extents) to 5.93 GiB (1518 extents).
  Logical volume atomicos/root successfully resized.
meta-data=/dev/mapper/atomicos-root isize=512    agcount=4, agsize=192000 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1 spinodes=0 rmapbt=0
         =                       reflink=0
data     =                       bsize=4096   blocks=768000, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 768000 to 1554432
[[email protected] ~]$ sudo lvs
  LV          VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  docker-pool atomicos twi-a-t--- 15.09g             0.13   0.10                            
  root        atomicos -wi-ao----  5.93g

The lvresize command above also resized the filesystem all in one shot. To confirm, check the filesystem usage:

[[email protected] ~]$ sudo df -kh /
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/atomicos-root  6.0G  1.4G  4.6G  24% /

Upgrading

Now the system should be ready for upgrade. If you do this on a production system, you may need to prepare services for downtime.

If you use an orchestration platform, there are a few things to note. If you use Kubernetes, refer to the later section on Kubernetes: Upgrading Systems with Kubernetes. If you use OpenShift Origin (i.e. via being set up by the openshift-ansible installer), the upgrade should not need any preparation.

Currently the system is on Fedora 25 Atomic Host using the fedora-atomic/25/x86_64/docker-host ref.

[[email protected] ~]$ rpm-ostree status
State: idle
Deployments:
● fedora-atomic:fedora-atomic/25/x86_64/docker-host
                Version: 25.154 (2017-07-04 01:38:10)
                 Commit: ce555fa89da934e6eef23764fb40e8333234b8b60b6f688222247c958e5ebd5b

In order to do the upgrade the location of the Fedora 26 repository needs to be added as a new remote (like a git remote) for ostree to know about:

[[email protected] ~]$ sudo ostree remote add --set=gpgkeypath=/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-26-primary fedora-atomic-26 https://kojipkgs.fedoraproject.org/atomic/26

It can be seen from the command that a new remote known as fedora-atomic-26 was added with a remote url of https://kojipkgs.fedoraproject.org/atomic/26. The gpgkeypath variable was also set in the configuration for the remote. This tells OSTree that it should verify commit signatures when downloading from a remote.This is something new that was enabled for Fedora 26 Atomic Host.

Now that the system has the fedora-atomic-26 remote the upgrade can be performed:

[[email protected] ~]$ sudo rpm-ostree rebase fedora-atomic-26:fedora/26/x86_64/atomic-host

Receiving metadata objects: 0/(estimating) -/s 0 bytes
Signature made Sun 23 Jul 2017 03:13:09 AM UTC using RSA key ID 812A6B4B64DAB85D
  Good signature from "Fedora 26 Primary <[email protected]>"

Receiving delta parts: 0/27 5.3 MB/s 26.7 MB/355.4 MB
Signature made Sun 23 Jul 2017 03:13:09 AM UTC using RSA key ID 812A6B4B64DAB85D
  Good signature from "Fedora 26 Primary <[email protected]>"

27 delta parts, 9 loose fetched; 347079 KiB transferred in 105 seconds                                                                                                                                            
Copying /etc changes: 22 modified, 0 removed, 58 added
Transaction complete; bootconfig swap: yes deployment count change: 1
Upgraded:
  GeoIP 1.6.11-1.fc25 -> 1.6.11-1.fc26
  GeoIP-GeoLite-data 2017.04-1.fc25 -> 2017.06-1.fc26
  NetworkManager 1:1.4.4-5.fc25 -> 1:1.8.2-1.fc26
  ...
  ...
  setools-python-4.1.0-3.fc26.x86_64
  setools-python3-4.1.0-3.fc26.x86_64
Run "systemctl reboot" to start a reboot
[[email protected] ~]$ sudo reboot
Connection to 192.168.121.217 closed by remote host.
Connection to 192.168.121.217 closed.

After reboot the status looks like:

$ vagrant ssh
[[email protected] ~]$ rpm-ostree status
State: idle
Deployments:
● fedora-atomic-26:fedora/26/x86_64/atomic-host
                Version: 26.91 (2017-07-23 03:12:08)
                 Commit: 0715ce81064c30d34ed52ef811a3ad5e5d6a34da980bf35b19312489b32d9b83
           GPGSignature: 1 signature
                         Signature made Sun 23 Jul 2017 03:13:09 AM UTC using RSA key ID 812A6B4B64DAB85D
                         Good signature from "Fedora 26 Primary <[email protected]>"

  fedora-atomic:fedora-atomic/25/x86_64/docker-host
                Version: 25.154 (2017-07-04 01:38:10)
                 Commit: ce555fa89da934e6eef23764fb40e8333234b8b60b6f688222247c958e5ebd5b
[[email protected] ~]$ cat /etc/fedora-release
Fedora release 26 (Twenty Six)

The system is now on Fedora 26 Atomic Host. If this were a production system now would be a good time to check services, most likely running in containers, to see if they still work. If a service didn’t come up as expected, you can use the rollback command: sudo rpm-ostree rollback.

To track updated commands for upgrading Atomic Host between releases, visit this wiki page.

Upgrading Systems with Kubernetes

Fedora 25 Atomic Host ships with Kubernetes v1.5.3, and Fedora 26 Atomic Host ships with Kubernetes v1.6.7. Before you upgrade systems participating in an existing Kubernetes cluster from 25 to 26, you must make a few configuration changes.

Node Servers

In Kubernetes 1.6, the --config argument is no longer valid. If systems exist that have the KUBELET_ARGS variable in /etc/kubernetes/kubelet that point to the manifests directory using the --config argument, you must change the argument name to --pod-manifest-path. Also in KUBELET_ARGS, add an additional argument: --cgroup-driver=systemd.

For example, if the /etc/kubernetes/kubelet file started with the following:

KUBELET_ARGS="--kubeconfig=/etc/kubernetes/kubelet.kubeconfig --config=/etc/kubernetes/manifests --cluster-dns=10.254.0.10 --cluster-domain=cluster.local"

Then change it to:

KUBELET_ARGS="--kubeconfig=/etc/kubernetes/kubelet.kubeconfig --pod-manifest-path=/etc/kubernetes/manifests --cluster-dns=10.254.0.10 --cluster-domain=cluster.local --cgroup-driver=systemd"

Master Servers

Staying With etcd2

From Kubernetes 1.5 to 1.6 upstream shifted from using version 2 of the etcd API to version 3. The Kubernetes documentation instructs users to add two arguments to the KUBE_API_ARGS variable in the /etc/kubernetes/apiserver file:

--storage-backend=etcd2 --storage-media-type=application/json

This ensures that Kubernetes continues to find any pods, services or other objects stored in etcd once the upgrade has been completed.

Moving To etcd3

You can migrate etcd data to the v3 API later. First, stop the etcd and kube-apiserver services. Then, assuming the data is stored in /var/lib/etcd, run the following command to migrate to etcd3:

# ETCDCTL_API=3 etcdctl --endpoints https://YOUR-ETCD-IP:2379 migrate --data-dir=/var/lib/etcd

After the data migration, remove the --storage-backend=etcd2 and --storage-media-type=application/json arguments from the /etc/kubernetes/apiserver file and then restart etcd and kube-apiserver services.

Fedora 25 Atomic Host Life Support

The Atomic WG decided to keep updating the fedora-atomic/25/x86_64/docker-host ref every day when Bodhi runs within Fedora. A new update is created every day. However, it is recommended you upgrade systems to Fedora 26 because future testing and development focus on Fedora 26 Atomic Host. Fedora 25 OSTrees won’t be explicitly tested.

Conclusion

The transition to Fedora 26 Atomic Host should be a smooth process. If you have issues or want to be involved in the future direction of Atomic Host, please join us in IRC (#atomic on freenode) or on the atomic-devel mailing list.

by Dusty Mabe at August 11, 2017 12:28 PM

xkcd.com

August 09, 2017

Fedora Magazine

William Beauford and Bryan Rhodes: How Do You Fedora?

We recently interviewed William Beauford and Bryan Rhodes on how they use Fedora. This is part of a series on the Fedora Magazine. The series profiles Fedora users and how they use Fedora to get things done. Contact us on the feedback form to express your interest in becoming a interviewee.

Who is William Beauford?

William Beauford

William Beauford is a software developer. He currently works on a video communication platform for inmates. The program allows inmates to communicate with their friends and family. He started using Linux in high school. He started with Ubuntu mostly as an on and off again hobby. William switched to Linux full time in 2015.

William is inspired by Chris Jericho. “I’ve always admired how Chris Jericho traveled the world learning many different styles to create his own. I try to mirror that by learning different programming languages, frameworks, etc. to build up my skill set.”

William values loyalty, honesty, passion, compassion and guile. His favorite food is hamburgers. The Shawshank Redemption and The Dark Knight are his favorite movies.

Who is Bryan Rhodes?

Bryan and his wife Emory

Bryan Rhodes is a software engineer who works for an inmate communication company. “I am the lead software engineer for a video visitation system that allows inmates to visit with their loved ones at home through messaging and WebRTC video chats,” Bryan stated. He has been in the industry for four years and really enjoys his job. “I think my favorite part of our product is that our entire platform runs on 100% Linux.”

Bryan started using Linux in 2004. His first distribution was Fedora Core 2. He danced between several different distributions before settling on Fedora. “I started off using Fedora Core 2 and switched between Slackware, Gentoo and Ubuntu 4.10. I eventually settled with Fedora Core 5 and have used it primarily over the years except for on production servers where I use CentOS.”

Bryan hopes that when he ages he still has a strong passion for technology like his childhood hero Steve Wozniak. “I really love his curious mind, hacker outlook and that personable feeling you get from watching his interactions with people around him. I hope that as I age, I age with a continued love for technology like he has.”

Bryan’s favorite food is sushi. “My wife and I have a routine of eating sushi for our date nights and destressing after a long week, so I enjoy it for the taste and the quality time.”

His latest fascination and hobby is drones. “I have been using drones and Raspberry Pi’s to create geospatial maps of areas. Right now I am working on mapping my family’s 840 acre farm to give later generations an idea of how it has changed over time.”

The Fedora community

William is impressed with how easy it is to find a solution. “Most of the time, someone has already been through the issue you’re experiencing and knows exactly how to fix it,” he says.

Bryan is impressed with how fast Fedora innovates and patches. He said, “I think one of the things that really stuck out to me with Fedora so many years ago was when Xen was first growing and gaining traction. Fedora seemed to develop and innovate more features along with quickly patching bugs than any other OS out there.” Bryan and William would like to see Fedora become a rolling release.

What hardware?

William recently built his own gaming PC. It is equipped with an AMD Ryzen 7 processor and an Nvidia GTX 1080Ti video card. His currently laptop is a Lenovo Thinkpad X201 equipped with a Core i7 processor, 8GB of RAM and a 256GB SSD drive. William says, “This laptop has had the best compatibility I’ve ever seen during my experience. It’s a little old but it gets the job done and I’m looking forward to upgrading to a Dell XPS 13 when the time comes.”

The Ryzen 7 machine is equipped with a Fractal Design Celsius S36 AIO cooler. It has 16GB of Cosair Vengeance Ram, a Gigabyte GA-AX370 Gaming 5 and an Asus ROG STRIX GTX 1080TI. The case is a red NZXT H440. Beauford is a big Star Wars fan, so the hostname is Kylo-Ren.

Bryan also uses a Lenovo. “I am currently running an older, but stable, Lenovo x201 Tablet laptop.” The laptop is equipped with 8GB of RAM and a 256GB SSD. He says, “It does everything I need it to do while also being lightweight.”

What Software?

William is currently running Fedora 25. William uses VSCode with an Emacs plugin to write the majority of his code. He says, “To spice up my mundane bash shell I use Powerline to give it a little more personality.” He adds Dash to Dock and Applications Menu extensions to his GNOME desktop.

Bryan runs Fedora 25 on the X201. “I write all of my code in VSCode these days after many of years of using Emacs in my GNOME terminal,” he says. He likes VSCode because Java, Golang, PHP and SQL plugins are easy to install. All of his code is packaged into Docker containers. The containers are pushed to a Docker registry running on top of CentOS and then into a Kubernetes cluster.

by Charles Profitt at August 09, 2017 10:00 AM

xkcd.com

August 08, 2017

Fedora Magazine

Fedora Classroom Session 3

The Fedora Classroom sessions continue this week. You can find the general schedule for sessions on the wiki. You can also find resources and recordings from previous sessions there.

Here are details about this week’s session on Thursday, August 10 at 1300 UTC.

Instructor

Ankur Sinha (“FranciscoD”) is a Free Software supporter and has been with the Fedora community for the better part of a decade now. Rahul Sundaram mentored him as font package maintainer in his early days with Fedora. Ankur has since branched out to acquaint himself with many other teams and SIGs.

He is a Fedora Workstation user, and prefers to use the terminal as much as possible. Currently, he is working on his PhD in computational neuroscience in the UK. When he does have time to spare, he focuses on the Fedora Join SIG and on maintaining his packages.

He can be reached via his Fedora project e-mail or on one of the many Fedora IRC channels. Feel free to ping him.

Topic: Command Line 101

Over the years, the command line has developed a reputation for being rather hard core, only apt for advanced users of Linux. This is entirely false. While GUI tools have their benefits, they are not well suited for all types of tasks. The command line provides a set of powerful tools and operators. It lets you carry out a myriad of tasks easily and efficiently. Often you don’t even need to move your fingers off the home row.

This hands-on session starts with a quick theoretical introduction. Then we’ll go over a set of useful command line tools. Finally we’ll look at some advanced topics such as I/O redirection. This will give you a taste of how easy and powerful the command line is.

Joining the session

Since it is a hands-on session, it will be useful to have a Linux installation to follow it properly. No prior knowledge of the command line is required. This session will be held via IRC. The following information will help you join the session:

We hope you can attend and enjoy this experience from some of the people that work in the Fedora Project.


Photograph used in feature image is San Simeon School House by Anita Ritenour — CC-BY 2.0.

by Eduard Lucena at August 08, 2017 10:00 AM

August 07, 2017

Fedora Magazine

Fedora August 2017 elections beginning

UPDATE (2017-Aug-11): The FAmSCo and FESCo elections described below have been rescheduled. Read this Magazine article for details.

Twice a year, a new version of Fedora is released. The entire Fedora community is a part of the process, from packaging new updates, creating wallpapers, hosting our websites, and spreading the word at conferences and events. Fedora is a big community, and a few groups help lead in different areas of the community. These groups offer guidance and direction in technical and non-technical areas of Fedora. After every release, a round of elections for these groups begins. Nominated Fedora contributors from across the project campaign for different seats on the three leadership groups. Election week is this week!

What are Fedora’s leadership groups?

There are three main leadership groups in Fedora: the Fedora Council, the Fedora Ambassador Steering Committee (FAmSCo), and the Fedora Engineering Steering Committee (FESCo).

The Fedora Council is the top-level community leadership and governance body. The Council is a mix of representatives from different areas of the project, named roles appointed by Red Hat, and a variable number of seats connected to medium-term project goals. Decision-making is a consensus process, where the Council works together as a common team to find shared solutions and address concerns, with a focus on giving voice than on balance of power.

Additionally, the Fedora Ambassador Steering Committee, or FAmSCo, provides guidance and organization to the Fedora Ambassadors, the representatives and advocates of Fedora. FAmSCo works to enable regional leaders to grow their communities and help guide regions to be consistent and organized. All the seats on FAmSCo are elected Ambassadors from the community.

Lastly, the Fedora Engineering Steering Committee, or FESCo, provides technical leadership and guidance in Fedora. Furthermore, FESCo handles the process of accepting new features, accepting new packaging sponsors, Special Interest Groups (SIGs) and SIG Oversight, the packaging process, handling and enforcement of maintainer issues and other technical matters related to the distribution and its construction. All of the FESCo seats are also elected by the community.

Voting opens Tuesday, August 8th

Today is the last day for the “campaign” part of the election. Candidates for all elections are provided with a list of questions from the community to answer on the Community Blog. Soon, voting officially opens on Tuesday, August 8th, 2017 and closes on Monday, August 14th, 2017 at 23:59 UTC. Voting takes place on the Voting application website.

To take part in the elections, you need to have these requirements:

  • Council: Created a Fedora account, signed the CLA
  • FAmSCo: Created a Fedora account, belong to one or more community group(s)
  • FESCo: Created a Fedora account, belong to one or more community group(s)

As part of the Elections coverage on the Community Blog, most candidates published their interviews and platforms there. Are you getting ready to vote and looking for this information? You can find the full list of candidates and links to their interviews below.

Candidate Interviews

Fedora Council

One seat is open in the Fedora Council.

  • Dennis Gilmore (dgilmore / ausil) [no interview published / wiki]
  • Justin W. Flory (jwf / jflory7) [interview / wiki]
  • Langdon White (langdon) [no interview published / wiki]
  • Nick Bebout (nb) [no interview published / wiki]
  • Till Maas (tyll / till) [no interview published / wiki]

Fedora Ambassador Steering Committee (FAmSCo)

Three seats are open in FAmSCo.

  • Andrew Ward (award3535) [interview / wiki]
  • Alex Oviedo Solis (alexove) [interview / wiki]
  • Ben Williams (Southern_Gentlem / jbwillia) [no interview published / wiki]
  • Daniel Lara (danniel) [no interview published / wiki]
  • Itamar Reis Peixoto (itamarjp) [no interview published / wiki]
  • Eduard Lucena (x3mboy) [interview / wiki]
  • Eduardo Echeverria (echevemaster) [interview / wiki]
  • Nick Bebout (nb) [no interview published / wiki]
  • Sirko Kemter (gnokii) [no interview published / wiki]
  • Sumantro Mukherjee (sumantrom) [interview / wiki]

Fedora Engineering Steering Committee (FESCo)

Four seats are open in FAmSCo.

Vote!

Remember, the voting period starts tomorrow and ends next Monday, so make sure you get your votes in before the end of the Election. You can vote on the Voting application.

by Justin W. Flory at August 07, 2017 08:00 AM

xkcd.com

August 04, 2017

Fedora Magazine

Add speech to your Fedora system

By default, Fedora Workstation ships a small package called espeak. It adds a speech synthesizer — that is, text-to-speech software.

In today’s world, talking devices are nothing impressive as they’re very common. You can find speech synthesizers even in your smartphone, a product like Amazon Alexa, or in the announcements at the train station. In addition, synthesized voices are nowadays more or less similar to human speech. We live in a 1980s science fiction movie!

The voice produced by espeak may sound a bit primitive compared to the aforementioned tools. But at the end of the day espeak produces good quality speech. And whether you find it useful or not, at least it can provide some amusement.

Running espeak

In espeak you can set various parameters using command line options. Examples include:

  • amplitude (-a)
  • pitch adjustment (-p)
  • speed of sentences (-s)
  • gap between words (-g)

Each of these options produces various effects and may help you achieve a cleaner voice.

You can also select different voice variants with command line options. For example, try -ven+m3 for a different English male voice, and -ven+f1 for a female one. You can also use different languages. For a list, run this command:

espeak --voices

Note that many languages other than English are experimental attempts.

To create a WAV file instead of actually speaking something, use the -w option:

espeak -w out.wav "Audio file test"

The espeak utility also reads the content of a file for you.

espeak -f plaintextfile

Or you can pass the text to speech from the standard input. In this way, as a simple example, you can build a talking box that alerts you to an event using a voice. Your backup is completed? Add this command to the end of your script:

echo "Backup completed" | espeak -s 160 -a 100 -g 4

Suppose an error shows up in a log file:

tail -1F /your/log/file | grep --line-buffered 'ERROR' | espeak

Or perhaps you want a speaking clock telling you every minute what time it is:

while true; do date +%S | grep '00' && date +%H:%M | espeak; sleep 1; done
As you can guess, use cases are limited only by your imagination. Enjoy your new talking Fedora system!

by Alessio Ciregia at August 04, 2017 12:03 PM

xkcd.com

August 02, 2017

xkcd.com

August 01, 2017

Fedora Magazine

Fedora Classroom Session 2

The Fedora Classroom sessions continues this week. You can find the general schedule for sessions on the wiki. You can also find resources and recordings from previous sessions there.

Here are details about this week’s session.

Instructor

Eduard Lucena is an IT Engineer and an Ambassador from the LATAM region. He started working with the community by publishing a simple article in the Magazine. Right now he actively works in the Marketing group and aims to be a FAmSCO member for the Fedora 26 release. He works in the telecommunication industry and uses the Fedora Cinnamon Spin as his main desktop, both at work and home. He isn’t a mentor, but tries to on-board people into the project by teaching them how to join the community in any area. His motto is: “Not everything is about the code.”

Topic: Starting in the Fedora community with the Fedora Magazine

This session is a short guide on how to start working with the Fedora community by writing articles for the Fedora Magazine. When you finish this session, you’ll know the main SIGs and WGs and be able to find your way around the community.

Joining the session

This session will be held via Jitsi. The following information will help you join the session:

We hope you can attend and enjoy this experience from some of the people that work in the Fedora Project.


Photograph used in feature image is San Simeon School House by Anita Ritenour — CC-BY 2.0.

by Eduard Lucena at August 01, 2017 08:00 AM

July 31, 2017

Fedora Magazine

Fedora 24 End of Life

With the recent release of Fedora 26, Fedora 24 officially enters End Of Life (EOL) status on August 8th, 2017. After August 8th, all packages in the Fedora 24 repositories no longer receive security, bugfix, or enhancement updates. Furthermore, no new packages will be added to the Fedora 24 collection.

Upgrading to Fedora 25 or Fedora 26 before August 8th 2017 is highly recommended for all users still running Fedora 24:

Looking back at Fedora 24

Fedora 24 was released in June 2016. During this time the Fedora Community published over 10 500 updates to the Fedora 24 Repositories. Fedora 24 released with version 4.5 of the Linux kernel, and Fedora Workstation featured version 3.20 of GNOME.

Screenshot of Fedora 24 Workstation

Fedora 24 Workstation screenshot

About the Fedora Release Cycle

The Fedora Project provides updates for a particular release until a month after the second subsequent version of Fedora is released. For example, updates for Fedora 25 continue until one month after the release of Fedora 27. Fedora 26 continues to be supported up until one month after the release of Fedora 28.

The Fedora Project wiki contains more detailed information about the entire Fedora Release Life Cycle. The lifecycle includes milestones from development to release, and the post-release support period.

by Matthew Miller at July 31, 2017 02:36 PM

xkcd.com

July 28, 2017

Fedora Magazine

Enhancing photos with GNOME Photos

GNOME Photos is an application that lets you easily organize photos and screenshots. GNOME Photos doesn’t enforce a folder hierarchy. Instead, it relies on tracker to find and index photos inside well-known folders, such as Pictures in your home folder (~/Pictures).

Photos has steadily grown in its ability to edit pictures. For instance, GNOME Photos 3.24 recently added two new color adjustment options: exposure and blacks. Of course, the subject of digital photo editing is a deep one. Without going into too much detail, this article demonstrates the basic photo editing options available in GNOME Photos.

First, install Photos from the Software tool, or by using dnf along with sudo:

sudo dnf install gnome-photos

Run the app from the Overview by searching for “Photos.” The first time you run Photos, it populates its Photos tab with all image files found in ~/Pictures:

Adjusting Colors

Double-click on the photo you wish to edit. Click the pencil icon to open the Edit panel:

Click Colors, and a series of sliders expands.

These sliders control various enhancement effects to the image. This photo ended up under-exposed; the sensor probably detected too much light from the sky, leaving the beach without enough exposure time. Adjust the Exposure slider to the right and the image will update with an enhanced exposure.

Slide up the Saturation to deepen the sea and sky blues.

Applying a filter

Photos also ships with some canned filters. These filters apply preset adjustments to the photo to give it a particular style. For example, the Calistoga filter gives the beach a vintage/retro look:

Be sure to click Done to save the changes.

Non-destructive edits

Any time you edit a photo in Photos, it preserves the original. You can return to the original if you don’t like how your changes turn out. Open the Properties menu item and click Discard all Edits to revert the file to its original copy.

Set a background

Photos can also set pictures as the desktop background. First, crop the photo to your desired aspect ratio — 16×9 in this example.

Next, click Done. Then select the newly edited picture, and from the menu, select Set as Background.

Photos can do more than edit. It also integrates with GNOME Online Accounts, and can be set up to share photos to various online photo services. Photos also lets you organize your photos into albums. It even detects screenshots and automatically sorts them into a Screenshots album for you!

by Link Dupont at July 28, 2017 08:00 AM

xkcd.com

July 27, 2017

Fedora Magazine

Fedora Classroom Sessions are here!

The Fedora Join SIG is proud to announce Classroom sessions. The Fedora Classroom is a project to teach interested users how to better use, understand and manage their Fedora system, and to show how the community works. The idea is to reach interested people and, if they desire, bring them closer to the Fedora community.

Almost all classes will be held on IRC in the #fedora-classroom channel on Freenode (irc.freenode.net). If you’re not familiar with IRC, check out the Beginner’s guide to IRC. Also we’ll use BlueJeans, a video conferencing platform that works from browsers, mobile devices and a desktop application. If you have trouble connecting to Blue Jeans, please refer to the support page.

The schedule

The following Classroom sessions are currently scheduled (subject to change):

Date Time (UTC) Class topic and Instructor
2017-07-28 13:00 UTC – 14:30 UTC FOSS 101 – David Kaspar
2017-08-04 15:00 UTC – 16:00 UTC Fedora Magazine 101 – Eduard Lucena
2017-08-07 – 2017-08-11 TBD Command line 101 – Ankur Sinha “FranciscoD”
2017-08-14 – 2017-08-18 TBD VIM 101 – Eduard Lucena/Ankur Sinha “FranciscoD”
2017-08-21 – 2017-08-25 TBD Emacs 101 – Sachin Patil
2017-08-28 – 2017-09-01 TBD Fedora QA 101 – Sumantro Mukherjee/Amita Sharma
2017-09-04 – 2017-09-08 TBD Git 101 – Ankur Sinha “FranciscoD”
2017-09-11 – 2017-09-15 TBD Fedora packaging 101 – Ankur Sinha “FranciscoD”

This week’s session

Here are details about this Friday’s upcoming session.

Instructor

David Kašpar (a.k.a. Dee’Kej) started working for Red Hat as an intern in Quality Engineering in 2012. Nowadays, he’s a package maintainer for both Fedora and Red Hat Enterprise Linux. In addition, he’s also a strong believer in free/libre and open source software principles, advocating for their usage even outside the IT industry. He regularly introduces students to meritocracy, the open source world, and the so-called Open Source Way. But he has other big passions as well — music, gaming and capoeira (Brazilian martial arts).

Topic: FOSS 101

A fly-through the history of Free/Libre & Open Source (FOSS) to let you know how it all started, how did it go, what have we achieved so far, and what can we expect in the future.

Joining the session

This session will be held via BlueJeans. The following information will help you join the session:

We hope you can attend and enjoy this experience from some of the people that work in the Fedora Project.


Photograph used in feature image is San Simeon School House by Anita RitenourCC-BY 2.0

by Eduard Lucena at July 27, 2017 03:44 PM

July 26, 2017

Fedora Magazine

How to use the same SSH key pair in all AWS regions

This article shows how to use the AWS Command Line Interface (AWS CLI) to configure a single SSH key pair on multiple AWS Regions. By doing this you can access EC2 instances from different regions using the same SSH key pair.

Installing and configuring AWS CLI

Start by installing and configuring the AWS command line interface:

sudo dnf install awscli
aws configure

Verify the AWS CLI installed correctly:

aws --version
aws-cli/1.11.109 Python/3.6.1 Linux/4.11.10-300.fc26.x86_64 botocore/1.5.72

Configuring the SSH key pair

If you don’t have an SSH key pair or want to follow this article using a new one:

openssl genrsa -out ~/.ssh/aws.pem 2048
ssh-keygen -y -f ~/.ssh/aws.pem > ~/.ssh/aws.pub

If you already have an SSH private key created using the AWS Console, extract the public key from it:

ssh-keygen -y -f ~/.ssh/aws.pem > ~/.ssh/aws.pub

Importing the SSH key pair

Now that you have the public key, declare the variable AWS_REGION containing a list with the regions to which you want to copy your SSH key. To check the full list of available AWS regions use this link.

AWS_REGION="us-east-1 us-east-2 us-west-1 us-west-2 ap-south-1 eu-central-1 eu-west-1 eu-west-2"

If you don’t want to specify each region manually, you can use the ec2 describe-regions command to get a list of all available regions:

AWS_REGION=$(aws ec2 describe-regions --output text | awk '{print $3}' | xargs)

Next, import the SSH public key to these regions, substituting your key’s name for <MyKey>:

for each in ${AWS_REGION} ; do aws ec2 import-key-pair --key-name <MyKey> --public-key-material file://~/.ssh/aws.pub --region each ; done

Also, if you want to display which SSH key is available in a region:

aws ec2 describe-key-pairs --region REGION

To delete an SSH key from a region:

aws ec2 delete-key-pair --key-name <MyKey> --region REGION

Congratulations, now you can use the same SSH key to access all your instances in the regions where you copied it. Enjoy!

by Diego Roberto dos Santos at July 26, 2017 08:00 AM

xkcd.com

Fedora黑

July 25, 2017

Fedora Magazine

Announcing Boltron: The Modular Server Preview

The Modularity and Server Working Groups are very excited to announce the availability of the Boltron Preview Release. Boltron is a bit of an anomaly in the Fedora world — somewhere between a Spin and a preview for the future of Fedora Server Edition. You can find it, warts (known issues) and all, by following the directions below to grab a copy and try it out.

Fedora’s Modularity Working Group (and others) have been working for a while on a Fedora Objective. The Objective is generically called “Modularity,” and its crux is to allow users to safely access the right versions of what they want. However, there are two major aspects of “accessing the right versions.”

The first aspect deals with the problem of installing multiple versions of something in the same user space. In other words, the user may want httpd-2.4 and httpd-2.6 installed and running at once. There are countless solutions to this problem, with different tradeoffs and primary goals. For example:

  • Python natively allows this
  • Software Collections munge binaries into their own namespace on disk
  • Containers namespace most aspects of the running binaries away from the default user space.

Early on, the Modularity WG decided not to focus on solving this problem yet again. Rather, they promoted and encouraged OCI containers, System Containers, and Flatpaks to address the different use cases in this space. Watch for another announcement about using System Containers with Boltron in a few weeks.

There are other solutions, but in the interest of time, the Working Group has focused on the other aspect, availability of multiple versions. At first glance, this may seem to be a simple problem. That is, until you review the Fedora infrastructure and see the tight coupling of our packaging and the concept of the “Fedora Release” (e.g. F25, F26, etc) with everything Fedora builds and ships.

The Working Group also took on the requirement to impact the Fedora Infrastructure, user base, and packager community as little as possible. The group also wanted to increase quality and reliability of the Fedora distribution, and drastically increase the automation, and therefore speed, of delivery.

As a result, the group didn’t treat this as a greenfield experiment that would take years to harden and trust. Instead, they kept the warts and wrinkles with the toolset, and implemented tools and procedures that slightly adjusted the existing systems to provide something new. Largely, the resultant package set can be thought of as virtualized, separate repositories. In other words, the client tooling (dnf) treats the traditional flat repo as if it was a set of repos that are only enabled when you want that version of the component.

Now Fedora has 25 modules for you to play with, easily shown with dnf module list or at the bottom of dnf list. As the Arbitrary Branching change to dist-git didn’t land in time for Fedora 26, the stream for most of the modules is the typical branch found in dist-git, namely f26. Over time, the modules are expected to actually develop their own streams that most likely follow their upstream communities. There is one example at present, where NodeJS version 8 is being made available in the nodejs-8 stream.

The Bits

“Blah blah, where are my bits,” you ask? The recommended process starts by running the system as a container, found in the Fedora Registry:

docker run --rm -it registry.fedoraproject.org/f26-modular/boltron

Feedback

The Modularity Working Group is interested in your feedback. The group developed a Getting Started page and a general feedback form. However, we could really use your specific feedback about the interactions with the tools and would love it if you could try our walk through.

You can find more general Modularity documentation, including how to build a module, at our docs site. The proposed Module Packaging Guidelines also appear in the Pagure repo, to ease collaboration before it is promoted to the Wiki after approval. We are recommending users try the container so that we have the opportunity to update it to deal with warts and feedback over the course of Fedora 26.

by Langdon White at July 25, 2017 08:00 AM

July 24, 2017

Fedora Magazine

Easy backups with Déjà Dup

Welcome to part 3 in the series on taking smart backups with duplicity. This article will show how to use Déjà Dup, a GTK+ program to quickly back up your personal files.

Déjà Dup is a graphical frontend to Duplicity. Déjà Dup handles the GPG encryption, scheduling and file inclusion for you, presenting a clean and simple backup tool. From the project’s mission:

Déjà Dup aims squarely at the casual user. It is not designed for system administrators, but rather the less technically savvy.

It is also not a goal to support every desktop environment under the sun. A few popular environments should be supported, subject to sufficient developer-power to offer tight integration for each.

Déjà Dup integrates very well with GNOME, making it an excellent choice for a quick backup solution for Fedora Workstation.

Installing Déjà Dup

Déjà Dup can be found in GNOME Software’s Utilities category.


Alternatively, Déjà Dup can be installed with dnf:

dnf install deja-dup

Once installed, launch Déjà Dup from the Overview.

Déjà Dup presents 5 sections to configure your backup.

  • Overview
  • Folders to save
  • Folders to ignore
  • Storage location
  • Scheduling

Folders to save

Similar to selecting directories for inclusion using duplicity‘s --inclusion option, Déjà Dup stores directories to include in a list. The default includes your home directory. Add any additional folders you wish to back up to this list.

Perhaps your entire home directory is too much to back up. Or parts of your home directory are backed up using version control. In that case, remove “Home” from the list and add just the folders you want to back up. For example, ~/Documents and ~/Projects.

Folders to ignore

These folders are going to be excluded, similar to the --exclude option. Starting with the defaults, add any other folders you wish to exclude. One such directory might be ~/.cache. Consider whether to exclude this carefully. GNOME Boxes stores VM disks inside ~/.cache. If those virtual disks contain data that needs to be backed up, you might want to include ~/.cache after all.

Launch Files and from the Action menu, turn on the Show Hidden Files option. Now in Déjà Dup, click the “plus” button and find Homecache. The list should look like this afterwards:

Storage location

The default storage location is a local folder. This doesn’t meet the “Remote” criteria, so be sure to select an external disk or Internet service such as Amazon S3 or Rackspace Cloud Files. Select Amazon S3 and paste in the access key ID you saved in part 1. The Folder field allows you to customize the bucket name (it defaults to $HOSTNAME).

Scheduling

This section gives you options around frequency and persistence. Switching Automatic backup on will immediately start the deja-dup-monitor program. This program runs inside a desktop session and determines when to run backups. It doesn’t use cron, systemd or any other system scheduler.

Back up

The first time the Back Up utility runs, it prompts you to configure the backup location. For Amazon S3, provide the secret access key you saved in part 1. If you check Remember secret access key, Déjà Dup saves the access key into the GNOME keyring.

Next, you must create a password to encrypt the backup. Unlike the specified GPG keys used by duply, Déjà Dup uses a symmetric cipher to encrypt / decrypt the backup volumes. Be sure to follow good password practices when picking the encryption password. If you check Remember password, your password is saved into the GNOME keyring.

Click Continue and Déjà Dup does the rest. Depending on the frequency you selected, this “Backing up…” window will appear whenever a backup is taking place.

Conclusion

Déjà Dup deviates from the backup profiles created in part 1 and part 2 in a couple specific areas. If you need to encrypt backups using a common GPG key, or need to create multiple backup profiles that run on different schedules, duplicity or duply might be a better choice. Nevertheless, Déjà Dup does an excellent job at making data back up easy and hassle-free.

by Link Dupont at July 24, 2017 08:00 AM

xkcd.com