GUIDO Is a conversational agent designed to operate locally, accessible through an executable file, enabling the identification and management of community smells in software development communities on GitHub.
GUIDO is based on a previous tool for the detection of community smells, CADOCS, originally proposed by Voria et al. in a research paper published at ICSME 2022.
The documents folder contains various artifacts that facilitate understanding GUIDO, including instructional videos on its usage.
In the following section, we report the main steps for installing GUIDO on your machine.
Follow these steps to create a Personal Access Token on GitHub:
-
Navigate to GitHub:
- Login into your GitHub account.
-
Access Settings:
- Click on your profile picture at the top right corner, and select Settings from the dropdown menu.
-
Personal Access Tokens:
- In the left sidebar, click on Developer settings.
- Then click on Personal access tokens.
- Select Tokens (classic).
-
Set Expiration:
- Choose an expiration for your token. You can select a specific duration or opt for No expiration.
-
Set Permissions:
- Assign the necessary permissions for your token. Typically, you might need to enable permissions such as
repo
,write:discuss
,project
, anduser
.
- Assign the necessary permissions for your token. Typically, you might need to enable permissions such as
-
Generate Token:
- Once you've configured the settings, click on Generate token.
- You will see a string representing your new Personal Access Token. Copy and securely store this token—it's important!
IMPORTANT: Remember, your Personal Access Token is like a password—keep it secure and do not share it publicly.
Now, you should also install Docker.
If your machine is ARM64-based, you should opt for these steps:
- Run the following command:
docker pull leopoldotodisco/guido-backend:latest
- Run the command:
docker pull leopoldotodisco/guido-frontend:latest
- Configure and start backend container backend via Docker Desktop:
- Open Docker Desktop.
- Go to section Images.
- find the image leopoldotodisco/guido-backend:1.0 and click on Play button.
- In additional options, add PAT in Env Variables and put the value of the PAT that you generated before.
- Set 5005 as port number.
- Configure and start backend container backend via Docker Desktop:
- In Docker Desktop, Go to section Images.
- find the image leopoldotodisco/guido-frontend:1.0 and click on Play button.
- Set 3000 as port number.
- Start your brand new containers and open localhost:3000 in your browser
If your machine is x86-based, you should opt for these steps:
- Run the following command:
docker pull benedettoscala/guido-backend
- Run the command:
docker pull benedettoscala/guido-frontend
- Configure and start backend container backend via Docker Desktop:
- Open Docker Desktop.
- Go to section Images.
- find the image benedettoscala/guido-backend and click on the Play button.
- In additional options, add PAT in Env Variables and put the value of the PAT that you generated before.
- Set 5005 as port number.
- Configure and start backend container backend via Docker Desktop:
- In Docker Desktop, Go to section Images.
- find the image benedettoscala/guido-frontend and click on Play button.
- Set 3000 as port number.
- Start your brand new containers and open localhost:3000 in your browser
- Clone our Repository
- Go to folder "docker" and add your PAT in dockerfile
- Run the following commands:
docker-compose build
docker compose up
- Open localhost:3000 in your browser
The entire CADOCS tool is composed of three modules:
- GUIDO (this repository): The desktop application
- CADOCS link: it is the original tool.
- csDetector link: the augmented and wrapped version of csDetector, used in our tool to detect community smells and other socio-technical metrics. The link is referred to our modified versions of the tool.
The complete list of detectable community smells—through the use of csDetector—and the associated refactoring strategies.
Community Smell | Description | Refactoring Strategies |
---|---|---|
Organizational Silo | Siloed areas of the community that do not communicate except through one or two of their respective members. | Restructure the community, create a communication plan, mentor, conduct a cohesion exercise, monitor, and introduce a social-rewarding mechanism. |
Black Cloud | Information overload is due to a lack of structured communications or cooperation governance. | Create a communication plan, Restructure the community, and Introduce a Social sanctioning mechanism. |
Radio Silence | One interposes herself into every formal interaction across more sub-communities with little flexibility to introduce other channels. | Restructure the community, Create a communication plan, Mentoring, Cohesion exercising, Monitoring, and Introduce a Social sanctioning mechanism. |
Prima Donnas | A team of people is unwilling to respect external changes from other team members due to inefficiently structured collaboration. | NA |
Sharing Villainy | Cause of a lack of information exchange, team members share essential knowledge such as outdated, wrong, and unconfirmed information. | NA |
Organizational Skirmish | A misalignment between different expertise levels of individuals involved in the project leads to dropped productivity and affects the project's timeline and cost. | NA |
Solution Defiance | The development community presents different levels of cultural and experience background, leading to the division of the community into similar subgroups with completely conflicting opinions. | NA |
Truck Factor Smell | Risk of significant knowledge loss due to the turnover of developers resulting from the fact that project information and knowledge are concentrated in a minority of the developers. | NA |
Unhealthy Interaction | Long delays in stakeholder communications cause slow, light, and brief conversations and discussions. | NA |
Toxic Communication | Toxic interactions and conflicting opinions among developers could push them to leave the project. | NA |