In order to model the behaviour of open concurrent systems by means of Petri nets, we introduce open Petri nets, a generalization of the ordinary model where some places, designated as open, represent an interface of the system towards the environment. Besides generalizing the token game to reflect this extension, we define a truly concurrent semantics for open nets by extending the Goltz-Reisig process semantics of Petri nets. We introduce a composition operation over open nets, characterized as a pushout in the corresponding category, suitable to model both interaction through open places and synchronization of transitions. The process semantics is shown to be compositional with respect to such composition operation. Technically, our result is similar to the amalgamation theorem for data-types in the framework of algebraic specifications. A possible application field of the proposed constructions and results is the modeling of interorganizational workflows, recently studied in t...