---
# System prepended metadata

title: The setup hurdle
tags: [design, roadmap]

---

After a user has managed to set up an environment and install AiiDA _and_ its services, they still have to:

- Set up a profile with `verdi setup`
- Set up a computer with `verdi computer setup`
- Configure the computer _transport_ with `verdi computer configure`
- Set up a code with `verdi code setup`

* [Back to general coding week notes](https://hackmd.io/@aiida/B1Zy7_uPh)
* [Figma chart](https://www.figma.com/file/ezgFzQeLRQJQkcTJgICCHK/AiiDA-setup?type=whiteboard&node-id=0%3A1&t=8UTkefAzr5dxU2Il-1)

### Related Issues
- Making it possible to fix problems in computers/codes after setup:
https://github.com/aiidateam/team-compass/issues/12
- Make it easier for users to setup known computers and codes:
https://github.com/aiidateam/team-compass/issues/4
- Simplify the interface of verdi computer setup:
https://github.com/aiidateam/aiida-core/issues/4981

For the following commands we need to rethink what parameter are necessary, which are optional, and which ones are prompted for.

## Discussion

### Profile

Figure out how to distribute between what is necessary to provide when the profile is created (setup) and what can be appended afterwards (configure).

- Provide a list of what attribute which correspond to which of setup/configure.
- Figure out what are the technical limitations / dificultuies.

Deliverable -> AEP


### Computer

We want to distinguish 3 different types of "settings":

- **Fixed:** These need to be specified at creation time and cannot be changed (are these even necessary for computers? should eveything be changeable?)
- **Changeable:** These need to be specified at creation time but can be changed by the user later.
- **Optional:** These are not set during creation time (unset or default?) but can be set manually by the user.

#### SSH:
can we skip the configure step (or most of the aspects that make it a separate step) by having aiida connect using the feature of paramiko to auto-load the info in the `.ssh/config` file (we need to be careful in doing so in a backwards compatible way).

Tale of warning: We still have `paramiko` in the way, which can influence (so it is not exactly guaranteed that "aiida behaves the same as the ssh").

### Code

**Problems:** 

1. New users: mess up code setup -> have to fix things, but can't, have to delete code and set up new one.
2. Clusters update their environments and code versions fairly frequently. So users need to update things such as the location of the codes.
3. When using tools like the code registry, we often want to allow the user to specify some information that is not a direct input of `verdi code setup` (e.g. some setting in the `prepend_text`).

For [1-2], we have to think about allowing users to simply change the details of a code, see https://github.com/aiidateam/team-compass/issues/12.

For [3], templates discussed for the code registry could be applied for this.