This is a live blog from the TYPO3 Developer Days in Malmö (Sweden). This is the page for friday, Juli 14th 2017.

If you like the live blog, please do not hesitate to share the URL. Thank you! At the end of the page there are some social media links, you can use to share.

I hope you enjoy reading. If you have feedback, just let me know.

Here are the links to the other days:

Marcus Schwemer July 14, 20179:39 AM

Good Morning from Malmö!

Oliver Hader is introducing us to the day.

Marcus Schwemer July 14, 20179:41 AM

The lightning talks start with Stefan Rotsch about “Agile Programming Pratices”.

The next topic is “Pipeline as Code”. Peter Förger will introduce “Jenkins Pipeline”

Marcus Schwemer July 14, 20179:44 AM

Jo Hasenau will talk about “How to make a living as a dedicated TYPO3 extension developer” and about the initiative “Coders Care”

Marcus Schwemer July 14, 20179:50 AM

Timo Hund will explain how to keep your extensions up to date with the current TYPO3 core version, covering tools and strategies.

Marcus Schwemer July 14, 20179:53 AM

“How to expand your Social Media reach” — This is the topic of Karen Falkenberg. She will show us, how to optimize a tweet.

Marcus Schwemer July 14, 20179:54 AM

Oliver Dobberkau and the members of the TYPO3 Association Board are entering the stage!

Marcus Schwemer July 14, 20179:55 AM

Here are the faces:

Marcus Schwemer July 14, 20179:58 AM

Each member has now the time to say two sentences about his / her engagement within the board

Marcus Schwemer July 14, 201710:17 AM

I chose the session about “Agile Programming Pratices” by Stefan Rotsch.

Marcus Schwemer July 14, 201710:18 AM

Stefan is introducing himself, his (business) life and the engangement in the community

Marcus Schwemer July 14, 201710:21 AM

Stefan shows us the aspects of “Extreme Programming” as an agile practices.

Marcus Schwemer July 14, 201710:21 AM

We will focus on pair programming and code reviews.

Marcus Schwemer July 14, 201710:23 AM

Why “Pair Programming”?

– Increased code quality
– Easier team-building and communication
– constant knowledge transfer; better transfer of skills
– Improved resiliency of a pair to interruption

Marcus Schwemer July 14, 201710:26 AM

Potential Cost: only +15%, not doubled cost
Expected Benefits: +15%, less defects etc.

Thus you are “on path”

Marcus Schwemer July 14, 201710:28 AM

Pattern: Driver and Navigator

There are different rules while pair programming

Marcus Schwemer July 14, 201710:28 AM

Another pattern: Ping / Pong

Marcus Schwemer July 14, 201710:30 AM

Best practices
– Switch roles frequently (use a timer), several times a day
– avoid the “watch the master” phenomenon
– Be actively engaged
– Keep talking
– Create a pairing friendly environment

Marcus Schwemer July 14, 201710:31 AM

Checking email, while the other is programming, is not part of “pair programming”.

Marcus Schwemer July 14, 201710:33 AM

Remote pair programming is also possible, but has some higher infrastructure requirements.

– High-Res screensharing
– audio call via Skype, Hangout, …

Marcus Schwemer July 14, 201710:34 AM

Tool for the ping-pong-pattern: Screenhero

Marcus Schwemer July 14, 201710:36 AM

“Quote of the day”

Marcus Schwemer July 14, 201710:36 AM

The second part of the talk is now about doing code reviews.

Marcus Schwemer July 14, 201710:37 AM

Why code reviews?

When code reviews?

* Pre-Commit
* Post-Commit

Marcus Schwemer July 14, 201710:42 AM

Code Reviews: How

* Agree on, what kind of commits should be reviewed, review cirteria
*

Marcus Schwemer July 14, 201710:44 AM

* Do smaller commits
* Outline objectives
* Use comment tiers: “should”, “could” “must” => last === defect
* Faster is not better

Marcus Schwemer July 14, 201710:47 AM

Dont’s

– Don’t take it personal, reviews are highly subjective
– Don’t push reviews; only address this in daily standups
– Don’t use metrics to single out developers
– Don’t try to push your logic instead of the developer one

Marcus Schwemer July 14, 201710:48 AM

Quote of the day … number two:

