Poland is positively adapting to open source

FWIOO is launching a project to enforce fairness in government. IT procurement of open source products by naming and defaming government agencies that break the rules. The 2004 California Performance Review called “the state should consider using open-source software more broadly.” This document (and the databases that support it) provides quantitative data. In many cases using open source/free software (abbreviated OSS/FS, FLOSS, or FOSS) is justified or even better based on various measures to exploit proprietary competition methods. Note that those who use the term “open source software” tend to emphasize the technical advantages of such software (such as improved reliability and security). In contrast, those who use “free software” emphasize freedom and no control by other means and/or ethical issues.

Other alternative terms for FLOSS, besides these terms, include “free software”, “software livre”, free/libre (where libre means free as in freedom). Datezone, Open-source software/free software (OS/FS) and free, open-source software (FOSS or F/OSS). “Released software”, and even ”public software” (because these software projects are often designed to serve the general public). Even if they are not physically present in the same place, open-source software developers (OSS) can create software on a large scale.

Given that about 90% of all software includes open source components, according to almost every analysis. It could account for up to 80% or more of proprietary applications. As WhiteSource Software found, companies need to be able to inventory and protect this software, but few can do it.

Utilize Your Time Well with Time Management Software

Tidelift offers a way to solve this problem by providing subscriptions that pay software maintainers to improve and protect their code.

In November, the German city of Munich announced that it had saved 10 million euros by switching to open-source office software. Polish commentators wondered why Polish government agencies hadn’t done the same. Nevertheless, there are signs that open source software may find more fertile ground in this part of Europe in the future.

The situation could be worse, says Michal Wozniak from the Polish Free and Open Software Foundation (FWIOO). Wozniak argues that this raises ideological questions about the software and its practical functions. While open source isn’t necessarily cheaper when all the associated costs are considered, it provides much-needed flexibility, leading to savings. Unfortunately, there does not seem to be a way to fund open-source sustainability. Therefore, it’s essential to use multiple ways to achieve the goal of supporting and protecting open-source software.

The Open Networking Foundation (ONF) announced that T-Mobile (Poland) has achieved the launch of the open-source platform, ONF Open Mobile Evolved Core (OMEC). ONF is an operator-led consortium driving disruptive network transformation.

OMEC is an open-source, scalable mobile core platform built with Network Functions Virtualization (NFV) architecture.

The Open Mobile Evolution Core (OMEC) project is working to rebuild its central office as the Data Center Initiative (CORD) to serve as a seed project for the newly launched COMAC project. The OMEC project, developed in partnership with Sprint, was implemented using an NFV (Network Functions Virtualization) architecture, optimized for Intel platforms, and tested for scalability. Doug Eng was echoed by Lyle Bertz, Director of Technology Innovation and Architecture at Sprint, who spoke about Sprint’s ongoing Open Mobile Evolution Core (OMEC) field trial in February 2019 with the Open Networking Foundation (ONF). The Sprint Clean open-source platform, CUPS Core for Packet Optimization (C3PO), was launched in 2017 as the project’s seed code.

It is the industry’s first open-source Evolved Packet Core (EPC) distribution. It now has a distributor in T-Mobile Poland, the first carrier to list a “production-grade” EPC (Enhanced Packet Roksa Core) based on OMEC. The goal of the C3PO project is to create an EPC (Virtual Evolution Packet Core) based on a software-defined network capable of handling a large load of subscribers without sacrificing speed.

OMEC implementation provides a lightweight base package that enables large-scale connectivity, billing, and payments for many fixed-mobile subscribers. For example, T-Mobile Poland uses OMEC’s ​​Gateway Control, Subscriber Plans, and Billing components to provide a “fixed-mobile replacement” service, a wireless broadband product. OMEC Gateway Control includes a 3GPP compliant interface supporting connections to T-Mobile Poland base stations, mobility management services, and lawful interception platforms.

Thanks to OMEC, carriers like T-Mobile Poland can control their networks.

T-Mobile Poland is following what is likely to become commonplace in open networks: using OMEC, not in its core mobile broadband network, but to support a new service, fixed wireless (which the company calls mobile, fixed replacement). The distribution will serve as a valuable lesson for its majority shareholder, Deutsche Telekom, a member of the ONF. The implementation of ONF demonstrates how supply chain operators and vendors showup to use open source can implement revolutionary value propositions in record time.

At last year’s 5G and Open Source panel, AT&T Distinguished Technical Architect Doug Eng said operators have reached a point where open source is an opportunity at the heart of the network. Videos from T-Mobile Poland, Intel, ONF, and Sprint discuss the value of OMEC and the open-source core at ONF Connect 2019. ONF launched OMEC in 2019, providing the first production-grade open source mobile core solution. Disaggregated, 3GPP-compliant, independent controlled and user plane (CUPS) can run in containers, virtual machines, or bare metal.

