Nextcloud Planet

Welcome to Nextcloud News, our contributor blog roll. Nextcloud contributors should ask to get added!

Opinions are the responsibility of those who express them. See our privacy policy.

If you'd like to stay up to date with Nextcloud news you could also subscribe to our newsletter! A RSS feed with only release updates can be found here

Joas Schilling
Migrations for Nextcloud apps
September 7, 2017

In Nextcloud 13 we added migrations for database changes, allowing apps a more granular updating mechanism.

Until now apps had a appinfo/database.xml file which holds their database schema for installation and update. Here is an example from the twofactor_backupcodes app:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<database>
	<name>*dbname*</name>
	<create>true</create>
	<overwrite>false</overwrite>
	<charset>utf8</charset>
	<table>
		<name>*dbprefix*twofactor_backupcodes</name>
		<declaration>
			<field>
				<name>id</name>
				<type>integer</type>
				<autoincrement>1</autoincrement>
				<default>0</default>
				<notnull>true</notnull>
				<length>4</length>
			</field>
...

While for installing this was quite okay, it always had troubles when dealing with upgrades. E.g. apps were not able to rename columns without loosing the data stored in the original column. This is because the changes were executed in one go, without giving the app the possibility to do stuff in between.

For Nextcloud 13 we therefor introduce migrations. Migrations basically consist of 3 methods:

  1. Pre schema changes
  2. Actual schema changes
  3. Post schema changes

Since an app can have multiple migrations, the system allows for a way more flexible update. E.g. renaming a column while copying all the content can be solved with 3 steps in 2 migrations:

  1. Migration 1 - Schema change: create the new column

    	public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
    		/** @var Schema $schema */
    		$schema = $schemaClosure();
    
    		$table = $schema->getTable('twofactor_backupcodes');
    
    		$table->addColumn('user_id', Type::STRING, [
    			'notnull' => true,
    			'length' => 64,
    		]);
    
    		return $schema;
    	}
    

  2. Migration 1 - Post schema change: copy content from old to new column (could also be done in “Migration 2 - Pre schema change”)

    	public function postSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) {
    		$query = $this->db->getQueryBuilder();
    		$query->update('twofactor_backupcodes')
    			->set('user_id', 'uid');
    		$query->execute();
    	}
    

  3. Migration 2 - Schema change: remove the old column

    	public function changeSchema(IOutput $output, \Closure $schemaClosure, array $options) {
    		/** @var Schema $schema */
    		$schema = $schemaClosure();
    
    		$table = $schema->getTable('twofactor_backupcodes');
    		$table->dropColumn('uid');
    
    		return $schema;
    	}
    

Note: While in theory you can run any code in the pre- and post-steps, we recommend not to use actual php classes. WIth migrations you can update from any old version to any new version as long as the migration steps are retained. Since they are also used for installation, you should keep them anyway. But this also means when you change a php class which you use in your migration, the code may be executed on different database/file/code standings when being ran in an upgrade situation.

Note: Since Nextcloud stores, which migrations have been executed already you must not “update” migrations. The recommendation is to keep them untouched as long as possible. You should only adjust it to make sure it still executes, but additional changes to the database should be done in a new migration.

There are also some new console commands, which should help developers to create and deal with migrations, note that some are only available when running debug mode:

  migrations:execute                  Execute a single migration version manually.
  migrations:generate
  migrations:migrate                  Execute a migration to a specified version or the latest available version.
  migrations:status                   View the status of a set of migrations.

The most important one should be the migration:generate one. It needs to be used to create a new migration file. The command takes 2 arguments, first one is the appid , the second one should be the version of your app as an integer. We recommend to use the major and minor digits of your apps version for that. This allows you to introduce a new migration in your Nextcloud 13 branch, while there is already an Nextcloud 14 migration in a second branch. Since you can’t change this retroactive, we recommend to leave enough space in between and therefor map the numbers to 3 digits: 1.0.x => 1000, 2.34.x => 2034, etc.

After creating migrations for your current database and installation routine, the only thing you need to do in order to make use of migrations, is to delete the old appinfo/database.xml file. The Nextcloud installer/updater logic only allows to use one or the other. But as soon as the database.xml file is gone, it will look for your migration files in the apps lib/Migration folder.

Some example Pull Requests:

I hope this helps you to get started with migrations.

read more



Nextcloud
Significant growth at Nextcloud Conference brought 150 customers, colleagues and friends together
August 30, 2017

We just finished a week of inspiration with talks, coding and workshops at a very successful Nextcloud Conference! We had over 150 visitors from August 22 to August 29, with the most busy days, Friday, Saturday and Sunday each attracting 80 to 100 participants. A recap is in order, as a lot has happened!

Enterprise Day

Friday we welcomed enterprise users to a series of talks about large scale use of Nextcloud, covering security, scalability, communication, outlook integration and more. We also published the news that our iOS app is now free for download on Apple’s App store!

As part of the opening we had two partnership announcements:

You can already watch the entire set of talks on our YouTube channel!