Marcus Schwemer July 14, 201710:50 AM

Agile Programming Practices & Opensource

* Code Reviews => gerrit, pull requests
* Pair programming => code sprints
* External tools => Github and TravisCI

Marcus Schwemer July 14, 201710:51 AM

Everyone can do this! Not only for big companies and teams.

Marcus Schwemer July 14, 201710:53 AM

Now Stefan is presenting some numbers and conlusion out of them.

Marcus Schwemer July 14, 201710:55 AM

Wrap – Up
* Agree on guidelines and standards
* Keep commits and review small
* Keep calm, shit happens

Marcus Schwemer July 14, 201710:56 AM

Now following a Q&A part

Marcus Schwemer July 14, 201710:59 AM

Q: Is the pair programming really only 15% overhead in reality?

A: No, the overhead is about 30 – 50 percent. But only some teams do it and we are just starting. The 15% are from a study.

Marcus Schwemer July 14, 201711:01 AM

Q: Do you do code reviews in hotfixes?

A: The more critical the fix, the more attention does a commit gets. Such a fix has a pair, a tester and a reviewer.

Marcus Schwemer July 14, 201711:03 AM

Q: When do you do pair programming?

A: Especially when introducing new technology and whenever a developer wants to do it, he can approach a colleague.

Marcus Schwemer July 14, 201711:04 AM

Q: How big are your teams?

A: Usually eight developers. 2 Frontend, 2 Backend, 2 Testers and PO and SM on top of it.

Marcus Schwemer July 14, 201711:04 AM

So the session is at its end … read you in a couple of minutes.

Marcus Schwemer July 14, 201711:42 AM

Nerding while the breaks 🙂

Marcus Schwemer July 14, 201711:44 AM

The next talk, I’m watching is held by Timo Hund about “How to keep update extensions with the TYPO3 core”

Marcus Schwemer July 14, 201711:47 AM

Timo introduces himself and the team behind the TYPO3 Solr extension.

Marcus Schwemer July 14, 201711:48 AM

EXT:solr development started back in 2009 and was sponsored by dkd and partners. Last year (2016) there where about 90 sponsors!

Marcus Schwemer July 14, 201711:51 AM

The challenge was to have EXT:solr ready for TYPO3 V8 two days after the LTS version was released. The compatibility should be kept for 7.6 and the add-on should be released too

Marcus Schwemer July 14, 201711:52 AM

Having all components play together is challenging, as also Apache SolR is moving and updated

Marcus Schwemer July 14, 201711:53 AM

What they did:

– Test all combination on each commit.
– Test before merging the commit to EXT:solr
– Test continiuosly with TYPO3 master

Marcus Schwemer July 14, 201711:55 AM

They use the fork model to create changes and external tools like travis and scrutinizer.

Travis: testing several software versions
Scrutinizer does static code analysis

Marcus Schwemer July 14, 201711:57 AM

The full integration of travis ci into github allows to run the pre merge tests. The (failed) pre merge tests, which are triggered by a pull request, stay invisible until they are green.

Marcus Schwemer July 14, 201711:59 AM

Timo now covers the basics of travis ci configuration.

Marcus Schwemer July 14, 201712:03 PM

Scrutinizer ci helps to measure code quality and uses a simple indicator to reflect the quality.

Based on this it can find bugs and proposes improvements.

Marcus Schwemer July 14, 201712:05 PM

Introduction to scrutinizer configuration

Marcus Schwemer July 14, 201712:06 PM

Travis ci and scrutinizer is a good combination for own tests. Also support is good if you have issues.

Marcus Schwemer July 14, 201712:07 PM

Look also at the EXT:news as there is the testing also properly configured.

Marcus Schwemer July 14, 201712:09 PM

If you want to test extensions, which should be compatible with TYPO3 V7 and TYPO3 V8, you can use the testing-framework of Nicole Cordes and Helmut Hummel:
https://github.com/Nimut/testing-framework

Marcus Schwemer July 14, 201712:09 PM

Now we are on the road to testing paradise 🙂

Marcus Schwemer July 14, 201712:11 PM

The ideal world is here:

Marcus Schwemer July 14, 201712:13 PM

Integration test where the first step to cover the “old” code. Make sure the extension behave like before.

Unit tests where added while refactoring.

