Skip to content

Andrew S. Tanenbaum talking about Minix 3 at froscon 2015

Lucky enough, I was able to fetch a somehow seat in the presentation about minix - version 3 done by mister Andrew S. Tanenbaum.
As usual, he presented the way minix had gone, how he did things, what goals they want to reach and what the current status is (including upcomming features). And also, as usual, he did this by adding so much fun and joy into the talk which is, every time, pretty amazing. I had the chance to see multiple talks done by mister Tanenbaum and finally that is the whole intension I want to recommend any talk everywhere nearby you. If you have the chance, take the chance and simple listen and enjoy the time.

Translate to de es fr it pt ja

froscon 10 (2015) - der Termin steht

Der Termin für die 10 froscon steht, es ist der "22. + 23. August 2015".
Und jetzt der Knüller, die Froscon ist für lau, kostenfrei, costa quanta nada. Man möchte es gar nicht zu deutlich schreiben, wenn man sich den Wachstum der letzten Jahre bedenkt, aber wow - ihr seid verrückt, liebe frosconer :-). Nun könnt ihr euch nur noch einmal steigern, indem ihr die Anreise für Lau anbietet ;-).
Das Programm gibt es hier.
Ich kenne schon jetzt fünf Personen, die sich auf den August freuen.

Translate to de es fr it pt ja

froscon - humanitarian opensource software

Wolfgang Schlegel

"Let's make the world a better place"

what is humanitarian software?

  • "humanitarian" -> concerned with or seeking to promote human welfare
  • "i want to use my skills and expertise to improve human welfare"


  • family tracing and reunification
  • helps children who are separated from their caregivers in emergency situations
  • mobile phone application (client) and data storage system (server)
  • started by students
  • used in uganda 2012, south sudan 2013, philippines after typhoon yolanda


  • ruby on rails server software
  • couchdb
  • frontends
    • android
    • netbook
  • gnu affero gpl 3

how can you help?


  • open plattform for financial inclusion
  • loan products and loan accounts
  • savings products and saving accounts
  • backoffice
  • surveys and progress out of poverty tracking (how big is the impact to the country or does it even have a bad impact)
  • initiated by grameen foundation
  • non profit organiztion based in washington dc
  • replicates the grameen bank microfinance model around the world
  • launched mifos in 2006 by the foundation by the foundation
  • returned mifos back to the community in 2011
  • heavily used in africa and asia
  • online demo
  • well documented restful endpoints)


  • java 7
  • jax-rs, jersry (restful endpoint)
  • JSON, google GSON
  • spring
  • hibernate
  • mysql
  • mozilla public licence 2.0

how can you help?

  • write code
  • ui/ux enhancements
  • write documentation
  • mainpage


  • medical record system
  • replaces paper based records
  • improves health care delivery
  • regenstrief institue, and informatics and healthcare research organization
  • parners in health, an organization providing healthcare for the poor
  • created in 2004 as a platfotm for developing countries
  • used in north and south america as well as europe, africa, asia and india
  • not certificated in europe as official medical record system


  • java
  • spring
  • hibernate
  • mysql
  • tomcat
  • openmrs public license, based on mizulla public license

how can you help?

  • introductory tickets (small easy bugs/features)
  • community tickets (story of a feature)
  • projects (big module)
  • mainpage

getting involved

  • pair on a ticket (alone and simple tryout)
  • code jams (with friends)
    • people
    • things to work on
    • keep it small (things should be doable at that jam)
    • prepare tickets / stories
    • location
    • keep going
  • conferences (to talk about it or join a code jam)
  • meetups (same as conference but local/regular based)
  • summers of code (big conference ;-))
  • universities (show students how to code in real world)
Translate to de es fr it pt ja

froscon 2014 - not being an asshole is not enough

Ellen König at redfrog conf

for the community?

  • do not block new possible members
  • ideas comes from our background
  • people with different background would have different ideas

for the affected individuals

  • only the ones working with (open source) software can have impact on the way this software will grow
  • those people with better starting conditions have better opportunities

mental schemas equals duck typing

  • common ground differs if you thing about "woman" and "programmers"
  • if "she" does not fit into the category of a programmer, she would not be recognized as a programmer

how does dis impact the daily routine

  • implicit bias
  • stereotype threat
  • ingroup bias
  • accumulating disadvantage

now, what can we do?

  • not doing dramatic shifts
  • more of beeing aware
  • doing small stuff
  • thinking of your values in challenging situations
  • insist on a fair distribution of stereotypical tasks
  • seek out visible, influential roles
  • focus on learning over performing
  • evaluate fairly, objectively and anonymized
  • encurage and support "safe spaces"
  • endorse, promote and mentor minority community members
  • share stories of your own struggles in similar situations
  • participate fairly in stereotypical tasks
  • refer to objective standards when giving feedback
  • encourage minority members to take opportunities

