Upgrade to Pro — share decks privately, control downloads, hide ads and more …

open source efforts

open source efforts

The story behing our open source efforts

Freek Van der Herten

October 05, 2016

More Decks by Freek Van der Herten

Other Decks in Programming


  1. The story behind our
 open source efforts

  2. About me Freek Van der Herten Partner & developer at

    SPATIE @freekmurze https://murze.be
  3. About me phpantwerp.be Dries Vints @driesvints Frederick Vanbrabant @TheEdonian

  4. Since 2003 Websites, applications and webshops Team 4 developers, 1

    manager Specialization Laravel development

  6. Open source software We use a lot of it Nginx,

    Laravel, Ubuntu, Elasticsearch, Memcached, Redis, Beanstalkd, MySQL, Composer, Glide, Homestead, Flysystem, Fractal, Carbon, PHPUnit, NPM, React, jQuery, Java, SSH, Sequel Pro, BackupPC … Basically everything listed in composer.json and package.json
  7. ± 80 packages on Packagist + 1 000 000 downloads

    A lot of Laravel specific packages, some framework agnostic ones, a few JavaScript packages We create a lot of it Open source software
  8. Zend Framework 1 PHP world was pretty stale around 2012

    Laravel 4: developer happiness, clear syntax Laracasts: miniseries on package development + Travis The first package
  9. Browsershot: take screenshots of website programmatorically PhantomJS Working in the

    open People started blogging about it The first package
  10. Blender: conversion from Zend Framework to Laravel A lot of

    functionalities that could be helpful to other developers New packages: laravel-newsletter, laravel-medialib, laravel-analytics Opensourcing Blender itself Very positive feedback from the community Beyond the first package
  11. Every package gets born inside a client project Almost every

    client project results in a package laravel-sitemap, opening-hours, … Beyond the first package
  12. Making time Time consuming Coding, writing tests, writing docs, getting

    the word out Maintenance, responding to issues, reviewing PRs 1000 issues, 750 PRs
  13. Making time Only plan 4 days a week for client

    work Extra day for support, learning and opensource efforts Free time
  14. The benefits of creating packages A lot of learning by

    coding up the package and writing tests Feedback from the community Free code! Dogfooding
  15. Requirements Latest version of PHP / Laravel Package reflects the

    requirements of the project it gets born in Can use latest features: return type hints, null coalescing, anonymous classes PHP 5 is dead (to us) Probably hurts popularity, but nudges community to use latest versions
  16. TOP 10

  17. 10. laravel-permission $role = Role::create(['name' => 'writer']);
 $role->givePermissionTo('edit articles');

    $user->can('edit articles’);
  18. 9. laravel-fractal fractal()
 ->transformWith(new BookTransformer())

  19. 8. laravel-tail php artisan tail

  20. 7. laravel-medialibrary $newsItem->addMedia($file) ->toCollection('images'); 

    ->toCollectionOnDisk('downloads', 's3');
  21. 6. db-dumper Spatie\DbDumper\Databases\MySql::create()
 ->excludeTables(['table1', 'table2', 'table3'])

  22. 5. laravel-analytics Analytics::fetchMostVisitedPages(); Analytics::fetchVisitorsAndPageViews(); 

  23. 4. string string('StartMiddleEnd')
 ->between('Start', 'End')
 ->toUpper(); // outputs "MIDDLE"

  24. 3. laravel-glide GlideImage::create($pathToImage)
 ->modify(['w'=> 50, 'filt'=>'greyscale'])

  25. 2. pdf-to-image $pdf = new Spatie\PdfToImage\Pdf('file.pdf');
 collect(range(1, $pdf->getNumberOfPages()),

    function(int $pageNumber) use ($pdf) {
  26. 1. laravel-backup


  28. Laravel Menu Menu::macro('main', function () {
 return Menu::new()
 ->action('[email protected]', 'Home')

    ->action('[email protected]', 'About')
 ->action('[email protected]', 'Contact')
  29. Speed up your application 
 by caching the entire response

    Laravel Responsecache RESPONSE CACHE REQUESTS APP 1 2
  30. Laravel Translatable $newsItem = new NewsItem; // This is an

    Eloquent model
 ->setTranslation('name', 'en', 'Name in English')
 ->setTranslation('name', 'nl', 'Naam in het Nederlands')
 $newsItem->name; // Returns 'Name in English'
 $newsItem->getTranslation('name', 'nl');
  31. https://spatie.be/opensource

  32. Not free!


  34. Spatie
 Samberstraat 69D 2060 Antwerp

  35. Future plans No roadmap Depends on the client projects Will

    probably diminish a bit as the most common problems are solved
  36. In closing Working on packages has a lot of benefits

    It’s fun Social aspect Can be recommended to everyone

  38. Thank you! https://speakerdeck.com/freekmurze/open-source-efforts https://murze.be https://spatie.be/opensource