We present Alice, a functional programming language that has been designed with strong support for \emph{typed open programming}. Alice incorporates concurrency with data flow synchronisation, higher-order modularity, dynamic modules, and type-safe pickling. Based on these mechanisms it provides a flexible notion of component, and high-level facilities for distributed programming.