You're right about Signal having an open source client of course. It's a closed platform because of the 'no-forks-allowed' stipulations.
As both the client _and the server_ is open source though it's entirely possible to do things like Signal<->Matrix bridges.