What is this Interview Script for?
It is a 60 minutes interview to provide a basic understanding of how and why multiple forges are used by a software developer during the development life cycle of a given software.
Essential parts of the interview are:
- Introduction (to explain to the participant who you are, why you are talking to them)
- Get consent (to establish trust with the participant)
- About the participant (to learn about the participant, and their organisation)
- Using multiple forges (to find how and why multiple forges are used to get a glimpse of the associated mental model).
- Conclusion questions
- way to take notes (paper, or laptop)
- audio recorder (optional)
The themes between brackets ([Fragility], [Lock-in], etc.) relate to the fedeproxy project description, under the "Technical challenges and barriers" chapter. They are the themes that are identified a-priori. Most questions relate to these themes but the theme itself should not be explained during the interview: it is out of scope. It is quite possible that some of the themes will be entirely discarded by participants. And that other themes will emerge after the affinity mapping is complete.
Hello there, my name is Loïc Dachary. I'm a software developer and daily user of software forges for the past twenty years. This year I thought it would be interesting to allow forges to talk to each other (i.e. be federated instead of isolated) so that people can use the forge they like best instead of being forced to use the forge on which the project is hosted. A grant was approved to work on this idea and the first order of business is to conduct User Research and figure out what to do. With an open mind: the conclusion may very be that it's all in my head :-) And this is where your contribution is extremely valuable: this interview is about your personal experience, past and present, when you are using multiple forges during the development lifecycle of a sofware. This will be the evidence showing what matters to you and, when aggregated with other people experience, it will tell us what needs to be done.
Get consent for recording the audio of the session
I would like to ask you for your permission to record our discussion today. Recording allows me to focus my attention on you. I will use this recording to make notes of our discussion today. Once I've made the notes, I will delete the recording.
May I record our discussion?
Get consent for questions and sharing notes
You can answer my questions to the extent that you feel comfortable. You're free to choose not to answer a question, or to stop the interview at any moment. OK?
We want to keep information from interiews available for the fedeproxy UX team members. With all our interview we remove personally identifiable information, like names, organisations, countries. We will send you the notes for review and wait for your approval to share them. It would be perfectly ok for you to decide at that time that you don't want them shared with anyone after all.
Do you have any questions before we begin?
About the participant
- For how long have you been a developer?
- What % of your paid work involves developing software?
- Do you develop software on your own time?
- How would you describe the routine of a Free Software developer? What is the lifecycle of a typical contribution to a Free Software?
- (prompt) what about writing code? How do you provide the code with others?
- (prompt) how do you manage dependencies?
- What is a software project made of? Is it just the code in git? Or also the mailing list? More?
- (prompt) are the comments on pull/merge requets part of the project or can they be discared after it is merged into the project?
- (prompt) is the mailing list part of the software project? Would loosing the archives negatively impact further development?
- What software project are you working on at the moment?
About using multiple forges
- Which forges do you use?
- (prompt) A list of all that you ever used
- (prompt) Which one do you currently use?
Dependencies management [Lock-in][No interoperability]
- Which software project involves using more than one forge?
- (prompt) are the dependencies of a project all hosted on the same forge?
- (prompt) do you always file issues about dependencies on the same forge?
- How do you manage your software project dependencies?
- (prompt) strict dependency only, no copy
- (prompt) under which circumstances and why do you chose to copy the project instead of depending on it?
- When you file an issue on a dependency
- How do you work around it?
- How do you fix it?
- (prompt) what if there is no release of the dependency to fallback to and you need to patch it?
- How do you keep track of the issue in the context of the project that depends on it?
- How do you get notifications about what happens on a forge?
- (prompt) to follow releases? patches you contributed?
- How do you get in touch with the user of a forge without using the forge?
Migration [Lock-in][No interoperability][Fragility]
- How do you manage a mirror of a software project?
- What do you mirror?
- (prompt) git content? issues?
- What do you mirror?
- Have you ever used the import/export function of a forge?
- (prompt) when was the last time?
- (prompt) which forge was it?
- Did you run import/export multiple times? Or was it a one shot?
- How do you migrate the software project participants?
- Did you ever migrate from one forge to another?
- What motivated the move?
- (prompt) better UX?
- (prompt) forge shutdown?
- Could you describe the steps?
- Did you keep the other project around for some time?
- Did you loose data or users?
- What motivated the move?
- Did you loose software projects because the forge was shutdown?
User preferences [Lock-in]
- Are there forges that you choose to not use?
- Are there forges that you try to avoid unless force to?
- What forge do you prefer to use?
- (prompt) user experience
- (prompt) other preferences
Blockages [Exclusion] and [Censorship]
- Do you participate in the development of a project without using the forge they are hosted on?
- (prompt) do you contribute code? file issues?
- Do you know people who contribute to a project without using the forge they are hosted on?
- (prompt) could you describe what they contribute and how?
- Do you know of forges that exclude people based on where they live?
- (prompt) have you heard of people being banned from a forge?
Bots [No interoperability]
- Do you use bots interacting with a software project on a forge?
- Did you ever write a bot for a forge?
- Did you write integration tests for this bot?
- Do you know of bots/tools that would allow you to seamlessly do operations on multiple forges?
- (prompt) zuul or other CI
- How do you keep track of what is happening in the forks of a given project?
- How do you merge a pull/merge request that is in a fork?
- Who do you need to trust with the integrity of the software you publish?
- How do you ensure your commit is not rewritten?
- (prompt) do you sign your commits?
- Are you aware of the SHA1 collision attack and how it could help rewrite the history of a repository?
- Imagine you have a magic wand. You can use it to help you work with multiple forges on a given software project. What would that be?
- (prompt) Why do you want to change that?
- Is there anything that works well when working with multiple forges on a given software project?
Thanks very much for your time and patience. As a little thank you, I'd like to offer you a https://solokeys.com/.
Is there anybody you know who would be willing to answer this interview? Would it be OK to introduce me to them so we can talk?