Based on disaggregated RANs, fixed access, and CUPS-compliant core network components, COMAC’s target architecture is an optimized stack integrating programmable access layer, converged control plane, and assembled user plane that supports both LTE and 5G. The access architecture is based on the decoupled components of the RAN, core, and broadband network gateway (BNG) and is based on the work of other open groups such as ORAN for decoupled RAN and SDN from the ONF SDN-Enabled Broadband Access reference project, as well as its virtual termination hardware abstraction.

Upgrade from Windows — Free Software Foundation — Working together for free  software

OMEC, in its first iteration, fits this model as it is primarily optimized for lightweight cores to support private networks or IoT use cases.

It remains to be seen which combination of vendors will provide the Open RAN portion of the 5G network and what developments Dish Networks engineers will make to that end. AWS’s private 5G network (Amazon provides the 5G RAN and 5G core network) will compete with Dish’s 5G network (Dish provides the RAN and AWS delivers the 5G SA core network) for industrial customers. Dish 5G customers will be able to customize their service based on metrics like speed and latency. This depends on network partitioning, which would require Dish Networks’ core 5G network SA that has been handed over to AWS. AWS customers will be able to choose where they want to build their mobile networks and how much network bandwidth they need, Selipsky said.

AWS will then provide and maintain the necessary networks for the small cell radios, servers, 5G (core) RAN software, radio access network, and Subscriber Identity Modules (SIMs) needed for the 5G private network and devices connected to it. The most important announcement for readers of the IEEE Tech blog was the new AWS Private 5G service, which will allow users to launch and manage their private mobile network in days with automatic configuration, no per-device charges, and shared spectrum operations for users.

Why Did Apple Switch to ZSH?

Why did Apple switch to use? In the recent years Apple has moved from Mac to a “Newton” platform. The switch from Mac to iOS devices was driven primarily by Apple’s desire to provide customers with a new device that started life on an apple product. Apple’s desire to remain a technology leader also drove their decision to develop an intuitive user interface. Apple would essentially change everything about the Mac OS X system, including its underlying software, in order to place it on a non-compatible hardware. The result is that Mac OS X now supports only one single input method: zsh.

Why did Apple switch to zsh

Apple is heavy on simplifying their products and command line interface has been another area where they have strived for simplicity. In fact, the new features that the company has introduced into the command line (the Terminal) are so simple that they may be used by children. Apple has leveraged the power of Vim and bash by providing a single command line session that can run multiple commands. The result is that you can now run multiple tasks concurrently. In essence you can do your typing in the terminal and then simultaneously perform other tasks in your Mac environment.

Not long ago, Apple switched to using Vim as the default terminal for OS X. When Apple switched to using Vim, a lot of people wondered why, since vi is so much more mature and widely used. Apple has leveraged the power of Vim by adding support for additional languages. So if you are a programmer or developer you can utilize your Vim skills to write some additional programs.

Apple switched to using bash as the default shell for OS X.

This was done not only as a marketing strategy but it also made it much easier for system administrators to manage the different users that were sharing the same system. In fact, many third-party companies even develop interactive shells for OS X based on bash.

Apple has leveraged the power of bash by adding support for additional languages. So if you are a programmer or developer you can utilize your Vim skills to write some additional programs. For example, you can find a lot of companies that offer source code editing applications for Linux systems. These applications work just the same way as those that you would find in a Windows environment and can be run using a simple command line interface.

Nowadays, most people use Unix-like platforms for web browsing and developing. Even those who use Macs still use a user account similar to bash. In order to switch to a user account, the user must log in as root. By logging in as root, one can execute different commands. One such command is “ksh”, which enables you to switch to your own user account.

Not all shells are equal.

One of the primary reasons why Apple switched to zsh is because it is closer to the functionality of the standard bash. If you are familiar with the standard bash, you will be glad to know that there is an Apple ZSH prompts which looks similar to the one you will find in Microsoft Outlook. The only difference is that you do not need to type anything after the @ sign. To switch to your own user account, enter a command followed by a colon and then a space. To return to the main menu, enter a command followed by a colon.

Although many developers claim that they have the “toughest” shells available, only few of them can provide you with a robust computer program. Apple has designed its own shells which are able to run all kinds of useful programs such as Excel, Safari, and Firefox among others. With these programs, you can literally enjoy working on your computer. Therefore, you should consider using Apple’s default shell because it is the easiest to work with.

Keybindings

The way zsh handles keyboard input can be completely customized.
However, often users run into problems, when their terminal emulator sends charactersequences for special keys, that zsh doesn’t know about by default.