Marcus Schwemer July 14, 201712:15 PM

The integration and unit tests are run by Travis via the script “cibuild.sh”.

It is availble in the code of EXT:solr .

Marcus Schwemer July 14, 201712:16 PM

Unit test take 10 seconds for over 400 tests.
Integration tests take about 14 minutes 195 tests.

Marcus Schwemer July 14, 201712:22 PM

Future of EXT:solr

Release of V 7.0.0 on the end of July incl. SolR Fluid templates in the the core of the extension.

Marcus Schwemer July 14, 201712:24 PM

“Roadmap as a picture” Service

Marcus Schwemer July 14, 201712:26 PM

Timi is now showing a PoC of the integration of EXT:solr / solrfal / nreach.

Nreach is a AI solution for detecting common stuff in pictures and media.

Marcus Schwemer July 14, 201712:30 PM

Now it is lunch time 🙂

I’ll be online again afterwards and start with the lightning talks for the afternoon at 02:15 p.m.

Marcus Schwemer July 14, 20172:17 PM

Welcome to the lightning talks for this afternoon!

Marcus Schwemer July 14, 20172:18 PM

Oli Klee enters the stage with the topic “Creating diversity and awareness in the TYPO3 community”.

Marcus Schwemer July 14, 20172:20 PM

“Five minutes of fame” – It is a Video Podcast recording session.

This session is canceled due to missing participants

Marcus Schwemer July 14, 20172:22 PM

Nils Adermann will present “Private packagist and how composer works with repositories”. Also he will talk about risks, which you face using third party code.

Marcus Schwemer July 14, 20172:25 PM

The talk “Supercharge JavaScript development inside TYPO3” is held by Johannes Goslar. It’ an overview about the different new technologies which arise in the last years.

Marcus Schwemer July 14, 20172:25 PM

Peter Förger will be talking about “discuss. plan. code. review. test.” and introduce the tool “phabricator”.

Marcus Schwemer July 14, 20172:28 PM

We all are friends of productivity. Helmut Hummel will show us, how we can boost it using TYPO3console: “Automate everything in your development life”.

Marcus Schwemer July 14, 20172:30 PM

Matthias Schreiber and Jeffrey A. McGuire will talk about “Know your friends pick the right fights”. They will show us, which developments are hitting open source software right now.

Marcus Schwemer July 14, 20172:31 PM

Peter Niederlag will show the deployment tool “deployer” to the attendents and to discuss concepts.

Marcus Schwemer July 14, 20172:33 PM

Richard Haeser will introduce us to the new SEO Extension “yoast”, showing some backgrounds and how to integrate it into TYPO3.

Marcus Schwemer July 14, 20172:38 PM

The coding night will start 09:00 p.m. this evening. Core team and mentors will be on place to help (new) contributors to get things done.

And don’t forget about the t3icecreamchallenge. If you eat eight (8!) cups of icecream, the hotel will have an present for you.

Marcus Schwemer July 14, 20172:40 PM

I will attend the session about private packagist starting at 03:15 p.m. So stay tuned 🙂

Marcus Schwemer July 14, 20173:21 PM

Now up on stage: Nils Adermann about Private Packagist and related topcis.

Marcus Schwemer July 14, 20173:24 PM

The history of composer is impressing: From the first commit in April 2011 to hosting 147.000 packages with 907.000 versions in July 2017

Marcus Schwemer July 14, 20173:25 PM

Packagist.org was launched in September 2011. First 1.000 packages were hosted in April 2012!

Marcus Schwemer July 14, 20173:28 PM

Toran proxy was launched as a service to sustain the development of composer and packagist, followed by private packagist in December 2016.

Marcus Schwemer July 14, 20173:31 PM

What does composer sdo?

– load all package metadata
– resolve dependencies to create a transaction
– create a lock file
– download and install mentioned packages in composer.lock

Marcus Schwemer July 14, 20173:33 PM

Satis is a static file generator, which is there to host packages privately. But lacks really needed features to work with it productively.

Needs decent cost / time to setup to maintain.

Marcus Schwemer July 14, 20173:35 PM

Private Packagist is an alternative to Satis.

Marcus Schwemer July 14, 20173:35 PM

Nils shows us now a short live demo of private packagist …

