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:
Good Morning from Malmö!
Oliver Hader is introducing us to the day.
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”
Jo Hasenau will talk about “How to make a living as a dedicated TYPO3 extension developer” and about the initiative “Coders Care”
Timo Hund will explain how to keep your extensions up to date with the current TYPO3 core version, covering tools and strategies.
“How to expand your Social Media reach” — This is the topic of Karen Falkenberg. She will show us, how to optimize a tweet.
Oliver Dobberkau and the members of the TYPO3 Association Board are entering the stage!
Here are the faces:
Each member has now the time to say two sentences about his / her engagement within the board
I chose the session about “Agile Programming Pratices” by Stefan Rotsch.
Stefan is introducing himself, his (business) life and the engangement in the community
Stefan shows us the aspects of “Extreme Programming” as an agile practices.
We will focus on pair programming and code reviews.
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
Potential Cost: only +15%, not doubled cost
Expected Benefits: +15%, less defects etc.
Thus you are “on path”
Pattern: Driver and Navigator
There are different rules while pair programming
Another pattern: Ping / Pong
– 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
Checking email, while the other is programming, is not part of “pair programming”.
Remote pair programming is also possible, but has some higher infrastructure requirements.
– High-Res screensharing
– audio call via Skype, Hangout, …
Tool for the ping-pong-pattern: Screenhero
“Quote of the day”
The second part of the talk is now about doing code reviews.
Why code reviews?
When code reviews?
Code Reviews: How
* Agree on, what kind of commits should be reviewed, review cirteria
* Do smaller commits
* Outline objectives
* Use comment tiers: “should”, “could” “must” => last === defect
* Faster is not better
– 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
Quote of the day … number two:
Agile Programming Practices & Opensource
* Code Reviews => gerrit, pull requests
* Pair programming => code sprints
* External tools => Github and TravisCI
Everyone can do this! Not only for big companies and teams.
Now Stefan is presenting some numbers and conlusion out of them.
Wrap – Up
* Agree on guidelines and standards
* Keep commits and review small
* Keep calm, shit happens
Now following a Q&A part
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.
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.
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.
Q: How big are your teams?
A: Usually eight developers. 2 Frontend, 2 Backend, 2 Testers and PO and SM on top of it.
So the session is at its end … read you in a couple of minutes.
Nerding while the breaks 🙂
The next talk, I’m watching is held by Timo Hund about “How to keep update extensions with the TYPO3 core”
Timo introduces himself and the team behind the TYPO3 Solr extension.
EXT:solr development started back in 2009 and was sponsored by dkd and partners. Last year (2016) there where about 90 sponsors!
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
Having all components play together is challenging, as also Apache SolR is moving and updated
What they did:
– Test all combination on each commit.
– Test before merging the commit to EXT:solr
– Test continiuosly with TYPO3 master
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
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.
Timo now covers the basics of travis ci configuration.
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.
Introduction to scrutinizer configuration
Travis ci and scrutinizer is a good combination for own tests. Also support is good if you have issues.
Look also at the EXT:news as there is the testing also properly configured.
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:
Now we are on the road to testing paradise 🙂
The ideal world is here:
Integration test where the first step to cover the “old” code. Make sure the extension behave like before.
Unit tests where added while refactoring.
The integration and unit tests are run by Travis via the script “cibuild.sh”.
It is availble in the code of EXT:solr .
Unit test take 10 seconds for over 400 tests.
Integration tests take about 14 minutes 195 tests.
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.
“Roadmap as a picture” Service
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.
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.
Welcome to the lightning talks for this afternoon!
Oli Klee enters the stage with the topic “Creating diversity and awareness in the TYPO3 community”.
“Five minutes of fame” – It is a Video Podcast recording session.
This session is canceled due to missing participants
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.
Peter Förger will be talking about “discuss. plan. code. review. test.” and introduce the tool “phabricator”.
We all are friends of productivity. Helmut Hummel will show us, how we can boost it using TYPO3console: “Automate everything in your development life”.
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.
Peter Niederlag will show the deployment tool “deployer” to the attendents and to discuss concepts.
Richard Haeser will introduce us to the new SEO Extension “yoast”, showing some backgrounds and how to integrate it into TYPO3.
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.
I will attend the session about private packagist starting at 03:15 p.m. So stay tuned 🙂
Now up on stage: Nils Adermann about Private Packagist and related topcis.
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
Packagist.org was launched in September 2011. First 1.000 packages were hosted in April 2012!
Toran proxy was launched as a service to sustain the development of composer and packagist, followed by private packagist in December 2016.
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
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.
Private Packagist is an alternative to Satis.
Nils shows us now a short live demo of private packagist …
There are cool feature set with private packagist
– show usages of a package
– manage teams and authentcation
– mirroring third party software / packages
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
Private Packagist reduces also the building time for your project. Sometimes it is down from 14 to three minutes.
We need to reduce risks. Risks is for example availability. You are hit, if a open source package vanished from public.
packagist.org does not host any code!!
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.
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
A risk, which must be taken into account too, is compatibility.
– using semantic versioning
– using tests and static analysis
– using manuals and changelogs
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.
You need a plan B, you are hit by one of these risks. Private packagist may help you to solve this problem.
There is the discount code “t3dd17” on packagist.com for 10% off in the first year.
Next talk is by Helmut Hummel about increasing your productivity. The TYPO3console is a cli tool for TYPO3
It is build for humans and robots. It is extendable. It comes as a composer package.
(hmmm he ist fast … hard to follow and take notes)
Helmut is describing the normal development workflow, without a deployment and without TYPO3 console
Now we are learning “how to do it right” 😉 [not Helmuts words, tough]
You should really use a deployment tool to ease and make your releases more reliable.
Now a live example how to set up a TYPO3 project with composer and typo3console.
A new feature is to run a webserver from the typo3console:
Tipps and tricks for composer and typo3console are covered now
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
typo3console comes with autocompletion for bash and zsh
Building blocks for automated workflow
=> execute additional code
=> optimized class loading
* tracks active extensions
* bad for automated processes
=> PackagesStates.php should not be committed, but generated on every deployment
Each extension in composer.json should be activated also. Why ship code, you don’t use?
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
Generating the packagestates file can be triggered in composer.json in the script section. It will be called in each composer [update|install]
New feature: fixfolderstructure
* Start with a empty typo3temp after each deployment
does the same as hitting the button in extension manager. Executing it one or more times will always leads to the same result
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.
Database update: typo3cms database:updateschema
You need only the database; it may be also an empty database
You can do the last two steps together with
It is possible to create own commands, as a composer package or an extension. Necessary elements
* configuration file
* command controller
You can upgrade a complete TYPO3 project from TYPO3 V7 to TYPO3 V8 with just one command.
If you need custom upgrade, you can write your own upgrade wizards and register them. They will be executed by this command too.
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
Now we are heading to the Q&A section.
Here we go for the last session for today: Know your friends and take the right fights” with Jeffrey McGuire and Matthias Schreiber
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
Until 2017 it is the golden era of open source.
The proprietary software industry was caught by surprise and was knocked out.
There are many things, that are cool in OSS … esp. in technical stuff and community building
It’s hard to build viable businesses, dealing with lawyers, trademarks, connecting OSS to non-OSS,
We were very, very good in fighting each others.
But there are real threats regarding OSS:
The proprietary systems are striking back … they build incredible stuff, while we were fighting. Example: Adobe
Proprietary vendors play clever:
Public sector in germany requires an vendor SLA, if using a software
Every commercial CMS has it, they market it, clients want it …
This is where TYPO3 GmbH jumps in 🙂
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
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
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.
The competition between OS systems is like “Doctors without borders” and “Red cross”
We are now in the Q&A part.
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.
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.
So I am closing for today. I will start reporting tomorrow morning again.
Hope you enjoyed this day.