If you’re here, because your special keys, like HOME, DEL etc. don’t work. Use the terminfo solution presented on this page. It will work with almost all terminals on all systems, that provide terminfo (even NetBSD has that these days). And without any user-intervention.

See EmacsAndViKeys for keybinding nirvana.
zkbd – special keys solution

If you use several different terminal emulators, it’s likely, that you’ve run into the problem of neil, that pressing a special key like PageDown will just display a tilde instead of doing what it’s supposed to.

There is a function described in zshcontrib(1) that reads and stores keydefinitions for special keys, if it recognizes a terminal, it hasn’t seen before.
This is a snippet, that shows how it could be used:

autoload zkbd
function zkbd_file() {
[[ -f ~/.zkbd/${TERM}-${VENDOR}-${OSTYPE} ]] && printf ‘%s’ ~/”.zkbd/${TERM}-${VENDOR}-${OSTYPE}” && return 0
[[ -f ~/.zkbd/${TERM}-${DISPLAY} ]] && printf ‘%s’ ~/”.zkbd/${TERM}-${DISPLAY}” && return 0
return 1
}

[[ ! -d ~/.zkbd ]] && mkdir ~/.zkbd
keyfile=$(zkbd_file)
ret=$?
if [[ ${ret} -ne 0 ]]; then
zkbd
keyfile=$(zkbd_file)
ret=$?
fi
if [[ ${ret} -eq 0 ]] ; then
source “${keyfile}”
else
printf ‘Failed to setup keys using zkbd.\n’
fi
unfunction zkbd_file; unset keyfile ret

# setup key accordingly
[[ -n “$key[Home]” ]] && bindkey — “$key[Home]” beginning-of-line
[[ -n “$key[End]” ]] && bindkey — “$key[End]” end-of-line
[[ -n “$key[Insert]” ]] && bindkey — “$key[Insert]” overwrite-mode
[[ -n “$key[Backspace]” ]] && bindkey — “$key[Backspace]” backward-delete-char
[[ -n “$key[Delete]” ]] && bindkey — “$key[Delete]” delete-char
[[ -n “$key[Up]” ]] && bindkey — “$key[Up]” up-line-or-history
[[ -n “$key[Down]” ]] && bindkey — “$key[Down]” down-line-or-history
[[ -n “$key[Left]” ]] && bindkey — “$key[Left]” backward-char
[[ -n “$key[Right]” ]] && bindkey — “$key[Right]” forward-char

reading $terminfo[]

To get special keys working, you can also try to ask the terminfo database for the actual key sequences; this requires a valid terminfo database for the terminal in question, but works in most cases and requires no user interaction.

The following snippet assigns data from the $terminfo[] array to a $key[] hash, that is compatible to the hash created by zkbd (see above). That makes it possible to switch back and forth between the zkbd solution and the terminfo solution in case something goes wrong.

# create a zkbd compatible hash;
# to add other keys to this hash, see: man 5 terminfo
typeset -g -A key

key[Home]=”$terminfo[khome]”
key[End]=”$terminfo[kend]”
key[Insert]=”$terminfo[kich1]”
key[Backspace]=”$terminfo[kbs]”
key[Delete]=”$terminfo[kdch1]”
key[Up]=”$terminfo[kcuu1]”
key[Down]=”$terminfo[kcud1]”
key[Left]=”$terminfo[kcub1]”
key[Right]=”$terminfo[kcuf1]”
key[PageUp]=”$terminfo[kpp]”
key[PageDown]=”$terminfo[knp]”

# setup key accordingly
[[ -n “$key[Home]” ]] && bindkey — “$key[Home]” beginning-of-line
[[ -n “$key[End]” ]] && bindkey — “$key[End]” end-of-line
[[ -n “$key[Insert]” ]] && bindkey — “$key[Insert]” overwrite-mode
[[ -n “$key[Backspace]” ]] && bindkey — “$key[Backspace]” backward-delete-char
[[ -n “$key[Delete]” ]] && bindkey — “$key[Delete]” delete-char
[[ -n “$key[Up]” ]] && bindkey — “$key[Up]” up-line-or-history
[[ -n “$key[Down]” ]] && bindkey — “$key[Down]” down-line-or-history
[[ -n “$key[Left]” ]] && bindkey — “$key[Left]” backward-char
[[ -n “$key[Right]” ]] && bindkey — “$key[Right]” forward-char

# Finally, make sure the terminal is in application mode, when zle is
# active. Only then are the values from $terminfo valid.
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
function zle-line-init () {
echoti smkx
}
function zle-line-finish () {
echoti rmkx
}
zle -N zle-line-init
zle -N zle-line-finish
fi

CTRL-V – manually find out esc.-sequences