Marcus Schwemer July 14, 20173:42 PM

There are cool feature set with private packagist

– show usages of a package
– manage teams and authentcation
– mirroring third party software / packages

Marcus Schwemer July 14, 20173:44 PM

Next to packagist.org, Satis and private packagist it is also possible to provide “repos” as zip files, directories in your project.

… making the downloading all metadata more difficult

Marcus Schwemer July 14, 20173:47 PM

Private Packagist reduces also the building time for your project. Sometimes it is down from 14 to three minutes.

Marcus Schwemer July 14, 20173:49 PM

We need to reduce risks. Risks is for example availability. You are hit, if a open source package vanished from public.

Marcus Schwemer July 14, 20173:49 PM

packagist.org does not host any code!!

Marcus Schwemer July 14, 20173:52 PM

If a used repository is removed from github, you are not able to download it again. Private packagist keeps a mirror of all the used packages.

Marcus Schwemer July 14, 20173:54 PM

Another risk is about dependencies on soft criteria

– number of maintainers
– active development
– number of users
– where is the lib hosted?
– possibility to replace it with alternatives

Marcus Schwemer July 14, 20173:56 PM

A risk, which must be taken into account too, is compatibility.

Reduce it
– using semantic versioning
– using tests and static analysis
– using manuals and changelogs

Marcus Schwemer July 14, 20173:59 PM

Legal and licensing issues may also threat your project. You need to follow all licences used and react to license changes. PP has a feature to do license reviews.

Marcus Schwemer July 14, 20174:00 PM

You need a plan B, you are hit by one of these risks. Private packagist may help you to solve this problem.

Marcus Schwemer July 14, 20174:02 PM

There is the discount code “t3dd17” on packagist.com for 10% off in the first year.

Marcus Schwemer July 14, 20174:16 PM

Next talk is by Helmut Hummel about increasing your productivity. The TYPO3console is a cli tool for TYPO3

Marcus Schwemer July 14, 20174:17 PM

It is build for humans and robots. It is extendable. It comes as a composer package.

Marcus Schwemer July 14, 20174:18 PM

Marcus Schwemer July 14, 20174:22 PM

(hmmm he ist fast … hard to follow and take notes)

Marcus Schwemer July 14, 20174:23 PM

Helmut is describing the normal development workflow, without a deployment and without TYPO3 console

Marcus Schwemer July 14, 20174:23 PM

Now we are learning “how to do it right” 😉 [not Helmuts words, tough]

Marcus Schwemer July 14, 20174:25 PM

You should really use a deployment tool to ease and make your releases more reliable.

Marcus Schwemer July 14, 20174:26 PM

Now a live example how to set up a TYPO3 project with composer and typo3console.

Marcus Schwemer July 14, 20174:27 PM

A new feature is to run a webserver from the typo3console:

/vendor/bin/typo3cms server:run

Marcus Schwemer July 14, 20174:30 PM

Tipps and tricks for composer and typo3console are covered now

Marcus Schwemer July 14, 20174:32 PM

You should make composer binaries available in your PATH

But make sure, that it is last in your path, because composer packages could deliver malicious packages like “ls”, which are used frequently

Marcus Schwemer July 14, 20174:33 PM

typo3console comes with autocompletion for bash and zsh

Marcus Schwemer July 14, 20174:36 PM

Building blocks for automated workflow

composer
=> packaging
=> execute additional code
=> optimized class loading

Marcus Schwemer July 14, 20174:38 PM

PackageStates.php

* tracks active extensions
* bad for automated processes

=> PackagesStates.php should not be committed, but generated on every deployment

Marcus Schwemer July 14, 20174:39 PM

Each extension in composer.json should be activated also. Why ship code, you don’t use?

Marcus Schwemer July 14, 20174:41 PM

Problem: Many system extension are delivered by default, but you do not want to use every of them.

Solution: Define them in your composer.json too. Only those will be activated too

Marcus Schwemer July 14, 20174:42 PM

Generating the packagestates file can be triggered in composer.json in the script section. It will be called in each composer [update|install]

Marcus Schwemer July 14, 20174:43 PM

New feature: fixfolderstructure

* Start with a empty typo3temp after each deployment

Marcus Schwemer July 14, 20174:46 PM

typo3cms install:setupactive