typicall learning curve

  • unconscious incompetence
  • consicous incomepence (current state in community)
  • conscious competence
  • unconscious competence
Translate to de es fr it pt ja

FrOSCon 2014 - Kein Kartenvorverkauf

Auf Anfrage wurde mit mitgeteilt, dass es dieses Jahr keinen Kartenvorverkauf für die FrOSCon geben wird.

Dieses Jahr wird es keinen Vorverkauf geben. Kommt einfach vorbei und holt euch euer Ticket vor Ort. Davor das ihr nicht reinkommt müsst ihr keine Sorge haben. Wir haben genug Platz für alle die kommen werden. TShirts wird es wieder, wie ganz früher mal, einfach vor Ort zum Kauf geben.

Das Programm ist auch schon verfügbar. Bring Spendengeld und gute Laune mit :-).

Translate to de es fr it pt ja

Call For Papers for - FrOSCon 9 (23. und 24. August 2014)

Der Call for Papers und der Call for Projects sind gestartet. Bis zum 23. Mai 2014 habt ihr die Möglichkeit eure Talkvorschläge einzureichen oder euch um einen Entwickler-/Projektraum oder Stand zu bewerben.


Translate to de es fr it pt ja

Der Termin zur FrOSCon 2014 steht!

Ein Vöglein hat es mir soeben zugetragen :-D. Der Termin für die 9. FrOSCon steht. Trommelwirbel, es ist vom 23.08.2014 bis zum 24.08.2014.

Die nun schon neunte FrOSCon wird am 23. und 24. August 2014 in der Hochschule Bonn-Rhein-Sieg in Sankt Augustin stattfinden.
Wie immer wird es ein reichhaltiges Vortragsprogramm, eine große Ausstellung, unser legendäres Social Event, und noch vieles mehr geben. Also seid dabei!


Translate to de es fr it pt ja

FrOSCon - Test Proxies: How Problems Became Features

By Sebastian Bergman and Arne Blankerts.
Keep your eyes up and stay tuned for "patch coverage".
Second time, thanks for the book - handed over by sebastian himself. Mister HowTrueIsFalse, you will get back your book soon :-).

What Is The Talk About

Integration tests closing the gap between unit tests and system tests. This is resolved by keep the focus on interfaces between components and testing that the interaction between the components is working as expected.

Arne Blankerts and Sebastian Bergman showing how a problem by setting up the integration tests became a feature aka "Test Proxies" for PHPUnit.

They also discuss problems and provide solutions for implementing mock objects in php unit and how to ship them as features.

How To Visualize

How lower you go, the faster and the exact the tested code behaves. How higher you go, the more you can provide a stable and general testcase.

  • business
  • technology

  • ui

  • service
  • unit

Isolation, speed (top down) vs Confidence in whole system (bottom up) from how google tests software * large * medium * small


Test one unit is a unit test.

Write a test between two units is more a integration test than a unit test. Current idea is to stub or mock one of the two units and see how other unit acts.

Push the idea of stubbing and mocking more to the edge will lead to "edge to edge test" like "client to server test". In general, try to test components on the same level (layer).
Try to monitor systems for load tests and use appdynamcis or xdebug and xhprof.


namespace Company\Project

class SampleWorkflow
    private $backend;
    private $service;

    public function __construct(Backend $backend, Service $service)
        $this->backend = $backend;
        $this->service = $service;

    public function execute(Request $request)

How to test this?

Would be cool if we can log that code was executed like test proxies by adding an extra flag to the mock builder.
Provides way to see where dataflow changed or drifts from expected way (will be in PHPUnit 3.8-).

namespace Company\Project

use PHPUnitFrameworkTestCase;

class SampleWorkflowTest extends PHPUnitFrameworkTestCase { public function testServiceCallUpdatesObjects() { $service = $this->getMockBuilder('Service') ->enableProxyingToOriginalMethods() ->getMock();


    $backend = new Backend();
    $workflow = new SampleWorkflow($backend, $service);

    $workflow-&gt;execute(new Request(array('id' =&gt; 42)));


Translate to de es fr it pt ja

FrOSCon - Marring Fron With Back End

By Bastian Hofmann and Volker Dusch The talk is about application architecture from the code site. Both are from ResearchGate Speak available on speakersdeck

What You Want

  • good code review
  • rapid development (even with big teams)
  • handle large code bases
  • frameworks to the rescue

Most Framework Are Dealing With Backend Or Frontend

  • backend
    • symfony
    • zend framework
  • frontend
    • backbone.js
    • jQuery
    • ExtJS

Frameworks Out There To Join Both Worlds

How To Achieve The Goal

  • incremental refactoring (take a look to flight)
  • separate your code into components
    • clean interface
    • clean architecture
    • small teams can work on that

How Reasearchgate Have Done It

Classicla Webapplication Architecture

