Types of users
==============

For the Modelverse, we identify three types of users.
It is possible for a user to switch between these three different types over time.
The remainder of this documentation is however split up based on these three types: modellers, language engineers, and developers.
Due to the design of the Modelverse, language engineers must also know all about modelling: languages are created through modelling.
Similarly, developers must know about all knowledge of the modeller and language engineer, as they must implement operations for them.
Nonetheless, there is still a different focus and different requirements for their domain knowledge.

Modeller
--------

The majority of the users of the Modelverse will fall in the category of modellers.
These users make use of the languages provided by other users, by instantiating them.
While this is likely the biggest category of users, they will mostly be shielded from the Modelverse by the MvI.
For modellers, the documentation is focused on instantiating existing languages and modifying models or executing processes on specific models.

Language Engineer
-----------------

Language engineers are the second category of users, who create languages to be used by the modellers.
Language engineering in the Modelverse is similar to modelling, as metamodels are models themselves.

Modelverse Developer
--------------------

The final category of users is that of Modelverse developer.
Developers of the Modelverse will modify the internals of the Modelverse, but, as the Modelverse is explicitly modelled, they often make use of modelling and language engineering operations as well.
Nonetheless, various files are stored externally from the Modelverse, and can be modified without the Modelverse (e.g., bootstrap code).
