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

For the Modelverse, we identify three types of users.
It is possible for users to switch between these three different types over time.
The remainder of this documentation is split up based on these three types of users: 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 abstracted from the Modelverse wrapper by their 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 language to be used by the modellers.
Language engineering in the Modelverse is similar to modelling, as metamodels are models themselves.

Developer
---------

The final category of users is that of developer.
Developers of the Modelverse will modify the internals of the Modelverse, but, as the Modelvers is explicitly modelled, this often takes the form of a modeller as well.
Nonetheless, the various files are stored external to the Modelverse, and can be modified without the Modelverse.
Similarly, some core languages are also included in the Modelverse, which requires developers to be familiar with language engineering.