Here are direct links to the talks about the future of file sync and share technology, introducing the Red Hat/Nextcloud joint offering, Univention and the Nextcloud appliance, User Management in Nextcloud, TU Berlin case study: migrating 22K users to Nextloud, Next generation security technology, scalability recommendations, Nextcloud Global Scale, real time secure collaboration and Outlook integration.

one of the workshops

one of the workshops

Saturday: keynotes, lightning talks, workshops

Saturday was kicked off by an inspiring keynote from Tristan Nitot, Mozilla Europe co-founder and former President about surveillance in the digital age. He challenged us to think about the risks of the cloud, both for home and enterprise users, and what we’re doing to combat them.

We continued with lightning talks started by Thomas Hildmann, our host from the TU Berlin, detailing the massive improvements the university  measured when migrating from ownCloud to Nextcloud. Next came many more talks covering the Android and desktop clients, cryptomator, the state of notifications, On My Disk easy Nextcloud deployments, the technology behind Pretty Easy Privacy, integrating Nextcloud with Zimbra and more subjects.

The lightning talk videos will be appearing on our YouTube channel over the coming weeks!

Lunch took long as our food truck had some starting up troubles but the food was amazing, making up for the delay. Afternoon featured a number of workshops on Cryptomator, the desktop client, UX design and more. At 19:00 we moved to the nearby biergarten for our social event.

Sunday

Like Saturday, the Sunday was kicked off by a keynote, this time by Moodle founder & Moodle PTY LTD CEO Martin Dougiamas. Together with Moodle and several other partners, Nextcloud recently introduced our Education Edition which integrates a series of crucial features for the educational market including Moodle. Using the Nextcloud Video Calls app for his remote keynote from Australia, Martin talked us through the story of Moodle but also challenged us to take a step back and look at the big picture. The world is full of profound challenges from hunger and poverty to political instability and threats to personal freedoms and security. Our community is on the forefront in this fight, building and promoting technology that aims to empower people to protect their privacy, voice their dissidence and organize to fight disease, poverty or other problems. Both Moodle and Nextcloud are thus building blocks for a better world!

After Martin we had a series of lightning talks kicked off by Nina Cercy who talked about the Nextcloud iOS client, which can now be downloaded for free in the Apple Appstore. She was followed by speakers talking about Nextcloud Video Calls, Docker, DAVdroid/Nextcloud integration, the Audio Player and much more. Stay tuned for videos of the lightning talks!

The afternoon once again featured well attended workshops on Docker container building, building your first Nextcloud app, design team discussion and more.

Food in progress

Lunch in progress

Thank you for participating!

We welcomed 150 attendees in the 7 days the conference lasted and during the weekend we had well over 200 unique live stream viewers on the streaming page alone, with many more following our live stream on Facebook and Twitter. We’re glad to see so much interest in Nextcloud and such strong growth from last year! The many kind words by attendees on the quality of the talks, the friendly community and our solid progress in development were no less well received.

We want to thank you all, dear viewers, listeners, attendees, contributors – including everybody who couldn’t make it this year – for your participation!

Next year, the Nextcloud Conference will take place from Thursday August 23 to Thursday August 30, with again a program with talks in the weekend. We hope to see you again! Until then you can join us at our regular hackweeks in Stuttgart or at one of the other dozens of events we attend.

read more



Julius Härtl
GSoC – Final report
August 28, 2017

The Google Summer of Code is almost over and I want to give you a quick update on what has been done in the last months.

You can have a look on how the integration of the Nextcloud client looks like in Nautilus in the following video. As GNOME will drop the support for status icons on the near future this will be the way for sync clients to give the user a way to access their functionally in the context of the synced folder.

On the Nextcloud side I have implemented a proof of concept API for account registration right from within the client. That way even new users who don’t have a clue about how Nextcloud is working can easily pick a provider to host their data and setup an account there. They don’t need to care about entering a server url.

I’m currently still at the Nextcloud Conference in Berlin, where some discussion on how the client patches will be used is still going on.

Although I had planned some more features to be implemented on the Nextcloud client, the library for cloud providers and especially getting a good understanding of DBus and gdbus required more time than I initially thought. But we now have a solid basis to offer a desktop independent API that can easily integrated by both, desktop environments and cloud providers clients.

I really enjoyed working together with two great open source projects that are both backed by an awesome community with a lot of really great people. I also want to thank Carlos Soriano, my GNOME mentor as well as Roeland Douma, my Nextcloud mentor for guiding me through the project.

If you are interested in the code that has been produced, you can find it here:

read more



Nextcloud
Saturday and Sunday: lightning talks and workshops at the Nextcloud Conference
August 25, 2017

The Nextcloud conference will feature its usual schedule of talks, workshops, and intensive coding sessions. But on the weekend, we have planned two keynotes featuring Tristan Nitot and Martin Dougiamas, and a lot of lightning talks from our community! Come share knowledge and discover what your fellow Nextclouders are up to! You will have plenty of time to discuss those topics during the weekend, and you can even come back on Monday and Tuesday!

 

Saturday Program

