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 |
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 |
Today, morethan 50 happy #Symfony contributors are converging to Brussels for the 1st of a series of #FOSSHackathons organised by invitation from the #EUFOSSA initiative @EU_DIGIT. Thank you all \o/ If you're not part of it this year, there will be more, keep sending PRs :)