├── README.md ├── _config.yml ├── _layouts └── default.html ├── achievements ├── api-platform.md ├── box.md ├── console.md ├── diversity.md ├── doctrine.md ├── documentation.md ├── flysystem.md ├── messenger.md ├── secrets.md ├── security.md ├── serializer.md └── statistics.md ├── assets ├── api-platform-logo.png ├── ci-stats.png ├── eu-fossa-logo.jpg ├── eu-fossa-logo.png ├── group-photo.png └── symfony-logo.png ├── contributors.md ├── resources.md └── tweets.md /README.md: -------------------------------------------------------------------------------- 1 |

EU FOSSA logo

2 |

Symfony Hackathon 2019

3 | 4 |

Symfony logoAPI Platform logo

5 | 6 | The [EU-FOSSA](https://joinup.ec.europa.eu/collection/eu-fossa-2/about) project developed by [European institutions](https://europa.eu/) is aiming at improving the security of Open Source Software. 7 | 8 | As part of EU-FOSSA 2, the [European Commission](https://ec.europa.eu/) is organising several [hackathons](https://eufossahackathon.bemyapp.com/) where developers from both the projects and the European Institutions that rely on their software, can come together. 9 | 10 | With over 50 participants, the first hackathon focused on PHP [Symfony](https://symfony.com) and [API Platform](https://api-platform.com/). 11 | It took place in Brussels on 6 and 7 April 2019. 12 | 13 | During the hackathon, some of the most active developers from the PHP Symfony community got together, many for the first time. Their time together was spent working on important issues for the community and the EU institutions such as new features and security. 14 | 15 | ## Achievements 16 | 17 | The participants worked on different activities, not only coding but also reflecting on different topics such as diversity within the community. 18 | 19 | See [repositories statistics](achievements/statistics.md) and the different topics that have been worked on: 20 | 21 | * [API Platform](achievements/api-platform.md) 22 | * [Box](achievements/box.md) 23 | * [Console](achievements/console.md) 24 | * [Diversity](achievements/diversity.md) 25 | * [Doctrine](achievements/doctrine.md) 26 | * [Documentation](achievements/documentation.md) 27 | * [Flysystem](achievements/flysystem.md) 28 | * [Messenger](achievements/messenger.md) 29 | * [Secrets](achievements/secrets.md) 30 | * [Security](achievements/security.md) 31 | * [Serializer](achievements/serializer.md) 32 | 33 | ## Testimonials 34 | 35 | > So proud we took part in the 1st #Symfony #FOSSHackathons in Brussels alongside more than 50 contributors! Thanks for this awesome #EUFOSSA initiative @EU_DIGIT! Feels great to see all these amazing people working together on the future of the #opensource community 36 | > - SensioLabs, "Créateur de Symfony" 37 | 38 | > It's been great to have 59 contributors from the Symfony, API Platform and Doctrine communities in one place to work on open source projects together. Massive thanks to the @EU_Commission for funding such an event! 39 | > - Michael Cullum, Symfony Security Lead 40 | 41 | > Two years ago I promised @nicolasgrekas to document how to configure the #symfony cache component. This weekend I finally managed to gather all the resources and create the PR. Thank you @EU_Commission and everybody that helped me. 42 | > - Tobias Nyholm, Symfony Core team and CARE team 43 | 44 | > Thanks to #EUFOSSA #FOSSHackathons, @doctrineproject finally managed to throw in some focused work on automating the release flow, hopefully speeding up PR triaging by a huge lot! 45 | > - Marco Pivetta, Doctrine Project Core team 46 | 47 | > Back at home after 2 awesome days with the @symfony and @ApiPlatform ecosystem, I'm glad to be part of this community and this is really pushing me into more contribution thanks to all the people involved ! @bemyappBE @EU_DIGIT @coopTilleuls 48 | > - Hamza Amrouche, API Platform Core team 49 | 50 | ## Resources, tweets and links 51 | 52 | * [Resources](resources.md) 53 | * [Tweets](tweets.md) 54 | 55 | ## Event contributors 56 | 57 |

58 | 59 | [List of contributors](contributors.md). 60 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate 2 | title: EU FOSSA Hackathons 3 | author: EU FOSSA 2 4 | author_url: https://joinup.ec.europa.eu/collection/eu-fossa-2/about 5 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | {% seo %} 11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 | {% if site.github.is_project_page %} 19 | View on GitHub 20 | {% endif %} 21 | 22 |

{{ site.title | default: site.github.url }}

23 |

{{ site.description | default: site.github.project_tagline }}

24 | 25 | {% if site.show_downloads %} 26 |
27 | Download this project as a .zip file 28 | Download this project as a tar.gz file 29 |
30 | {% endif %} 31 |
32 |
33 | 34 | 35 |
36 |
37 | {{ content }} 38 |
39 |
40 | 41 | 42 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /achievements/api-platform.md: -------------------------------------------------------------------------------- 1 | # API Platform Project achievements 2 | 3 | During the hackathon multiple API Platform contributors were present, some of them from the core team and available to help others. 4 | 5 | When it comes to **API Platform** we *merged 20 PR, opened 10 new PR, closed 87 issues and opened 4 new*. Lots of work being done by the contributors, big kudos!! 6 | 7 | Since 2 years ago, API Platform supports subresources, which allows to access a relation from a resource. 8 | It is used a lot and is very powerful, but it has a lot of complexity and is limited. 9 | 10 | With the help of [@vincentchalamon](https://github.com/vincentchalamon), [@soyuka](https://github.com/soyuka) and [@torreytsui](https://github.com/torreytsui), some research was made on how to improve the subresources by reducing the complexity of the implementation and by enabling the POST/PUT operations for the subresources (, ). 11 | 12 | Thanks to [@jewome62](https://github.com/jewome62), it's now possible to populate an object recursively with the serializer to normalize a `DateTimeZone` object, and to get an instanciated object from an associative array of values. 13 | 14 | [@soyuka](https://github.com/soyuka) did a lot to close stale issues, along with [@vincentchalamon](https://github.com/vincentchalamon). 15 | 16 | [@gregoirehebert](https://github.com/gregoirehebert) fixed an issue where the cache was still purged even if there was no GET operation on an ApiResource, and added a way to switch the API Platform version for the documentation (). 17 | 18 | [@Deuchnord](https://github.com/Deuchnord) worked on the client generator, you'll be able to use Mercure on the Vue.js generated client soon. 19 | 20 | [@alanpoulain](https://github.com/alanpoulain) worked on multiple things about GraphQL, MongoDB, and the event system of API Platform: 21 | 22 | - The event system is being reworked to have internal events in API Platform instead of being based on the Symfony ones. It will allow to be decoupled from Symfony and to add events for GraphQL () 23 | - Relay Input Object Mutations Specification (GraphQL) was not fully respected () 24 | - Input messenger was not tested with MongoDB 25 | - Improve the contributing documentation 26 | 27 | [@jfthuillier](https://github.com/jfthuillier) worked on the documentation on how to customize easily the API Platform admin. He also started a PoC on how to use the guesser from react-admin in API Platform Admin. 28 | 29 | [@antograssiot](https://github.com/antograssiot) did work on multiple features and fixes: 30 | 31 | - Apply DenyAccessListener before deserialization 32 | - Be more intelligent in determining property writable/readable link 33 | - Makes URL generation strategy default value configurable 34 | 35 | Same for [@toflar](https://github.com/toflar) who worked on his great improvements, like removing some hard dependencies: 36 | 37 | - Added an additional test for strict types validation 38 | - Removed hard dependencies on Doctrine ODM to run the tests 39 | - Worked on a proposition for a general batch endpoint 40 | - Added support for pagination parameters in subresource docs 41 | 42 | [@Nek](https://github.com/Nek-) worked on features and bugfixes: 43 | 44 | - Ignore property that does not exist for interfaces (identifiers for interfaces) 45 | - Fix error message in identifiers extractor 46 | - Resource resolver for inheritance 47 | 48 | [@soyuka](https://github.com/soyuka) finished something [@simperfit](https://github.com/simperfit) started improving IDs management. 49 | -------------------------------------------------------------------------------- /achievements/box.md: -------------------------------------------------------------------------------- 1 | # Box achievements 2 | 3 | [Humbug Box][box] is an application bundler for PHP apps. It allows one to ship a PHP app into a [PHAR][phar] and distribute 4 | it with ease. 5 | 6 | Over the last few months, Box has been growing in popularity especially within the [Laravel][laravel] community thanks to the 7 | [Laravel Zero][laravel-zero] framework, a spin-off of Laravel more focused on CLI applications. 8 | 9 | In contrast, while Box is being used with a lot of projects making use of [Symfony][symfony] components, it cannot be used – at 10 | least easily, with a standard Symfony application. 11 | 12 | Thanks to this hackathon, [I][me] could, besides working on other Symfony related issues, and with the help of 13 | [@nicolas-grekas][nicolas], [@stof][stof] and [@tucksaun][tucksaun], work on adding support for Symfony to Box. 14 | 15 | The result was: 16 | 17 | - The release of [Box 3.7.0][box-3.7.0] 18 | - 11 issues closed 19 | - 14 pull requests 20 | 21 | This work also resulted directly into: 22 | 23 | - 2 pull requests made on the Symfony repositories (recipes & core) regarding the CLI guards within the Symfony codebase 24 | - Adding additional screening on Symfony regarding the [HTTPoxy][httpoxy] vulnerability (no security issue found during the process) 25 | - 1 issue with a reproducer regarding the [Symfony Console component][symfony-console] 26 | - 1 issue reproduced and solved for the [Symfony CLI tool][symfony-cli] 27 | 28 | Also, more discussions have been made on how to integrate a [REPL][repl] to Symfony with minimal dependencies (which has been 29 | a recurring problem so far) thanks to [PsySH][psysh] and [Box][box]. 30 | 31 | 32 | [box]: https://github.com/humbug/box 33 | [laravel]: https://laravel.com 34 | [laravel-zero]: https://laravel-zero.com/ 35 | [symfony]: https://symfony.com/ 36 | [me]: https://github.com/theofidry 37 | [stof]: https://github.com/stof 38 | [nicolas]: https://github.com/nicolas-grekas 39 | [tucksaun]: https://github.com/tucksaun 40 | [box-3.7.0]: https://github.com/humbug/box/releases/tag/3.7.0 41 | [httpoxy]: https://httpoxy.org 42 | [symfony-console]: https://symfony.com/doc/current/components/console.html 43 | [repl]: https://en.wikipedia.org/wiki/Read–eval–print_loop 44 | [psysh]: https://psysh.org/ 45 | [symfony-cli]: https://symfony.com/cloud/ 46 | [phar]: https://www.php.net/phar 47 | -------------------------------------------------------------------------------- /achievements/console.md: -------------------------------------------------------------------------------- 1 | # Symfony Console achievements 2 | 3 | We fixed some bugs in the Symfony Console component including: 4 | 5 | - [STTY not reset when aborting in QuestionHelper::autocomplete()](https://github.com/symfony/symfony/pull/30883) 6 | - [Inconsistent result for choice questions in non-interactive mode](https://github.com/symfony/symfony/pull/30878) 7 | - [Broken formatting of Table that has a trailing backslash](https://github.com/symfony/symfony/pull/30911) 8 | - [Inability to run most tests independently from each other](https://github.com/symfony/symfony/pull/30986) 9 | 10 | We also started to think about how we could refactor the current word-wrapping algorithm 11 | which has some known design issues. 12 | The fact that the core team members and contributors met helped a lot to move forward. 13 | -------------------------------------------------------------------------------- /achievements/diversity.md: -------------------------------------------------------------------------------- 1 | ## Diversity 2 | During the hackathon we aimed to make the most of being able to easily discuss 3 | several topics that would prove difficult over chat. A few big topics we picked 4 | revolve primarily around SymfonyCon and the community. 5 | 6 | ### SymfonyCon Social 7 | One of the big topics to work on is the social evening of the next SymfonyCon. 8 | Our aim is to improve accessibility with a diverse set of activities to cater 9 | different groups and preferences. Think about a music room where you can dance 10 | versus a board game room where people can have a more quiet interaction with 11 | each other. We also try to come up with ideas to ensure enough seating is 12 | available, non-alcoholic drinks are the primary focus and people don't want 13 | to or have to leave early. 14 | 15 | ### Conference Improvements 16 | When working on improving the conferences, there are bigger and smaller issues 17 | to solve. We have been classifying and refining points to work on ranging 18 | from both physical and digital accessibility to things like food allergies, 19 | scents and fragrance, and [various conference comfort points][1]. We aim 20 | to add a keynote or lightning talk to the opening of the conference in Amsterdam, 21 | to give an explanation and goal of this initiative, and a presentation to 22 | invite people to become a speaker. 23 | 24 | Another point we want to try and improve, is the social experience _during_ 25 | the conference; namely between the talks. By introducing a system based on 26 | [DockerPals][2], we hope to give 'pals' an experience that goes beyond the 27 | technical aspect of a conference. 28 | 29 | ### Full list of achievements 30 | As we have had two days to work on diversity, we managed to work on a fair 31 | amount of topics. Here's a list of short summaries that we've worked on: 32 | 33 | **List of achievements:** 34 | - Arrange the SymfonyCon Social with diversity and inclusivity in mind 35 | - Working on Non-English resources to make the basics of Symfony and the community 36 | more accessible 37 | - SymfonyCon lightning talks: 38 | - Speaker Training to try and motivate (first time) speakers 39 | - Diversity keynote to spread the goal and possibly the statistics of 40 | diversity 41 | - Improving conference accessibility (a11y) 42 | - Using inclusive language at conferences and in the community (Slack, Github, 43 | etc) 44 | - Coordinate with communities outside our own regarding underrepresented groups 45 | - Reviewing, closing and updating open diversity issues 46 | - Conference Pal program to improve the experience of (new) visitors having 47 | difficulties blending in 48 | - Improve lightning talks and unconf track logistics by having someone responsible 49 | available and possibly record the talks 50 | - Improve Symfony documentation on how to review PRs and deal with feedback 51 | on PRs and issues 52 | - Growing the CARE team beyond the scope of the Symfony core team 53 | - Provide feedback to the European Commission about diversity 54 | - Conference badges and stickers indicating things like pronouns, languages, 55 | whether or not you want to talk to people etc. 56 | - Making conference networking easier and more accessible 57 | - Improve digital accessibility for symfony and conferences 58 | - Training content that can be used for mentors, conference pals, etc. 59 | 60 | [1]: https://github.com/symfony/diversity/issues/78 61 | [2]: https://europe-2018.dockercon.com/docker-pals/ 62 | -------------------------------------------------------------------------------- /achievements/doctrine.md: -------------------------------------------------------------------------------- 1 | # Doctrine Project achievements 2 | 3 | ## Automatic releases 4 | 5 | We managed to automate the release and maintenance process for most of 6 | the projects under [Doctrine organisation](https://github.com/doctrine/). 7 | 8 | The result of our design and implementation is currently available for 9 | public review in the [`doctrine/automatic-releases`](https://github.com/doctrine/automatic-releases) 10 | repository. 11 | 12 | Thanks to this development, we will (over the next few weeks) be able to: 13 | 14 | - merge multiple dozen pull requests that have been pending due to 15 | current maintenance availability restrictions 16 | - automatically prepare releases for those merges 17 | - automatically port these patches into newer versions of `doctrine/*` 18 | libraries. 19 | 20 | In addition to that, we will reduce the learning curve needed for new 21 | maintainers to join the project. 22 | 23 | ## DoctrineBundle achievements 24 | 25 | For the DoctrineBundle we focused on finishing integration of new features for 26 | Symfony 4.3, like transports for the Messenger component and a loader 27 | for validation of entities based on Doctrine Mappings. Among the new features is 28 | better support for configuring caches, and lazy-loading entity listeners by 29 | default. 30 | 31 | A group of people discussed possible options to split the bundle in two parts 32 | for integration of DBAL and ORM as separate bundles. This would make using DBAL 33 | only more seamless, especially in combination with Symfony Flex recipes. 34 | -------------------------------------------------------------------------------- /achievements/documentation.md: -------------------------------------------------------------------------------- 1 | # Documentation 2 | 3 | The EU-FOSSA hackathon allowed us to, for the first time ever, gather 4 | 4 of the doc team members together to work on the documentation. Also, 5 | by combining the doc team with all code contributors, we managed to 6 | help code contributors to write doc PRs for their contributions. Being 7 | able to directly help people understand the reStructuredText syntax and 8 | logics of writing docs was a huge help to get more features documented. 9 | 10 | This resulted in a diverse set of achievements. Below is a short summary 11 | of all work done, but please have a look at [all GitHub issues and pull 12 | requests](https://github.com/symfony/symfony-docs/pulls?q=label%3A"⭐️+EU-FOSSA+Hackathon") 13 | handled during the weekend. 14 | 15 | ## Documenting Features that were Missing for Years 16 | 17 | While Symfony puts lots of effort into documenting all new features, 18 | it cannot be avoided that sometimes great features are missed. During the 19 | weekend, new undocumented features were discovered in discussions between 20 | contributors and time finally was found to add some more articles. 21 | 22 | Among this, [@Toflar](https://github.com/Toflar) worked on [documenting the 23 | changes in `.env` files in Symfony 4.2](https://symfony.com/doc/current/components/dotenv#usage) 24 | While the recommendations changed (from `.env.dist` to `.env.local`), the 25 | docs were never updated accordingly. 26 | 27 | [@Nyholm](https://github.com/Nyholm) combined the knowledge of almost everyone 28 | around to write a brand new [Cache guide](https://symfony.com/doc/current/cache.html). 29 | As the component has changed quite often and involved many code contributors, we're 30 | very happy there was finally an occasion where the documentors and code contributors 31 | could combine their knowledge about this topic. This will be a great help for all future 32 | users of caching in Symfony! 33 | 34 | At last, [@heahdude](https://github.com/heahdude) started all enthousiasm this 35 | weekend by creating documentation for the 36 | [Traverse constraint](https://symfony.com/doc/current/reference/constraints/Traverse.html). 37 | This constraint was introduced in Symfony 2.5 (that's 5 years ago!) and I'm not sure if 38 | anyone knew it even existed. Great to find this feature and have it documented now! 39 | 40 | ## Finishing old Pull Requests 41 | 42 | The documentation has around 100 open PRs, most of which are open for months or even 43 | years. During the hackathon, developers were encouraged to finish these old PRs. 44 | [@llaakkkk](https://github.com/llaakkkk) worked on finishing a [new article on Message 45 | Transports](https://github.com/symfony/symfony-docs/pull/11331), [@Toflar](https://github.com/Toflar) 46 | finished [adding Doctrine ORM installation instructions](https://github.com/symfony/symfony-docs/pull/11332), 47 | and some more old PRs were closed and fixed by doc team members with the help of 48 | [@dbrumann](https://github.com/dbrumann), who focussed on the docs during the complete 49 | hackathon. 50 | 51 | ## Documenting new Features 52 | 53 | During the second day, the docs corner became quite busy, as all developers that created 54 | new features on the first day wanted to directly document them. "A feature does not exist 55 | without documentation" became reality this weekend! In total, 39 different authors created 56 | 61 pull requests during the weekend! 57 | 58 | ## The Hackathon ended, the Contributions did not! 59 | 60 | The hackathon gave all participants lots of positive energy, something that became obvious 61 | during the days after the hackathon. The stream of new PRs continued to be impressively high, 62 | with over 24 new pull requests created on Monday (that almost equals the achievements of the 63 | hackathon!). As new contributors have learned how to document their features, our hopes are 64 | high that the documentation will receive more help from all contributors in the future! 65 | -------------------------------------------------------------------------------- /achievements/flysystem.md: -------------------------------------------------------------------------------- 1 | # Flysystem - Symfony integration achievements 2 | 3 | > By Titouan Galopin (@tgalopin) 4 | 5 | In January 2018, I stumbled upon a problem with autowiring: how can one easily and 6 | efficiently autowire different implementations of the same interface? In my 7 | specific case, the problem was linked to the Flysystem library, in which having 8 | multiple different filesystems can happen often. 9 | 10 | This problem lead to a vast conversation throughout 2018 with Nicolas Grekas and 11 | ultimately was the reason to introduce an idea of "semantics" using the param 12 | annotation ([#27172](https://github.com/symfony/symfony/pull/27172)). 13 | 14 | However, this implementation had many issues and was not well suited to 15 | solve the problem. It was later closed when the introduction of named aliases 16 | solved the problem much more elegantly 17 | ([#28234](https://github.com/symfony/symfony/pull/28234)). This feature was released in 18 | Symfony 4.2, in November 2018, and the hackathon was even the occasion for 19 | Grégoire Paris to write its documentation 20 | ([#11339](https://github.com/symfony/symfony-docs/pull/11339)). 21 | 22 | Now that named aliases are available, a much better integration with Flysystem 23 | could be achieved. This is one of the things I worked on during this hackathon: 24 | creating this integration, as an official Symfony bundle for Flysystem. 25 | 26 | You can learn more details about this integration in the dedicated blog post: 27 | [https://titouangalopin.com/introducing-the-official-flysystem-bundle/](https://titouangalopin.com/introducing-the-official-flysystem-bundle/). 28 | -------------------------------------------------------------------------------- /achievements/messenger.md: -------------------------------------------------------------------------------- 1 | # Symfony Messenger achievements 2 | 3 | | | Total | 4 | | ------------------------ | ----- | 5 | | Merged Pull Requests | 14 | 6 | | Opened PRs (remaining) | 4 | 7 | | Closed Issues | 12 | 8 | 9 | 10 | We managed to create, test and merge numerous features, including (not exhaustive): 11 | 12 | - Configuration of AMQP transport is now much more flexible thanks to the `AmqpStamp` (https://github.com/symfony/symfony/pull/30008 & https://github.com/symfony/symfony/pull/30913). It also allows us to bind multiple queues to a single exchange 🚀 13 | - In case of multiple handlers for a given message, we track which handler has been successfully executed to when retrying, we will only re-run the failed handler(s) (https://github.com/symfony/symfony/pull/30020). 14 | - An new (`in-memory://`) transport has been introduced (https://github.com/symfony/symfony/pull/29097). 15 | - The very fresh Doctrine transport has been improved (https://github.com/symfony/symfony/pull/30858, https://github.com/symfony/symfony/pull/30805). 16 | 17 | Even more impressive, we have managed to start tackling the following topics (expected to be merged within the following days): 18 | 19 | - Message routing control at handler level, allowing much more complex and customised asynchronous setups (https://github.com/symfony/symfony/pull/30958). 20 | - Incredible "failed messages" management feature which drastically improves the "ops" experience after failures (https://github.com/symfony/symfony/pull/30970). 21 | - Redis transport relying on streams (https://github.com/symfony/symfony/pull/30917). 22 | -------------------------------------------------------------------------------- /achievements/secrets.md: -------------------------------------------------------------------------------- 1 | # Symfony Secrets 2 | 3 | The EU-FOSSA hackathon was the opportunity to discuss and define a simple 4 | and flexible solution to use sensitive information (like passwords, 5 | authentication keys, ...) in a Symfony application. 6 | 7 | It solves the following common issue: 8 | 9 | > How to define new sensitive parameters without exposing them in a 10 | repository, nor configuring manually a server each time the projet requires 11 | a new env variable. 12 | 13 | Thanks to [@mpdude](https://github.com/mpdude), [@tobion](https://github.com/tobion), 14 | [@nicolas-grekas](https://github.com/nicolas-grekas) and [@jderusse](https://github.com/jderusse), 15 | we defined the use cases that would be covered by that new feature, we designed the main 16 | interfaces and ended up with a working Proof of Concept. 17 | 18 | This subject was proposed in [the related RFC issue](https://github.com/symfony/symfony/issues/27351). 19 | 20 | During the hackathon [@mpdude](https://github.com/mpdude) wrote 21 | [a nice blog post digging into that topic](https://www.webfactory.de/blog/storing-secrets-for-symfony-applications). 22 | -------------------------------------------------------------------------------- /achievements/security.md: -------------------------------------------------------------------------------- 1 | # Symfony Security 2 | 3 | On the subject of security we had some great discussions and research about the state of the 4 | Symfony Security component as it is now. It has not received much love over the past years and 5 | as such has quite some parts that would benefit from a fundamental overhaul. We had a good 6 | look at what competing frameworks offer in this respect, mainly Java Spring Security as it 7 | was the original inspiration for the component, and combined our thought on that with the 8 | results of a recently conducted survey amongst Symfony developers of what they would like to 9 | see. 10 | 11 | As a result of the above we now have a central RFC issue tracking the wishlists and a global 12 | task of what we should strive to achieve before Symfony 5.0 as it will cause some breakage. 13 | 14 | [Click here for the RFC issue](https://github.com/symfony/symfony/issues/30914). 15 | 16 | We also introduced a new password hasher built on top of [Libsodium](https://libsodium.gitbook.io/doc/), 17 | a software library implementing the `Argon2` function, winner of the [Password Hashing 18 | Competition](https://password-hashing.net/). 19 | 20 | [Click here for the Pull Request](https://github.com/symfony/symfony/pull/31019). 21 | -------------------------------------------------------------------------------- /achievements/serializer.md: -------------------------------------------------------------------------------- 1 | # Symfony Serializer Refactoring Plan 2 | 3 | The symfony/serializer component has several normalizer implementations which are rather redundant and hard to maintain. The idea is to refactor the whole process of translating between array and objects and back and rely on PropertyAccess for the logic of how to interact with objects. The discussion is summarized at https://github.com/symfony/symfony/issues/30818. 4 | 5 | The EU FOSSA Hackathon helped us a lot to validate this discussion and begin the refactoring of the serializer. Here is a detailed list on what we have achieved in regards to the plan during these two days: 6 | 7 | ## Tests - In review 8 | 9 | We refactored the tests so that we can ensure a consistent behaviour and test the new normalizer when it is implemented. In that process, we found a couple of bugs that we fixed in Symfony 3.4 where applicable, and 4.2 for newer features. 10 | 11 | See https://github.com/symfony/symfony/pull/30888 12 | 13 | ## Properties extraction - Merged 14 | 15 | A new extension point was provided to be able to extract properties from an object (and not only for a class). This is needed in order to implement future behaviour that needs the data of the object to filter the property list. 16 | 17 | A default implementation using the `PropertyListExtractorInterface` was provided. 18 | 19 | This new extension point has been added under the `@experimental` flag in order to be safe about BC policy if we need to change something. 20 | 21 | See https://github.com/symfony/symfony/pull/30904 22 | 23 | ## Instantiator - WIP 24 | 25 | A new interface and default implementation was added in order to instantiate objects when denormalizing. This can provide a new extension point to allow creating object without constructors, or using Doctrine to instantiate an object like it is done in API Platform. 26 | 27 | There are still some points to cover in order to be BC on the behaviour of the current normalizers. 28 | 29 | See https://github.com/symfony/symfony/pull/30956 30 | 31 | ## Accessor and mutator extraction - In review 32 | 33 | A pull request was created some days / week ago in order to extract read and write information on a property for a class. Extra work was added to this pull request in order to use this new system into the [PropertyAccess component](https://symfony.com/doc/current/components/property_access.html). 34 | 35 | See https://github.com/symfony/symfony/pull/30704 36 | 37 | ## New normalizer - WIP 38 | 39 | A draft pull request was created in order to see the big picture about this new normalizer system. 40 | 41 | See https://github.com/symfony/symfony/pull/30960 42 | 43 | ## Properties extraction implementations - WIP 44 | 45 | Some implementations were done on the new extraction system, a draft PR was created where it currently supports: 46 | 47 | * Allowing attributes (`attributes` context key in existing normalizer) 48 | * Ignoring attributes (`ignored_attributes` context key in existing normalizer) 49 | 50 | See https://github.com/symfony/symfony/pull/30980 51 | 52 | # Final words 53 | 54 | Other features and fixes were done on the serializer, like adding the possibility to populate object on childs, and fixes about incorrect cache when using ignored attributes. 55 | 56 | Thanks to all people that have worked on these topics, it is not finished yet and will be continued but we made some huge steps forward having a rock solid normalization flow. 57 | -------------------------------------------------------------------------------- /achievements/statistics.md: -------------------------------------------------------------------------------- 1 | # Repositories statistics 2 | 3 | ## Code (overall) 4 | 5 | | | Total | 6 | | ------------------------ | ----- | 7 | | Merged Pull Requests | 107 | 8 | | Proposed Pull Requests | 181 | 9 | | Closed Issues | 79 | 10 | | New Issues | 143 | 11 | 12 | ## API Platform (all repositories) 13 | 14 | | | Total | 15 | | ------------------------ | ----- | 16 | | Merged Pull Requests | 20 | 17 | | Proposed Pull Requests | 10 | 18 | | Closed Issues | 87 | 19 | | New Issues | 4 | 20 | 21 | ## Security 22 | 23 | * 2 security issues were fixed 24 | * 3 other security issues were worked on 25 | 26 | ## Documentation 27 | 28 | | | Total | 29 | | ------------------------ | ----- | 30 | | Merged Pull Requests | 35 | 31 | | Proposed Pull Requests | 17 | 32 | | Closed Issues | 11 | 33 | | New Issues | 3 | 34 | 35 | ## Diversity 36 | 37 | | | Total | 38 | | ------------------------ | ----- | 39 | | Existing issues closed | 17 | 40 | | New issues created | 12 | 41 | | Diversity PRs merged | 3 | 42 | | Documentation PRs merged | 3 | 43 | 44 | For more information, see [the diversity achievements](diversity.md). 45 | 46 | ## Continuous Integration builds 47 | 48 | The below graph shows the activity of the continuous integration pipeline during and after the event. 49 | 50 |

Travis CI builds graph

51 | 52 | ## 'EUFOSSA Hackathon' labelled issues and pull requests 53 | 54 | ### Main Symfony repository 55 | 56 | * [Issues](https://github.com/symfony/symfony/issues?utf8=%E2%9C%93&q=label%3A%22%E2%AD%90%EF%B8%8F+EUFOSSA+Hackathon%22) 57 | * [Pull requests](https://github.com/symfony/symfony/pulls?utf8=%E2%9C%93&q=label%3A%22%E2%AD%90%EF%B8%8F+EUFOSSA+Hackathon%22) 58 | 59 | ### Main API Platform repository 60 | 61 | * [Issues](https://github.com/api-platform/api-platform/issues?utf8=%E2%9C%93&q=label%3A%22EU-FOSSA+Hackathon%22+) 62 | * [Pull requests](https://github.com/api-platform/api-platform/pulls?utf8=%E2%9C%93&q=label%3A%22EU-FOSSA+Hackathon%22+) 63 | 64 | ### Symfony documentation repository 65 | 66 | * [Issues](https://github.com/symfony/symfony-docs/issues?utf8=%E2%9C%93&q=label%3A%22%E2%AD%90%EF%B8%8F+EU-FOSSA+Hackathon%22+) 67 | * [Pull requests](https://github.com/symfony/symfony-docs/pulls?utf8=%E2%9C%93&q=label%3A%22%E2%AD%90%EF%B8%8F+EU-FOSSA+Hackathon%22+) 68 | -------------------------------------------------------------------------------- /assets/api-platform-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eufossa/symfony-hackathon-2019/2d644a2b268312976fb614caab1b4524116ba336/assets/api-platform-logo.png -------------------------------------------------------------------------------- /assets/ci-stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eufossa/symfony-hackathon-2019/2d644a2b268312976fb614caab1b4524116ba336/assets/ci-stats.png -------------------------------------------------------------------------------- /assets/eu-fossa-logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eufossa/symfony-hackathon-2019/2d644a2b268312976fb614caab1b4524116ba336/assets/eu-fossa-logo.jpg -------------------------------------------------------------------------------- /assets/eu-fossa-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eufossa/symfony-hackathon-2019/2d644a2b268312976fb614caab1b4524116ba336/assets/eu-fossa-logo.png -------------------------------------------------------------------------------- /assets/group-photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eufossa/symfony-hackathon-2019/2d644a2b268312976fb614caab1b4524116ba336/assets/group-photo.png -------------------------------------------------------------------------------- /assets/symfony-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eufossa/symfony-hackathon-2019/2d644a2b268312976fb614caab1b4524116ba336/assets/symfony-logo.png -------------------------------------------------------------------------------- /contributors.md: -------------------------------------------------------------------------------- 1 | ### Event Contributors 2 | #### GitHub usernames ordered alphabetically 3 | 4 | 1. [alanpoulain](https://github.com/alanpoulain) 5 | 1. [alcaeus](https://github.com/alcaeus) 6 | 1. [alexander-schranz](https://github.com/alexander-schranz) 7 | 1. [antograssiot](https://github.com/antograssiot) 8 | 1. [chalasr](https://github.com/chalasr) 9 | 1. [curry684](https://github.com/curry684) 10 | 1. [dbrumann](https://github.com/dbrumann) 11 | 1. [dbu](https://github.com/dbu) 12 | 1. [deguif](https://github.com/deguif) 13 | 1. [derrabus](https://github.com/derrabus) 14 | 1. [Deuchnord](https://github.com/Deuchnord) 15 | 1. [dmaicher](https://github.com/dmaicher) 16 | 1. [drupol](https://github.com/drupol) 17 | 1. [dxvargas](https://github.com/dxvargas) 18 | 1. [fabpot](https://github.com/fabpot) 19 | 1. [fancyweb ](https://github.com/fancyweb ) 20 | 1. [greg0ire](https://github.com/greg0ire) 21 | 1. [GregoireHebert](https://github.com/GregoireHebert) 22 | 1. [HeahDude](https://github.com/HeahDude) 23 | 1. [hhamon](https://github.com/hhamon) 24 | 1. [jderusse](https://github.com/jderusse) 25 | 1. [jewome62](https://github.com/jewome62) 26 | 1. [jfhovinne](https://github.com/jfhovinne) 27 | 1. [jfthuillier](https://github.com/jfthuillier) 28 | 1. [joelwurtz](https://github.com/joelwurtz) 29 | 1. [linaori](https://github.com/linaori) 30 | 1. [llaakkkk](https://github.com/llaakkkk) 31 | 1. [lsmith77](https://github.com/lsmith77) 32 | 1. [lyrixx](https://github.com/lyrixx) 33 | 1. [maidmaid](https://github.com/maidmaid) 34 | 1. [michaelcullum](https://github.com/michaelcullum) 35 | 1. [michellesanver](https://github.com/michellesanver) 36 | 1. [mpdude](https://github.com/mpdude) 37 | 1. [Nek-](https://github.com/Nek-) 38 | 1. [netlooker](https://github.com/netlooker) 39 | 1. [nicolas-grekas](https://github.com/nicolas-grekas) 40 | 1. [Nyholm](https://github.com/Nyholm) 41 | 1. [ocramius](https://github.com/ocramius) 42 | 1. [OskarStark](https://github.com/OskarStark) 43 | 1. [ostrolucky](https://github.com/ostrolucky) 44 | 1. [pborreli](https://github.com/pborreli) 45 | 1. [simperfit](https://github.com/simperfit) 46 | 1. [soyuka](https://github.com/soyuka) 47 | 1. [sroze](https://github.com/sroze) 48 | 1. [sstok](https://github.com/sstok) 49 | 1. [stof](https://github.com/stof) 50 | 1. [tgalopin](https://github.com/tgalopin) 51 | 1. [theofidry](https://github.com/theofidry) 52 | 1. [TimoBakx](https://github.com/TimoBakx) 53 | 1. [Tobion](https://github.com/Tobion) 54 | 1. [toflar](https://github.com/toflar) 55 | 1. [tucksaun](https://github.com/tucksaun) 56 | 1. [vincentchalamon](https://github.com/vincentchalamon) 57 | 1. [voidtek](https://github.com/voidtek) 58 | 1. [vudaltsov](https://github.com/vudaltsov) 59 | 1. [wouterj](https://github.com/wouterj) 60 | 1. [xabbuh](https://github.com/xabbuh) 61 | 1. [yceruto](https://github.com/yceruto) 62 | -------------------------------------------------------------------------------- /resources.md: -------------------------------------------------------------------------------- 1 | # Resources and links 2 | 3 | ## European Commission 4 | 5 | - [Co-creating the future of Open Source](https://ec.europa.eu/info/news/co-creating-future-open-source-eu-fossa-2-hackathons-2019-mar-21_en) 6 | - [Joinup](https://joinup.ec.europa.eu/collection/eu-fossa-2/about) 7 | - [First EU-FOSSA Hackathon as it happened](https://ec.europa.eu/info/news/first-eu-fossa-hackathon-it-happened-2019-may-03_en) 8 | 9 | ## Web pages and articles 10 | 11 | - [EU FOSSA Hackathons](https://eufossahackathon.bemyapp.com) 12 | - [The Symfony and API Platorm hackathon is coming](https://symfony.com/blog/the-symfony-and-api-platform-hackathon-is-coming) 13 | - [EU Fossa-2 Hackathons — Co-creating the Future of Open Source](https://medium.com/@bemyapp/eu-fossa-2-hackathons-729adb8e4122) 14 | - [Report from the Symfony EU-FOSSA Hackathon event](https://www.webfactory.de/blog/symfony-eu-fossa-hackathon-brussels-2019) 15 | - [First EU-FOSSA Hackathon about security, PHP, Symfony and API Platform](https://not-a-number.io/2019/eufossa-hackathon-security-php-symfony) 16 | - [EU-FOSSA Symfony Hackathon](https://medium.com/@yanick.witschi/eu-fossa-symfony-hackathon-6866d7c0c422) 17 | - [The 1st EU-FOSSA Symfony Hackathon](https://blog.sulu.io/the-eu-fossa-symfony-hackathon) 18 | - [Retour sur le Hackathon EU-Fossa Symfony / API Platform (FR)](https://les-tilleuls.coop/fr/blog/article/hackathon-eu-fossa-2019) 19 | 20 | ## Photos and videos 21 | 22 | - [BeMyApp album](https://www.flickr.com/photos/bemyapp/sets/72157679752994498) 23 | - [Twitter fosshackathons photos](https://twitter.com/hashtag/fosshackathons?f=images&vertical=default&src=hash) 24 | - [Interview with Bernard Schussek (aka webmozart)](https://www.youtube.com/watch?v=mISGpHAxxCI) 25 | -------------------------------------------------------------------------------- /tweets.md: -------------------------------------------------------------------------------- 1 | # Engaging, influential and exciting tweets 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | --------------------------------------------------------------------------------