does the same as hitting the button in extension manager. Executing it one or more times will always leads to the same result

Marcus Schwemer July 14, 20174:48 PM

Feature: Install a complete typo3 setup

typo3cms setup:install will do an unattended setup of an installation, like with the 1-2-3-4-5 setup wizard by the command line.

Marcus Schwemer July 14, 20174:49 PM

Database update: typo3cms database:updateschema

You need only the database; it may be also an empty database

Marcus Schwemer July 14, 20174:51 PM

You can do the last two steps together with

typo3cms install:setupextensionifactive

Marcus Schwemer July 14, 20174:54 PM

It is possible to create own commands, as a composer package or an extension. Necessary elements
* configuration file
* command controller

Marcus Schwemer July 14, 20174:56 PM

You can upgrade a complete TYPO3 project from TYPO3 V7 to TYPO3 V8 with just one command.

typo3cms upgrade:all

Marcus Schwemer July 14, 20174:57 PM

If you need custom upgrade, you can write your own upgrade wizards and register them. They will be executed by this command too.

Marcus Schwemer July 14, 20175:00 PM

One more thing ^^

* multi environment support for dev, staging, production
* configuration depending on context
* yaml or php for configuration
* extension configuration as plain arrays; not serialized in LocalConfiguration any more

Marcus Schwemer July 14, 20175:02 PM

Now we are heading to the Q&A section.

Marcus Schwemer July 14, 20175:48 PM

Here we go for the last session for today: Know your friends and take the right fights” with Jeffrey McGuire and Matthias Schreiber

Marcus Schwemer July 14, 20175:51 PM

Matthias gives a short overview over the history of the open source industry and lines out that fight against open source in the beginning of the early 2000 years

Marcus Schwemer July 14, 20175:52 PM

Until 2017 it is the golden era of open source.

Marcus Schwemer July 14, 20175:53 PM

The proprietary software industry was caught by surprise and was knocked out.

Marcus Schwemer July 14, 20175:54 PM

There are many things, that are cool in OSS … esp. in technical stuff and community building

Marcus Schwemer July 14, 20175:57 PM

It’s hard to build viable businesses, dealing with lawyers, trademarks, connecting OSS to non-OSS,

Marcus Schwemer July 14, 20175:58 PM

We were very, very good in fighting each others.

But there are real threats regarding OSS:

Marcus Schwemer July 14, 20176:00 PM

The proprietary systems are striking back … they build incredible stuff, while we were fighting. Example: Adobe

Marcus Schwemer July 14, 20176:03 PM

Proprietary vendors play clever:

Public sector in germany requires an vendor SLA, if using a software

Marcus Schwemer July 14, 20176:04 PM

Every commercial CMS has it, they market it, clients want it …
This is where TYPO3 GmbH jumps in 🙂

Marcus Schwemer July 14, 20176:08 PM

Example of canada.gov

* RFP required proprietary system for 90 gov system
* Adobe won
* Project delayed, only 10 sites included at 4.5 times of the price

Marcus Schwemer July 14, 20176:11 PM

Example: Joomla association germany

* non-profit, need to work for greater good
* tax authority lawsuit about the tax-status and encouraged to write a book instead of organizing events

Marcus Schwemer July 14, 20176:14 PM

Why work together?

* “Market ain’t big enough” => 1 billion euros a year
* How much of this is covered by open source?

It’s not about market share, it’s about quality.

Example: Lamborghini

Marcus Schwemer July 14, 20176:17 PM

The competition between OS systems is like “Doctors without borders” and “Red cross”

Marcus Schwemer July 14, 20176:18 PM

Technical cooperation

* namespaces

* composer

* PSR

Marcus Schwemer July 14, 20176:25 PM

We are now in the Q&A part.

Marcus Schwemer July 14, 20176:27 PM

Q: How do lobbying for OSS?

A: In germany we have cmsgarden, who have a seat in bitcom, Also Matthias is constantly working with them.

Marcus Schwemer July 14, 20176:30 PM

Q: What can an agency do locally?

A: Go to the T3A get the mandate to connect joomla, drupal, and so on to do lobbying.

Marcus Schwemer July 14, 20176:31 PM

So I am closing for today. I will start reporting tomorrow morning again.

Hope you enjoyed this day.