Issue 1:
People have voiced the need for form input filtering various times. Filtering could be added to the Form component very easily by creating an (optional) extension that enables the following API:

$builder->add('content', 'textarea', array(
// a single filter or an array of filters
'filters' => new StripTags(),
));

The big question is which library to use for filtering. Upon short research, I came upon two existing alternatives:

Zend\Filter

appears mature

potentially brings in other ZF2 baggage, which I don't care about once ZF2 supports Composer properly and unless the baggage creates further disadvantages

DMS-Filter

very young

supports annotation-based filtering in POPOs

Does anyone know further filtering libraries? Does anyone have experience with Zend\Filter in non-ZF(2) projects?

Comparison Sheet

Zend\Filter
DMS-Filter
Comment

Alnum
Alnum
both support Unicode, Zend has special treatment for Japanese, Chinese and Korean

Alpha

Boolean
Boolean
DMS does a simple cast, Zend's implementation is more complicated, but supports localized "yes" and "no" as well as leaving the original value unchanged unless it evaluates to false (use case?)

Callback

Digits

File\LowerCase

File\Rename

File\UpperCase

Float

HtmlEntities

Int
Int

PregReplace

supports Unicode

StringToLower
ToLower
both support Unicode

StringToUpper
ToUpper
both support Unicode

StringTrim
Trim
both allow the specification of a character list to be trimmed

StripNewlines
StripNewlines

StripTags
StripTags
Zend allows to specify allowed tags, attributes and comments; DMS only allowed tags (using `strip_tags` internally).

Not a filter, but a transformer

BaseName

Compress

supports BZ2, GZ, LZF, RAR, TAR and ZIP

Decompress

see Compress

Decrypt

supports MCrypt and OpenSSL

Dir

Encrypt

see Decrypt

File\Decrypt

see Decrypt

File\Encrypt

see Decrypt

Null

RealPath

Word\CamelCaseToDash

Word\CamelCaseToSeparator

Word\CamelCaseToUnderscore

Word\DashToCamelCase

Word\DashToSeparator

Word\DashToUnderscore

Word\SeparatorToCamelCase

Word\SeparatorToDash

Word\SeparatorToSeparator

Word\UnderscoreToCamelCase

Word\UnderscoreToDash

Word\UnderscoreToSeparator

Issue 2:
Description

In the past, services were public or private (I'm ignoring "synthetic" services and other edge cases):

Public: these are the services that you can use in your app. Also, you can $this->get() them in controllers.

Private: don't use these services in your own code! These are "internal" services created by Symfony or third-party bundles. In modern Symfony versions you can't get them with $this->get() because they have random service IDs.

Also, private services don't appear on debug:container. It makes sense.

Problem

In recent Symfony versions we made all services private by default. In my opinion, the problem is that we don't really want to make services private. In fact, those services are used in your app, so their "nature" is to be public. We make them private so you can't do $this->get() to get them (and to unlock some performance improvements).

Proposal

What if we do this:

Remove all features to get services with $this->get() in controllers and commands and force to always inject services. This is a BC break, only possible in Symfony 5.

Restore the previous behavior: all services are public, unless you make them private for some reason. Private services don't appear on debug:container

Remove the concept of "hidden services", which are now "private services" again.