If you don’t like automation like zkbd provides, you can get the keysequences like this:
In order to see the sequence to give to bindkey for the key you want, use quoted-insert (control-V) and press the key combination. Another way to do this is to `cat > /dev/null` and then press the key combination.

So, in order to get bind something to your keyboard’s delete key, you do:

% bindkey ” delete-char

That means you *literally* hit control-v followed by delete. The angle-brackets are there for the sake of readability. You DO NOT HAVE TO INCLUDE THEM, in order to get the proper sequence. Also note, that the single-quotes are probably needed, do not leave them out.
Why isn’t Control-R working (anymore)?

You are probably in vi-Mode, because you have set $EDITOR or $VISUAL to something starting with ‘vi’. And this question sounds a lot like you do not want that. 🙂

The quick fix is to simply switch to emacs-like keybindings via bindkey -e.

However, if you are sure that you want vi-bindings, issue the following commands to enable ‘history-incremental-search-backward’ in both vi-keytables:

bindkey -M viins ‘^r’ history-incremental-search-backward
bindkey -M vicmd ‘^r’ history-incremental-search-backward

Swapping Keys

If you would like to swap keys inside zsh (like `~), i.e. swap keys X and Y so typing X gives Y and vice versa; check this post from Peter Stevenson:

Link: ZU#9947 (IMO the function is a bit too long for this page)
Most Wanted

Here are a few things, that users miss from time to time.

One of the things I most missed about bash when first switching to Zsh was that M-b and M-f (backward-word and forward-word) would jump over an entire /path/location, rather than to each word separated by a ‘/’. To make the behavior more like bash, you can evaluate this command:

export WORDCHARS=”

If you prefer, you can make WORDCHARS local to the definition of say, backword-word, so that kill-word still deletes an entire path. To do this, you need to define a widget function. For example, for backward-word, I use this:

tcsh-backward-word() {
local WORDCHARS=”${WORDCHARS:[email protected]/@}”
zle backward-word
}
zle -N tcsh-backward-word

PiyoPiyo: This is what I use in my own setup:

# by default: export WORDCHARS=’*?_-.[]~=/&;!#$%^(){}<>’
# we take out the slash, period, angle brackets, dash here.
export WORDCHARS=’*?_[]~=&;!#$%^(){}’

A question about binding keys: The one emacs keybinging I really miss in zsh is Ctrl-LeftArrowKey? and Ctrl-RightArrowKey? as backward-word and forward-word. I can’t seem to find out if it is possible to duplicate these keybindings in zsh. Is the terminal able to distinguish between LeftArrowKey? and Ctrl-LeftArrowKey?? It doesn’t seem to be from my investigations. Has anybody done this? Can it be done? – Merc
This appears to work:

bindkey ‘^[[5D’ emacs-backward-word
bindkey ‘^[[5C’ emacs-forward-word

This works: – czo

My xterm (KDE Konsole) was showing “;5D” and “;5C”, so I just used them instead:

bindkey ‘;5D’ emacs-backward-word
bindkey ‘;5C’ emacs-forward-word

on my urxvt it works with -/-

bindkey “\e\e[D” backward-word
bindkey “\e\e[C” forward-word

– phelix

If you see such a key sequence, I would try using it before a custom remapping as described below.
–mattflaschen

a terminal has no knowledge of a Ctrl-Arrow keypress, BUT if you use a terminal emulator (like xterm or rxvt under X11) you can assign an X keyboard event to a string sequence like ‘^[[5D’ that you then use in bindkey. Here is a line I have in my .Xresources

XTerm*vt100.Translations: #override\n\
Ctrl Left : string(“\033[90~”) \n\
Ctrl Right : string(“\033[91~”) \n

I have remapped shift-enter (using loadkeys for the console, and xmodmap in X) to produce Ctrl-J and added

bindkey “^J” self-insert

to my .zshrc. Thus I can type multiline command lines, and still be able to move the cursor up/down between the lines while editing. (This also works quite well with Ctrl-A and Ctrl-E, which if they’re at the beginning/end of a line jumps to the beginning/end of the previous/next line.) – Zrajm

Introduction

Zsh is a shell for Un*x systems that has been around since 1990 and is more sophisticated and configurable than most shells out there. There are lots of features, such as:

Context-based completion of many functions (like remote filename completion in ssh, makefile targets, configure scripts, and much more), which is highly configurable.
A powerful programming language with complex pattern matching mechanism (a pattern like **/*(^/) matches all (non-hidden) files in all subdirectories, but not directories themselves)
Lots of CLI (Command Line Interface) options and bindkeys
Loadable module support for adding builtin commands

Zsh has a very good User Guide. This wiki doesn’t aim to take its place, but to provide an accessible outline of all the features of Zsh (with some nifty specifics!), provide examples of use, and foster a Zsh community.