After reading different sources about the Ports & Adapters architecture including Alistair Cockburn\'s original article I am still not sure about the definite meaning of the
From my point of view, after reading the original article and watch some talks by Alistair Cockurn ("Alistair in the Hexagone"), I think the correct approach is what you would call "all inside", i.e. in both inbound and outbound communication, the ports are "inside" the adapters. The adapters are between the external actors that interact with the app, and the the ports. Ports belong to the app.
For inbound communication, the actor (driver actor) triggers the communication using a driver adapter. This adapter calls a driver port of the app, requesting the app to do something.
For outbound communication, the app triggers the communication with a driven actor by defining and calling a driven port. This port is a contract (usually an interface) of what the app needs in terms of the purpose. This port is implemented by an adapter, that communicates with the external actor.
Dependencies should be:
Driver Actor --> Driver Adapter --> Hexagon <-- Driven Adapter <-- Driven Actor
Ports belongs to the Hexagon:
Driver Ports are the API offered by the Hexagon to Driver Adapters.
Driven Ports are the SPI needed by the Hexagon, implemented by Driven Adapters.
I struggled a lot too with this sentence you mention, which appear in the original article:
"As events arrive from the outside world at a port, a technology-specific adapter converts it into a usable procedure call or message and passes it to the application."
It is saying that driver ports are "outside" driver adapters. But reading the whole article and watching the talks, I think that it isn't that way. What the sentence calls "port", is simply the interaction between the external driver actor and the adapter. The "port" should be the interaction between the adapter and the app ("...passes it to the application").