  • loadbalancer
  • webservers
  • database
    • pgsql
    • memcached
    • mongodb
  • services (rest services)


  • php templates
  • lazy db queries in view
  • yui
  • duplicated code

We Could Do It Better

  • try to compose your page out of containers
    • every component has to be self contained
    • can be addressed and rendered separately (by pure html response or json/xml data that is rendered by javascript on the client)
    • javascript is part of the component (easy up refactoring)
  • initial page request is returning a simple html page as response that is triggering a lot of ajax calls
  • if ajax request returns a ok, the return contains the updated data or handles the error (hint, on the backend, a "read from master" flag is added to retrieve the most accurate data without running into master/slave replication problems)
  • share code between server and client
  • templates, validation, entities
  • create "a widget"
    • php controller (providing data)
    • ...
  • do not fetch data directly (because it is painfully slow)
  • require stuff (search for "evolution of code design at facebook" at infoq)
    • fetch requirements in a preparing step
    • batch requirements by calling resolvers
    • resolvers talks with services (multi-GET)
    • services calls connector interface (databases for example)
    • fetching data from connector
    • distribute back all the fetched data
  • entity requirement
  • service requirement
  • request cache
  • Multi-Get (get multiple data via one request for fetching a lot of data)
  • requirement vs. optional
    • optional, template will be rendered without that data
  • data dependencies within a widget by using callbacks (to create a dependencies and dataload workflow)
  • php 5.5 generators by using yield
  • data dependecies between widgets by using data requirements (fetched from the require stuff above)
  • looks like this is complicated to debug by using symfony debugging tools (for example ;-))
  • rendering (by using mustache)
    • [x]html
    • json
    • v8js for rendering templates on the server (rendering mustache templates is faster in javascript then in php) and to provide a single place to render templates (cool!)
    • use models in javascript to stop messings things up
  • enables developers to only focus on their components
    • single place for refactoring
    • moving ugly code to one point
  • easies up testing (also with faked data)
  • error handling is simplified
    • remove component from the view
    • try to rerender it later
    • display a generic component
  • a/b testing is easied up (removing "long hanging fruites" - that just made my date :-D))
    • create multiple components and simple render then via a/b testing on the frontend
    • read bandit algorithm on untyped
  • by usgin "" you can use varnish to speed up the page
  • easy reusing of components ("take that button and move it or use to somewhere else")
  • mark components to load them asynchronous
  • use "placeholder" with "placeholder data" for search engines
  • try to use BigPipe (published by facebook)
    • compute as much informations as needed (like navigation) and then flush this to the client
    • render and flush some javascript logic
    • start computing the first body (kind of heavy work) that holds javascript logic and data to replace rendered and flushed content from the top
    • repeat that until you have finished creating the initial datas
    • send the final flush with the html end tag
  • fast changes on the frontend by replaceing only the components that have to be updated and use javascript push to change the url
Translate to de es fr it pt ja

FrOSCon - Unbreakable Domain Models

Mathias Varreas Mathias is helping teams escaping from survival mode. Cofounder of DDDBE Domain driven design Introduces me with a great upcomming term called "modelstorm". He also told me that a friend of him is writing on a paper about "modelstorm" so i'm looking forward to find more informations about that term on the web.

What Is This Talk About

  • Where to put business logic?
  • How to protect our code from abuse?
  • Where to put queries, and how test them?

Defining Terms

  • Domain is a problem space (let customers buy more)
  • Domain model is solution space

Domain Model

  • contains data model - the models state
  • protect your invariants (example: a customer must always have a email address)
    • create unittest with something like assertTrue($customer->hasValidEmail())
  • a less to abuse model is harder to break
    • like adding it to the constructor
  • use objects as consistency boundaries
    • "if i give you this object, you don't have to take care if it is valid and contains consistence data"
  • make the implicit the explicit
    • "a user must have a valid email address"
    • keep in mind, if you can add an "and" to describe a method, the method is doing to much
  • do not violate single responsibility principle
    • for the example, create email class
  • try to encapsulate state and behavior with (simple) value objects