TimeSubjectSpeakers
09:00-10:30Welcome with coffee/tea
10:30-11h15KeynoteTristan Nitot
11:30-13:00* Android App: The journey of the 1st year in the wild – Andy Scherzinger

* Android App, current state and outlook – Tobias Kaminsky

* Introducing the Tirana Nextcloud community – Silva Arapi

* What is new in the desktop client – Roeland Douma

* Client-side Encryption with Cryptomator – Tobias Hagemann

* Push Notifications in Nextcloud – Joas Schilling

* Introducing On My Disk Connector: easy way to connect your external drive to Nextcloud – Alexey Volkov

* p≡p ≡ pretty Easy privacy – Privacy by Default – sva

* Making communication easier: The Nextcloud Chat – Klaus Herberth

* RGSoC experience with Nextcloud Project – Jona Azizaj and Xheni Myrtaj

* VNCsafe Zimlet – Nextcloud & Zimbra Integration – Oscar Arias Ferrera

* 😃😶🙃🤓 Fostering a diverse & welcoming community – Jan-Christoph Borchardt

Nextcloud Community
13:00Lunch time!
14:00-15:00Introducing On My Disk Connector: easy way to connect your external drive to NextcloudAlexey Volkov
14:30-15:30What is new in the Desktop client?Roeland Douma
15:30-16:30Client-side Encryption with CryptomatorTobias Hagemann
16:00-17:00So you want to contribute? Building a user-centric UX by exampleMario Danic
16:30-17:30Translate Nexcloud to German!

 

Sunday Program

TimeSubjectSpeakers
09:00-10:30Welcome with coffee/tea
10:30-11h15KeynoteMartin Dougiamas
11:30-13:00* Welcome to TU Berlin – we’re now Nextclouders – Thomas Hildmann

* Video Calls in Nextcloud – Ivan Sein & Joas Schilling

* Streamlining the Nextcloud Docker Experience – Paul Adams

* DAVdroid / Nextcloud Integration – Bernhard Stockmann & Ricki Hirner

* Audio Player: our lessons learned and outlook – Marcel Scherello

* iOS announcements – Nina Cercy

* 🎨 Join the Nextcloud design team! – Jan-Christoph Borchardt

* Free Software Licensing in a Nutshell – What every developer should know – Björn Schießle

* How many lines of code do you need to build your first Nextcloud App? – Camila San Martin Ayres

* State of the Deck app – Julian Härtl

* How to jump start a local floss community – Redon Skikuli

* Get your family and friends to use Nextcloud – Nina Cercy

* My summer with GNOME and Nextcloud – Julius Härtl

* Nextcloud in the public administration & the importance of the community in the process – Redon Skikuli

*  Real-time Secure Collaboration with Collabora, what’s next? – Michael Meeks

* instabeameSSL – instabeame team

* NextCloudPi, easy self-hosting for everyone – Ignacio Núñez Hernanz

Nextcloud Community
13:00Lunch time!
14:00-15:00How many lines of code do you need to build your first Nextcloud app?Camila San Martin Ayres
14:30-15:30Nextcloud Docker Image EnrichmentPaul Adams
15:30-16:30🎨 Nextcloud design team discussionJan-Christoph Borchardt
16:30-17:30Translate Nexcloud to German!

You can register now for the conference!

If you can’t make it, we will live stream the talks from the conference. Find our live stream here.

read more



Nextcloud
Nextcloud iOS app Free for Download on App Store
August 25, 2017

The conference has started with our hackweek and slowly the rooms are filling up. Today, we have a still growing audience for our Friday program, where we have already well over 100 attendees to listen to a series of talks about Nextcloud in the enterprise like migrations from ownCloud, security, super scalability and more. There will be some announcements but today we already have some good news for you! Going forward, our iOS client will be a fully free download in the app store! As a company, we focus on enterprise users so monetizing home users makes little sense for us from a strategic point of view and we’d rather lower the barrier to using Nextcloud!

Nextcloud aims to empower community to take back control over their data, not monetize them. Making the iOS app free, like the Android and desktop apps, fits in our strategy to focus on providing excellent enterprise support.

— Frank Karlitschek, managing director at Nextcloud GmbH.

As a company, Nextcloud relies on support contracts the main driver for our profitability, while we pursue a fully-open-source strategy. You might remember that at the end of 2016 we open sourced the IOS app, putting the full code under the GPL license with an App Store exception in github. We made a lot of progress on the iOS client, which has great user ratings and by removing the price tag we hope to get our client to even more users. We also welcome contributions to the code base, you can have a look in github and sent patches!

The Nextcloud iOS client has progressed tremendously in the last year. Removing the price tag means even more people have access to our private cloud solution!

Marino Faggiana, iOS engineer at Nextcloud.

See our formal press announcement here or just grab the client from the app store right now! Fun fact: we already put the price on zero yesterday and got a nice 600% increase in downloads, with over 8000 new people getting our client!

If you plan to be at the Nextcloud Conference, be sure to check out our conference page for the program and practical information. We will live-stream the event on this page. See you in Berlin or online!

read more