Increasingly, models are becoming first class core assets, and model-driven engineering requires novel techniques, tools, and practices to face the globalization of software development in the (always more) pervasive IT world. This paper proposes a framework for synchronous and asynchronous concurrent and collaborative modeling. Synchronous collaborative modeling offers services for sharing the modeling space, models, documentation, and configuration, while asynchronous collaborative modeling offers services for supporting merging of models modified and edited separately by different software engineers. Our approach is based on the observation that it is in general more convenient to store differences between subsequent versions of a system than the whole models of each stage.