Customer business process is: "A customer orders products and pays for them.".

  • try to encapsulate operations

  • use objects as consistency boundaries
    • "if i give you this object, you don't have to take care if it is valid and contains consistence data"
  • make the implicit the explicit
    • "a user must have a valid email address"
    • keep in mind, if you can add an "and" to describe a method, the method is doing to much
  • do not violate single responsibility principle
    • for the example, create email class
  • try to encapsulate state and behavior with (simple) value objects
  • Customer business process is: "A customer orders products and pays for them.".

    • try to encapsulate operations

    Customer business process is: "Order three times to become a premium member.".

    • try to create specification

      !php CustomerIsPremium::public function isSatisfiedBy(Customer $customer)

    Customer business process is: "Different rules apply for different tenants.".

    • use specifications to encapsulate rules about object selection

    Customer business process is: "Get a list of all premium customers.".

    • for big collections, try to duplicate the logic in the database (even if it breaks the single response philosophy)
    • test it by comparing (different implementation) object model code with database logic code in the unittest

    How To Persit A Model

    • implemented by a storage manager
    • special or generic storage manager has a save/add and delete/remove method


    The idea behind modelstorm (if i get it correctly) can be told as "a room of people, a bunch of magic markers, an area where you can write on". Prepare a wall with white papers. Each person can have an own marker with its own color. Each person is allowed to write on the paper. Then you start writing/creating the models. Add lines with actions to display process that handles different domain stages.

    Translate to de es fr it pt ja

    FrOSCon - Database DevOps With Flyway, Git, Maven, MySQL And Jenkins

    By Michael Hüttermann.
    Thanks for the book again, i will try to write a review about it this year :-).

    What Is This Talk About

    • what is a DevOp
    • the goal
    • the problem
    • the solution
    • recipes and pitfalls
    • examples - not in this documentation
    • demo (MySQL, Flyway, Jenkins, Git, Maven, Gradle, Sonar, Vagrant) - not in this documentation

    How Is Part Of The Team

    • everybody how is envolved in the process of creating the software

    What Is Not A DevOp

    • is already a buzz word
    • it is not a new project role
    • its also not a new tool-suite
    • devOps is not a new department / business unit
    • *

    What Is A DevOp

    • development and operations
    • better communication
    • improved collaboration

    The Goal

    • shared incentives
    • holistic metrics
    • common processes (like kanban)
    • shared tools (same deployment tools for development and production for example)
    • high automation degree
    • improve and accelerate delivery - downsize the batch size
      • small releases
      • downsize the changesize to keep up the frequency
      • improve the cycle time (from bug finding/feature request to release the patch/feature)

    The Problem

    • a lot of completed functions/features facing a slow release cycle
      • release small, release often
    • problem between development (want feature online) against operation (want stable and "relaiable" software)

    The Solution

    • value stream map
    • continuous integration
    • continuous delivery (each commit moves system into stable and releaseable version)
    • continuous deployment
    • development and operation is merged together to create a infinie loop of release and feedback (both directions)
    • share knowledge and experience

    Define clearly what is a release (new feature, bugfix, and so one). Again DevOps is not a new layer between the two areas. Responsibilites is still clear to reproduce scenarios (automate as much). It is about people, not about tools. Implement culture of communication. Try to find conceptual deficits (also software design problems) as early as possible. Add a version number to your database layout (most likly same release number than code) - flyway, liquibase, self-made

    The Area Matrix

    • area 1 - extend development to operations
      • practice
        • use tools like puppet/chef/cfengine to provision environments from versioned code
      • goal
        • fast feedback through automations
        • reuse of code and tools
        • reliability of delivery process and provisioning
    • area 2 - extend operations to development
      • practice
        • provide monitoring and log files to development (or automated database snapshots to reproduce bug on development machine)
      • goal
        • share information about state in production
        • enable development to improve
        • enable development to trace production incidents
    • area 3 - embed development into operations (end user experience is goal to reach)
      • practice
        • set stability and capacity as development goals
      • goal
        • align goals, share incentives
    • area 4 - embed operations into development
      • practice
        • operations gives feedback about the design of the application that is under development, early and often
      • goal
        • avoid not releaseable design

    Recipes And Pitfalls

    • automate to ensure repeatability and foster collaboration (build once on a build server and release)
    • consider kanban (scrum is more for development but bad for organisation)
    • consider thorough change and config management - content management
    • track to ensure traceability (which build/release contains which tickets/bugs - artifactory)
    • monitor to support accountability (nagios and everything)
    • dashboard what you are doing (talk to each other what you are doing or what you have done)
    • use version control to ensure reproducibility (no manual tweaking after checkout)
    • consider pipelines/process from "put in feature/bugfix to release"
    • create (executable) documentation to, well, document (try to define goals and what it needs to reach it)
    • align goals and incentives of devs and ops (small cycle time)
    • ask and help, open culture of communication
    • respect your colleagues (stability against features, both leads to great user experience)
    Translate to de es fr it pt ja

    FrOSCon - ownCloud

    By Björn Schießle.
    I am the owner of my data!
    Use and implements the User Data Manifesto.

    Back In The Past

    • everybody owned a pc at home
    • data is stored localy
    • simple install open source software to ensure you are the owner of your data


    • multiple pcs
    • access should be possible from everywhere

    Open Questions In New World

    • where is my data stored
    • how has access to it
    • what happens if i change the service provider
    • what happens if the service provider changes core functions

    User Data Manifesto In Short Terms

    • user has full control who has access to the data
    • user has to know where date is stored (server location, how is responsible of the server)
    • user has the right and the possiblility to switch to an other service provider (data are exportable, open standards are implemented)

    What Makes OwnCloud Different?

    • you decide what happens to your data
    • simple runs of every webspace (php driven)
    • simple user interface
    • quite easy to sync your data
    • based on AGPLv3 and open standards
    • integration in GNU/Linux desktops
    • extendable, ownCloud is a plattform

    Lets Talk About Files

    • files are available everywhere (web, desktop, mobile via webdav, browser, sync clint)
    • slide show for pictures included
    • multiple viewers available for text, pdf, odf, image, video, audio etc.
    • allows you to share files with others (scoped by groups with different rights)
    • provides mounting of external storaged like WebDAV, Dropbox, GDrive, FTP etc.
    • server based encryption
    • simple kind of versioning - last save wins
    • thrashbin implemented (to restore deleted files)
    • intelligent storage management included
    • conflict solving implemented in desktop sync client


    • address book via webinterface or client
    • share address books with others (same permission handling as with files)
    • sync address book via CardDAV (?)


    • appointments via webinterface or clinet
    • show birthdays
    • share calender
    • sync calender via CalDAV


    • full workable newsreader included
    • google reader import
    • different clients (web, android, ios, qt-app, html 5)


    • app to write notes and tasks
    • android ap for working with tasks via CardDAV

    And A Lot More

    • music player
    • url shorter
    • full text search
    • presentation via ownCloud
    • bookmarks (a firefox bookmark plugin is currently in development)
    • cards via OpenStreetMap
    • and many more

    Desktop Integration

    Wrap Up

      • file sync with keeping control for rights
      • free software and open standards
      • clients for major free desktops or mobile devices
      • integration in free desktops
      • plattform for many more applications
      • it is enterprise ready
      Translate to de es fr it pt ja

    FrOSCon - Open Source Storage Management With openATTIC

    My first german talk today so hopefully the human "just in time translation" has a less error state today ;-).

    openATTIC with David Breitung.

    it-novum GmbH
    Edelzeller Str. 44
    36043 Fulda

    The Two Faces Of Cloud

    User View

    • flexibility
    • rapid deployment
    • costs
    • high availability

    Producer View

    • ...

    What Defindes A Unified Storage

    • high availability
    • freedrom of used protocol
    • storage efficiency
    • centraliced management
    • process integration
    • scalable

    High Availablility

    • data mirroring
      • block based
      • file based
      • syncron
      • asyncron
    • cluster failover
      • automatated
      • ...

    Freedom Of Protocol

    • NAS protocol
      • CIFS/SMB
      • NFS
      • AFP
    • SAN protocol
      • iSCSI
      • Fibrechannel
      • FCoE
      • Infiniband

    storage efficiency

    • deduplication
    • compression
    • over commitment
    • thin provisioning
    • snapshotting

    Centraliced Management

    • administration
      • web frontend
      • command line tool
      • api
    • openATTIC is a master/slave system
    • minitoring (by using nagios, check itcockpit)
      • availability
      • ressources
      • performance

    Process Integration

    • automated backup process
      • intelligent backups by SnapApps (for consistent snapshots)
      • to backup a database in good health (consistent) state
    • automated server deployment
      • request by user, helpdesk or api
      • ...
      • deployment
      • feedback
    • Snapshotting
      • check snapshot
      • backup healthy snapshot


    • disc scaling
      • more controllers
      • more shelfs
      • more discs
    • node scaling
      • openATTIC Hosts
      • other hosts


    • benefits by freedom of choice for server choosing
    • software and license cost
    • running environment since a lot of tools are community driven

    Why Open Source

    • vendor lock
    • security
    • flexibility
    • cost (...)
    • innovation


    • community edition
      • supported by community
      • basis functionality
      • open source
      • central web console
      • nas protocol
      • san protocol
      • deduplication
    • enterprise edition


    • benefits by freedom of choice for server choosing
    • software and license cost
    • running environment since a lot of tools are community driven

    Basic Framework (Down To Up Layer)

    • service and tools and vendor plugins
    • backend
    • core (deamon, python django based))
    • frontend (XML RPC API, extJS)
    • interfaces

    Next Steps

    • fibrechannel, fcoe
    • more interfaces to vendors
    • more snap apps
    • content adressable storage (cas, hadoop)
    • glusterFS
    • object storeage planned in the far future
    Translate to de es fr it pt ja

    FrOSCon - How To Make Money From Open Source Today

    Gosh, one of the fastes talks i joined in the past. Nevertheless, the talk was full of informations. Mr. Widenius is an incredible likeable person since you feel the force he is up to presenting open source as a workable business concept.

    Based on the speed of the slide switches and the enormous number of slides, there are a lot of gabs in my blog entry (aka talk record).

    By Michael "Monty" Widenius, one of the creator of mysql and now part of the mariaDB team.

    What Is The Talk About

    • how to make a good open source project
    • how to create money of that
    • understand how open source works
    • create an open source project
    • participate, drive or fork an open source project
    • try to create a company around an open source code

    Good And Bad About Open Source


    • more developers
    • more spread
    • much better code
    • works well for a lot of projects


    • not enough money to pay developers (most at the beginning)
    • hard to get money and investors for projects (you have to make consulting and so on to get investors)
    • investors, in general, don't belive that a open source company can make enough money

    Things To Clear Up

    Top Reasons For Creating An Open Source Project

    • solve one of ones personal problems (mysql/php)
    • relicense and existing closed source porject to open source to get the benefits of open source (netscape)
    • get more developers on an internal company tool/project
    • wanting to earn money and at the same time do something good
    • wanting to give something back to the comunity
    • ...

    Developing Software Open Source Is In Human Nature

    • you solve your own problems and get free help and development efforts from others while doing it
    • you participate to increase your reputation
    • you use open source because its less expensive
    • ...

    Before Starting A New Open Source Project

    • check if there is already an existing actively developed project (it is always better to participate then to do new project or fork it)
    • do some reseach why old and dead projects are failed
    • find a company or a group of users that wants to work with you to define the scope of the project

    Its Not Just Software

    • most importent part is to create a communiy
    • you need to interact with that community
      • web pages
      • forum or knowledgebase, email lists, bug system
      • documentation and localization
      • packages, build systems
      • respository

    You Need A Good Team And Active Community

    • mark a designated active leader (linux) or leaders (MariaDB/PostgreSQL) that have the respect from the community
    • ...

    Transparency Is Critical For Long Time Success

    • a open development model
    • clear guidelines
    • clear license and business model
    • extensive documentation
    • be clear about your roadmap and release schdule
    • good open review process of patches that enforces quality
    • be transparent with your plans and let users influence them
    • be open about your bugs

    Communicate With Your Community

    • attend conferences and talk about your product
    • listen to your users and either do it or help them to help themselves
    • make it easy for people to communicate with you and find informations about your product
    • ensure that your faq is up to date
    • ...

    Be Good Open Source Citizens

    • building a supportive community later in the game is extreamly hard - you have to do it at day 1
    • ...

    You Need To Get The Product Out There And Used

    • release early, release often
    • aim that each release should be bug free enought to be usable in production
    • work with the distributions and cloud providers to get your product in there
    • use a good open toolset ...

    Doing Business With Open Source

    Open source is a philosophy and a development model.

    Open source does not gurantee that you will make enough money.

    Different Kind Of Open Source Products

    • products developed by the community
    • products that are tools for the company and released as open source to get more community development
    • small team or company that is developing and driving ...

    Questions To Consider When Creating A Company

    • do you plan for a virtual company (no offices)
    • are you creating a company of equals (hacker companies where company is owned by employes)
    • do you want to concentrate on services or development
    • do you plan th have a big community or work with a few big companies
    • do you plan to take in investors (if yes, you need an exit plan)

    What Business Model To Choose

    • service company
      • man powered services (support, training, consulting)
      • valuation 2 times revenue
    • software company
      • licensing, software as a service (SAAS), subscription
      • valuation 10 times revenue plus x number of users

    What Is The Final Goal With The Company

    • sold on the market (quick and high profit for owners, unpredictable future for employees)
    • go public on the stock market
    • owned by founders, employees
    • create an open source foundation

    Why Go Open Source

    • spread the product more quickly
    • get some part of the development done elsewhere
    • get things more tested and more bug reports
    • possible to get development done in "not business critical" directions
    • easier to find good developers, partners and customers

    In general, more market recognition, feedbacks ...

    Reasons For Users To Trust A Open Source Vendor

    • more trustworthy as they depend on trust to survive
    • no vendor lock in (can fork it or publish patches each time)
    • little risk for trap doors

    Benefits For Developers Using Open Source Vendor

    • easy to get access ...

    Benefits For Big Business / Countries Using Open Source

    • no license costs
    • not depending on vendors (from different countries)
    • ...

    When Go Open Source

    • ...

    How To Choose An OS License

    • what is your business idea ...

    Business Models To Use With Open Source

    • open core model (SugarCRM)
    • dual licensing model
    • service models
    • subscriptions

    Open Core

    • its a closed source business model (like oracle and mysql)
    • ...
    • for cummunity developers, the worst possible offer

    Dual Licensing

    • used first by ghostscript and mysql
    • can only be used if you have full rights to all the code
    • give same code under two licenses
    • companies that can not use the gpl have to buy the closed source version from you
    • only works well for infrastructure, easily embeddable produts like libraries or databases

    Business Source (Delayed Open Source)

    • not an open source license
    • source code is available from start but using it commercially you have to pay
    • after x years, the code automaticly converts to some open source/free license
    • better than open core
    • investor friendly (early adaptors have to pay)
    • forces good behaviour
    • you to do frequently releases
    • you to innovate and fix bugs to ensure users wants it
    • ensures that company is bought by "bad entity" that just wants to close down the project
    • project can be take over if something happens to the company

    Recommendatins For Business Source

    • 3 to 5 years before it becomes open source
    • target that 1/100 or 1/1000 users have to pay
    • free version and commercial should be identical

    The Importance Of Selling Licensing

    • mysql was only possibly with the licenses
    • very hard to get companies to pay
    • ...

    Business Differnces Between MySQL and MariaDB

    • ...
    Translate to de es fr it pt ja

    FrOSCon - Fixing Legacy Code

    By Benjamin Eberlei and Kore Nordmann.

    What Is Legacy Code

    • hard or impossible to fix errors or implement new features
    • hard or impossible to implement automatic testing

    What Is The Talk About

    Issues With Legacy Code

    • code issues
    • inversion of control
    • data structures
    • application or business logic
    • shared state

    Code Issues

    • code size
    • high efferent coupling
    • code duplication
    • ...
    • Use phpmd to locate size or complexity errors.

    Efferent Coupling

    • many outgoing coupling for one class in other classes
    • can be located with pdepend

    Inversion Of Control

    • Missing abstractions
    • Inline new
    • Static calls
    • Inline life cycle management (only value objects and exceptions should be newed inline)

    Data Structure

    • Missing abstractions
    • Inline new
    • Static calls
    • Inline life cycle management (only value objects and exceptions should be newed inline)

    Data Structure

    • with arrays, you have a bad documentation
    • use simple value objects (also known as dto) and they are not immutable
    • split logic and try to avoid big models (seperation of concerns (roles/contextes) on model logic
    • branch by abstraction
      • introduce facade / proxy for old code
      • call old code from facade / proxy implementation
      • write new shiny facade / proxy implementation
      • use new implementation
      • delete old code

    Application Or Business Logic

    • mixed business logic (application logic) in large controllers is the most common and pressing issue with legacy code (fat controllers)
    • try to use solutions like business requirement
    • extract business logic like service layer pattern
    • introduce (domain) events (in the same request)
    • introduce message queues (not in the same request)

    Shared State

    • we know that global state is bad
    • sessions are (often) cross-request global state in bash maps
    • method execution pathes depending on current object state are horrible to track down

    Testing Changes

    • if your legacy code is hard to test, try to test it from the http protocoll point of view
    • use behat as behaviour driven development (BDD)
    • use mink with "goute", "sahi" or "zombie.js", "selenium", "selenium 2"


    • do small checks when refactoring (good indicator are many, many commits)
    • test your primary use cases (put the chaos in the cage)
    • be bold (enough) and remove old code
    Translate to de es fr it pt ja

    FrOSCon - Beyond LAMP

    First talk finished :-). No proofreading done so far. Next talk will start in a few seconds.

    Its All About Scale

    • size
    • features
    • non-functional requirements
    • Language agnostic - language you are using doesn't matter

    Background Tasks

    User can't wait and server can't handle it

    • sending mail
    • calling 3rd party APIs / services
    • converting media (image, video, audio)
    • updating caches

    Direct Approach

    Don't do that since your are losing control

    Slightly Less Bad Idea

    • Write jobs into sql database
    • have some workers that poll the database for jobs

    Don't use it

    Queus To The Rescue

    • write jobs into message queue
    • have some workers for the queue
    • many services available (ZeroMQ, RabbitMQ, Redis Pub/Sub, Amazon SQS ...)

    Good idea but lot of work and hard to get right


    • create a job
    • process a job


    • simple job queue in python
    • backed by redis
    • enqeueu function call
    • run worker how stores result in database


    • python
    • multiple brokers
    • primarily python with clients for ruby and php
    • highly available (HA)
    • fast
    • flexible
    • monitoring
    • workflows
    • time and rate limits
    • scheduling
    • autoscaling


    Like query

    • no lingustic suport
    • no ranking
    • not indexed (mysql has fulltext index and postgresql)

    Fulltext Search Engines - Solr Vs. Elastic Search

    • based on lucene
    • full linguistic support
    • faceted search
    • result highlighting
    • HTTP API
    • similar but different
    • easy to set up
    • clients available like PHP: solarium, symfony component or PHP Elastica
    • integrate search into framework (map objects into documents and back) or handeling updates and deletes


    • key-value stores
    • column based
    • document stores
    • graph


    • don't let it happen
    • send an email (overload mailboxes)
    • log errors
      • php symfony provides a component that you log only all messages if error occures (so only info logging if something happens)
      • properly configure logging
      • use event aggregator
        • sentry
        • errbit

    Sentry (event aggregator)

    • started as OSS
    • now available as SaSS
    • udp
    • written in django
    • php client available

    Errbit (event aggretator)

    • still OSS


    • ftp
    • git pull / app server by ssh
    • but you want a automated deployment like fab deploy
    • automated deployment with webistrano (just a single button)

    Wrap Up

    • use background tasks
    • use full text search
    • try to use nosql where needed
    • do error logging
    • think about deployment
    Translate to de es fr it pt ja

    web - FrOSCo 2013 - Presale gestartet

    Der Presale ist gestartet! Bis zum 08.08.2013 können unter Tickets und TShirts vorbestellt werden. Der Ticketverkauf geht anschließend bis zum 17.08.2013 weiter, jedoch können dann keine TShirts mehr geordert werden.

    Neu sind dieses Jahr das Supporter- und das Businessticket Plus.
    Das Supporterticket kostet 42 Euro und ermöglicht es euch die FrOSCon im kleinen Rahmen zu unterstützen. Das Businessticket Plus beinhaltet neben dem Erhalt einer Rechnung, auch ein Konferenzshirt, sowie Verpflegung auf der Konferenz.
    Natürlich gibt es weiterhin das normale Ticket für 5 Euro, sowie das Businessticket für 100 Euro.
    Alle Informationen zu den Tickets findet ihr in unserer FAQ.


    Translate to de es fr it pt ja

    notes - froscon 2012 - alternative php runtimes - sebastian bergmann

    Following are my notes to sebastians bergmann presentation. The presentation was quite good (you can add "as usual" if you have seen sebastian bergmann more than once :-)).

    #120825 sebastian bergmann

    _general - he found at least 10, some ready for production - php core is threadsafe, problems are linked in extensions

    _php - bytecode-based interpreter (interpiler) - php->php-bytecode->execution - "the" (official) implementation of the php language ->currently no official specification exists

    phpruntime - token base - reads file character by character (scanner) - tries to figure out what to do with the words (parser) ->compilekit shows you how your code looks when it is compiled as bytecode - bytecode is is not optimized

    _hiphop (only productive alternative) - tries to save power (cpu usage) and also speed up "some things" ->main reason is saving powercosts

    • php->c++->native binary
    • reimplementation of the php runtime (with common extensions) in c++
      • like filesystem, mysql (what they need to run facebook)
      • compiling takes long (very long)
      • sebastian compield phpunit for hiphop
      • faster from factor 1 to 3
      • compiling takes up to factor 65 more time on hip hop but scalls very well with cores
        • CodeError.js (hphp -> tool to transform them in xml or whatever for continious integration)
      • binaries became very large (facebook uses bittorrent for deploing) ->thats why they implement the HipHopInterpreter (factor 2 slower than php) ->shares library of hip hop but is based on php
      • optimize code by compiling
      • tries to figure out the type your variables (to set native c++ types where possible)
        • significant smaller footprint by good code
      • php unit works (with all features)
        • you have to compile your code plus php unit code plus your test code

    sebastian knows two companies that are working with hiphop.

    _hippyVm - php interpreter implemented using PyPy - faceboog sponsored study by 1 person and 2 months - get as close to php as possible - is it feasible to implement a php runtime using PyPy ->it is possible to implement 80 percent of php in 20 percent of the time

    _DaVinci Machine Project (MLVM) - Multi-Language renaissance for the JVM - First-Class Architectural support for languages other than java - Facebook is working on (or at least thinking about) PHP on MLVM - Isn't the first (and not the last) php runtime implementation on jvm

    _HappyJIT - academic investigation - PHP Interpreter implemented using PyPY - PHP->Zend Parser->PHP Bytecode->APC->BcParser->HappyJIT Bytecode - tries to optimize php bytecode - they have to use APC to get the bytecode

    _php.js - php interpreter implemented in java script - same 80/20 rule

    _phalanger - php->common intermediate language (CIL - microsoft .net code) - rewrite underway to leverage the dynamic language runtile (dlr) - started as reasearch projcet

    _php compiler (phc) - academic investigation - php->native binary - static analysis: abstract syntax tree in xml

    _rose ( - framework for source-to-source transformation and static analysis - strated at a military laboratory - php support based on phc - php->AST in PHP XML->

    _Roadsend PHP - PHP->Native binary - No longer maintained

    _Roadsend PHP: Raven (RPHP) (available on github) - Based on LLVM, C++ Runtime - Reuses code from phc

    _Pipp - php->parrot bytecode - looks dead

    _Quercus - Implementation of php 100% in java

    _ibm webspheare smash ( - php->java bytecode - c-level php extensions can be used via the nava native interface - support for DBGp debugging protocol

    _talaria runtime ( - currently in private beta - claims 10 times faster - clains support for real-world applications such as drupal and wordpress - currently no information in what they implement php

    _trade-off - use all or some php features - time to implement vs runtime


    //reflectionApi practical php reflection | how to use php reflection api | Die Reflection Api

    Translate to de es fr it pt ja