Twenty Years of KDE
On October 14th 1996 the famous announcement arrived on the newsgroups comp.os.linux.development.apps, comp.os.linux.misc, and de.comp.os.linux.misc:
New Project: Kool Desktop Environment. Programmers wanted!
The new project quickly attracted a group of enthusiastic developers and they pushed out code with a frentic pace. kdelibs-0.0.1 was released in November, containing the first classes KConfig and KApplication. In May 1997 the young project presented at the Linux-Kongress in Würzburg. In August Kalle Dalheimer published the famous article about KDE in the German computer magazine c't which attracted a whole generation of KDE developers to the project. On Jul 12th 1998 KDE 1.0 was done and released. The community had not only implemented a friendly face for Linux but also a bunch of applications while going, including a full web browser.
KDE did hundreds more releases over the years, continuously improving and maintaining the growing number of applications and amount of code. The community grew. It started to do annual conferences such as Akademy or the Desktop Summits and focused developer sprints such as the Osnabrück or the Randa meetings. KDE e.V., the organization behind KDE, which was founded as partner for the KDE Free Qt Foundation, grew with the community to be the corner stone of the organizational structure of KDE, using German association law as its secret superpower (read more about this in the book "20 Years of KDE: Past, Present and Future").
Millions and millions of people used KDE software over the years. Thousands of people contributed. KDE made appearances in Hollywood movies, it was subject of theses and scientific studies, and it won many awards. KDE's founder, Matthias Ettrich even received the German Federal Cross of Merit. The timeline of twenty years of KDE is an impressive demonstration of what Free Software is able to achieve.
KDE also was a breeding ground. Many people started their careers there. Hundreds of students went through mentoring programs such as the Summer of Code or the Season of KDE. Whole projects emerged from KDE, such as ownCloud and its sibling NextCloud, Kolab, or KHTML, which turned into WebKit and then Blink, powering most of web browsers on this planet today.
Today Linux has reached world domination in various, sometimes surprising, ways. KDE has contributed its share to that. With Plasma it provides a slick and powerful desktop which does make Linux accessible to everyone. This mission has been accomplished. But there is more. Following KDE's vision of bringing freedom to people's digital life there are amazing projects exploring new areas through Free Software, be it an application such as Krita to bring freedom to digital painters, or a project such as WikiToLearn to create collaborative text books for education. When KDE people meet you can feel the enthusiasm, the openness, and the commitment to change the world to the better just as in the days of the beginning.
I joined KDE in 1999 with my first patch to KOrganizer. I wrote a lot of code, maintained and founded applications, served on the board of KDE e.V. for nine years. Most importantly I found a lot of friends. Neither my personal nor my professional life would be what it is today without KDE. I owe a lot to this community. Thank you for the last twenty years.
openSUSE.Asia Summit 2016
DAY 1
( From Taiwan team to Indonesia team )
( The best way is AL give to Estu, but AL is not here this year ) QQ
Kurz práce v příkazové řádce Linuxu nejen pro MetaCentrum 2017
Don’t be afraid of command line! It is friendly and powerful tool. Practically identical is command line also in Mac OS X, BSD and another UNIX-based systems, not only in Linux. Basic knowledge of Linux is not conditional. Course will be taught in Linux, but most of the point are applicable also for another UNIX systems like Mac OS X. Knowledge of Linux/UNIX is useful e.g. for working with molecular and another data. MetaCentrum is service provided by CESNET allowing access to huge computational capacity.
Deploy your Flask Web Application on Ubuntu 16.04 with Apache, Gunicorn and systemd
I still get questions from time to time about how to deploy a python web application using Apache and not NGINX. Here is a quick tutorial to deploy your Flask application on Ubuntu 16.04 or any linux distribution (considering relevant changes) using Apache, Gunicorn and systemd. Until some weeks ago I used supervisord instead of systemd but nowadays I prefer to use systemd because is already there, installed, part of system. And also the reason to look into systemd and to switch was that I had to deploy an application on SLES (SUSE Linux Enterprise Server) and there is no supervisord package available in repos.
Note: This is a very basic configuration to get everything running. It is just for learning and to get the idea how everything is connected.
So, let's start:
- we create a user which will run our Flask application
# adduser flaskappuser
- install and configure apache:
# apt-get install apache2
As result we should get the default apache webpage in browser (http://your-ip-here)
- we have to enable proxy modules for apache:
# a2enmod
and give this list of modules to enable:
proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html
- Add our application to apache web server config file. Add the following lines (inside
VirtualHostblock) to/etc/apache2/sites-available/000-default.conf. Make a backup of this file before you modify it
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
<Location "/flaskapp">
ProxyPass "http://127.0.0.1:5000/"
ProxyPassReverse "http://127.0.0.1:5000/"
</Location>
so, the final file should look like this:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreserveHost On
<Location "/flaskapp">
ProxyPass "http://127.0.0.1:5000/"
ProxyPassReverse "http://127.0.0.1:5000/"
</Location>
</VirtualHost>
- restart apache to see if is working:
# service apache2 restart
http://your-ip-here —> should give you the same standard html page for apache, as before
http://your-ip-here/flaskapp —> should give you:
Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
that’s because we still don’t have our Flask app running, but it seems that apache is trying to send the request to it, good.
- let’s take care of our Flask app:
we will run it in a virtual environment, so let’s install virtualenv:
# apt-get install python3-venv
create and activate our new venv:
# cd /home/flaskappuser
# mkdir flaskapp
# cd flaskapp
# python3.5 -m venv flaskvenv
# source flaskvenv/bin/activate
install flask and gunicorn in our venv:
# pip install flask gunicorn
create out simple flask app (/home/flaskappuser/flaskapp/app.py)
1 2 3 4 5 6 7 8 9 10 11 12 |
|
let’s run our app to see if is working:
(flaskvenv) root@apache-flask:~/flaskapp/# python app.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [10/Oct/2016 13:58:56] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [10/Oct/2016 13:58:59] "GET / HTTP/1.1" 200 -
in your web browser you should see: Hello from FLASK if you try: http://your-ip-here/flaskapp
- everything is ok right now, but we want to use
Gunicornas our application server, so let’s configure it
in the same place where your Flask application is (/home/flaskappuser/flaskapp/ in my case) create a gunicorn.conf file with the following content:
accesslog = "/home/flaskappuser/flaskapp/logs/gunicorn_access.log"
errorlog = "/home/flaskappuser/flaskapp/logs/gunicorn_error.log"
we have to create our directory where to store the logs files:
# mkdir logs
now we can try to test our app again by running it using gunicorn:
# gunicorn -c gunicorn.conf -b 0.0.0.0:5000 app:app
check the browser and see if you app is working. Should work 😃
make sure that everything in flaskappuser home directory belongs to this user
# chown -R flaskappuser:flaskappuser /home/flaskappuser/
Now we have one more step. We want to monitor our Flask app and to restart it on crashing or to have nice start/stop commands for it. Or to have it started automatically on reboot. In order to do that we can use systemd which is available already in Ubuntu 16.04.
For that we have to create a .service file for our app. Here is my file: (/etc/systemd/system/flaskapp.service):
[Unit]
Description=flaskapp
After=network.target
[Service]
User=flaskappuser
Restart=on-failure
WorkingDirectory=/home/flaskappuser/flaskapp/
ExecStart=/home/flaskappuser/flaskapp/flaskvenv/bin/gunicorn -c /home/flaskappuser/flaskapp/gunicorn.conf -b 0.0.0.0:5000 app:app
[Install]
WantedBy=multi-user.target
activate our .service file
# systemctl daemon-reload
enable it at boot/restart
# systemctl enable flaskapp
start our app
# systemctl start flaskapp
Check if our app is running:
(flaskvenv) root@apache-flask:~/flaskapp# tail -f /var/log/syslog
Oct 10 14:25:59 guest systemd[1]: Started ACPI event daemon.
Oct 10 14:26:03 guest systemd[1]: Started flaskapp.
(flaskvenv) root@apache-flask:~/flaskapp# ps aux | grep gunicorn
flaskappuser 7263 0.2 2.9 64904 22492 ? Ss 14:26 0:00 /home/flaskappuser/flaskapp/flaskvenv/bin/python3.5 /home/flaskappuser/flaskapp/flaskvenv/bin/gunicorn -c /home/flaskappuser/flaskapp/gunicorn.conf -b 0.0.0.0:5000 app:app
check the app in your browser:
http://your-ip-here/flaskapp
you can stop your app with:
# systemctl stop flaskapp
Done!
Note: Here is my repository with the files: GitHub
ERR_NETWORK_CHANGED in Chrome/Chomium @openSUSE_Tumbeweed @DELL_5510
- Good news #1 I've stopped seeing these errors instantly
- Good news #2 I haven't started seeing any other errors either
- google-chrome-stable-53.0.2785
- NetworkManager-1.4.0
FlightGame
Recent ownCloud Releases
Even though we just had the nice and successful ownCloud Contributor Conference there have quite some ownCloud releases happened recently. I like to draw your attention to this for a moment, because some people seem to fail to see how active the ownCloud community actually is at the moment.
There has been the big enterprise release 9.1 on September 20th, but that of course came along with community releases which are in the focus here.
We had server release 8.0.15, server release 8.1.10, server release 8.2.8 and release 9.0.5. There are maintenance releases for the older major versions, needed to fix bugs on installations that still run on these older versions. We deliver them following this plan.
The latest and greatest server release is release 9.1.1 that has all the hardening that also went into the enterprise releases.
Aside a ton of bugfixes that you find listed in the changelog there have also been interesting changes which drive innovation. To pick just one example: The data fingerprint property. It enables the clients to detect if the server got a backup restored, and saves changes on the clients to conflict files if needed. This is a nice example of solutions which are based on feedback from enterprise customers community running ownCloud, who help with reporting problems and proposing solutions.
Talking about professional usage of ownCloud: Of course also all the server release are available as linux packages for various distributions, for example the ownCloud server 9.1.1 packages. We think that our users should not be forced to deploy from tarballs, which is error prone and not native to Linux, but have the choice to use linux packages through the distributions package management.
There also have been client releases recently: The Android client versions 2.1.1 and 2.1.2 were released with important changes for Android 7 and much more fixes, as well as iOS client versions 3.5.0 and 3.5.1. The desktop client 2.2.4 also got a regular bug fix update (Changelog).
I guess you agree that is a lot of activity shown in the ownCloud project, making sure to get the best ownCloud experience out there for the users, driven by passion for the project and professional usage in focus.
If you are interested and want to join in and make ownCloud better, jump in on ownCloud Central or Github. It’s fun!
Linux V4.8 on N900
If you want to talk about Linux and phones, I'll probably be on LinuxDays in Prague this weekend, and will have a talk about it at Ubucon Europe.
Install Nextcloud on openSUSE Leap (apache+mariadb)

I see the official documentation has full tutorial for RHEL 6 or CentOS 6 and RHEL 7 or CentOS 7. The main documentation covers Ubuntu 14.04 LTS
openSUSE already has the Nextcloud client packaged in Tumbelweed and the Server is in the PHP extra repo! Personally, I prefer to install eveything from official repository, so when an update is available, I can have it without a glitch. This tutorial describes how to install Nextcloud using command line. I followed the official documentation of Ubuntu 14.04 LTS installation.
Why choose openSUSE Leap? openSUSE Leap is a brand new way of building openSUSE and is new type of hybrid Linux distribution. Leap uses source from SUSE Linux Enterprise (SLE), which gives Leap a level of stability unmatched by other Linux distributions, and combines that with community developments to give users, developers and sysadmins the best stable Linux experience available. Contributor and enterprise efforts for Leap bridge a gap between matured packages and newer packages found in openSUSE’s other distribution Tumbleweed. You can download openSUSE Leap from the site https://software.opensuse.org/.
Make sure that ssh (sshd) is enabled and also the firewall either is disabled or make an exception to the apache and ssh services. You can also set a static IP (check out how).
First of all, let's install the required and recommended modules for a typical Nextcloud installation, using Apache and MariaDB, by issuing the following commands in a terminal:
Next step, create a database. First of all start the service.
systemctl enable mysql.service
The root password is empty by default. That means that you can press enter and you can use your root user. That's not safe at all. So you can set a password using the command:
Where newpass is the password you want.
Now you set the root password, create the database.
#you'll be asked for your root password
CREATE DATABASE nextcloudb;
GRANT ALL ON nextcloudb.* TO ncuser@localhost IDENTIFIED BY 'dbpass';
Database user: ncuser
Database name: nextcloudb
Database user password: dbpass
You can change the above information accordingly.
Now you should edit the php.ini file.
change the values
upload_max_filesize = 25G
max_file_uploads = 200
max_input_time = 3600
max_execution_time = 3600
session.gc_maxlifetime = 3600
memory_limit = 512M
and finally enable the extensions.
extension=php_mbstring.dll
You should enable some modules. Some might be already enabled.
a2enmod rewrite
a2enmod headers
a2enmod env
a2enmod dir
a2enmod mime
Now start the apache service.
systemctl enable apache2.service
Before the installation, create the data folder and give the right permissions (preferably outside the server directory for security reasons). I created a directory in the /mnt directory. You can mount a USB disk, add it to fstab and save your data there. The commands are:
chmod -R 0770 /mnt/nextcloud_data
chown wwwrun /mnt/nextcloud_data
Now download Nextcloud (find the latest version at https://nextcloud.com/install/). Then unzip and move the folder to the server directory.
unzip nextcloud-12.0.0.zip
cp -r nextcloud /srv/www/
chown -R wwwrun /srv/www/htdocs/nextcloud/
Make sure that everything is OK and then delete the folder nextcloud and nextcloud-12.0.0.zip from the root (user) directory.
Now open your browser to the server IP/nextcloud

Set your administrator username and password.
Your data directory is: /mnt/nextcloud_data
Regarding database, use the following.
Database user: ncuser
Database name: nextcloudb
Database user password: dbpass
Wait until it ends the installation. The page you'll see is the following.

For more configuration, you can follow the official documentation. That was the basic installation on openSUSE Leap.
For any changes, check the github page.
Get started with Nextcloud App development in 6 easy steps!
![]() |
| The brand new app scaffolding tool in our app store |
What's simpler than downloading a zip file, extracting it and running a command in the resulting folder to get an Nextcloud server up on
localhost for hacking?Yes, it can be that simple, though it might require a few minor tweaks and you have to make sure to have all Nextcloud dependencies installed.
Note that this is useful if you want to develop an Nextcloud app. If you want to develop on the Nextcloud core, a git checkout is the way to go and you'll need some extra steps to get the dependencies in place, get started here. Feedback on this process is highly appreciated, especially if it comes with a pull request for our documentation of course ;-)
Step 1 and Two: Dependencies
- Install PHP and the modules mentioned here
Your distro should make the installation easy. Try these:
-
openSUSE:
zypper in php5 php5-ctype php5-curl php5-dom php5-fileinfo php5-gd php5-iconv php5-json php5-ldap php5-mbstring php5-openssl php5-pdo php5-pear php5-posix php5-sqlite php5-tokenizer php5-xmlreader php5-xmlwriter php5-zip php5-zlib -
Debian:
apt-get install php5 php5-json php5-gd php5-sqlite curl libcurl3 libcurl3-dev php5-curl php5-common php-xml-parser php5-ldap bzip2
-
openSUSE:
- Make Nextcloud session management work under your own user account.
Either change the path of php session files orchmod 777the folder they are in, usually something like/var/lib/php(debian/SUSE) or/var/lib/php/session(Red Hat).
The Final Four Steps
- Download the latest Nextcloud zip file.
- Extract it in a folder where you want to get going.
- Enter the folder and execute:
php -S localhost:5000 - Visit http://localhost:5000 in your browser
Nextcloud should present you with its installation steps! Give your username and password and you're up and running with SQLite.
Start with the app
Now you create a subfolder in the nextcloud/apps with the name of your app and put in a skeleton. You can generate an app skeleton really easy: use the scaffolding tool, part of our new app store for Nextcloud 11!It's probably wise to now get going with the app development tutorial here. This isn't updated for the scaffolding tool yet, so you'll have a head start here. Be sure to check out the changelog, we try to make sure the latest changes are noted there so even if we didn't manage to fully update the tutorial, you can find out what will and won't work in the changelog. Also, be sure to update the links to get the latest dev doc - this all links to 11, once that is out it is probably better to directly target 12 and so on.
Help and feedback
Your input is very much welcome! If you run through these steps and get stuck somewhere, let me know and I'll update the documentation. Or, of course better still, do a pull request on the documentation right in github. You don't even have to do a full checkout, smaller fixes can easily be done in the web interface on github.Last but not least, ask questions on our forums in the app dev channel or on IRC. Here is the Nextloud development IRC chat channel on freenode.net, also accessible via webchat.
Thanks, good luck, and have fun building Nextcloud apps!







