Git & GitLab Workflow: Issues and Kanban Board

This guide establishes the standard development practices for tracking work and collaborating within the MineTwin codebase. Proper version control is the backbone of our development process, ensuring code stability and team coordination.

1. Creating an Issue

Effective issue tracking is fundamental to successful software development. GitLab Issues serve as a powerful tool for planning, tracking, and managing tasks, bugs, feature requests, and overall project progress. By clearly defining and organizing issues, teams can collaborate more efficiently, prioritize work, and ensure that all necessary tasks are addressed. This section will guide you through the process of creating well-structured issues in GitLab.

1.1. Gitlab Homepage

To begin creating a new issue, navigate to your project’s homepage on GitLab. In the top navigation bar, locate the + (plus) sign icon. This icon is a quick access point for creating new items within GitLab. Click on it, and from the dropdown menu, select New Issue.

Menu with options: New issue, New merge request, New snippet, accessed via a plus icon in a software interface.

1.2. New Issue

When creating a new issue, it is highly recommended to structure your description using the Situation, Complication, Resolution (SCR) framework. This approach ensures clarity, provides necessary context, and guides effective problem-solving. The issue description should clearly outline:

  • Situation: Describe the current state or background. What is the context in which this issue arises? What is the normal behavior or expectation?

  • Complication: Explain the problem, challenge, or deviation from the expected. What is going wrong, or what is the new requirement that complicates the current situation? Provide enough detail for someone unfamiliar with the issue to understand the core problem.

  • Resolution: Propose a desired outcome or a suggested solution. What do you want to achieve by addressing this issue? If you have a specific fix in mind, describe it here. This helps the assignee understand the goal and assess whether the proposed resolution is feasible or if an alternative approach might be better.

By adhering to the SCR framework, you provide a comprehensive overview that helps assignees quickly grasp the issue, assess its impact, and determine the most effective path forward.

New issue creation window with fields for title, type, description, assignee, milestone, and due date.

1.3. Select Assignees, Labels, and Due Dates

After detailing the issue, the next crucial step is to properly categorize and assign it. This ensures accountability, facilitates workflow management, and helps in prioritizing tasks.

  • Assignee: In the New Issue window, use the Assignee dropdown menu to assign the issue to the appropriate team member. Always assign an issue to yourself before starting work. This prevents two developers from working on the same feature simultaneously. If you are unsure who should own a task, default to the Project Manager (e.g., Marina).

  • Labels: Below the assignee section, you will find the Labels field. Use them to specify the Type of problem (e.g., bug, feature), Impact or Priority (e.g., critical, high), and Workflow stage (e.g., to-do, in-progress).

  • Due date: Set realistic due dates to help project managers track milestones and ensure timely sprint deliveries.

Issue creation form with fields: Assignee, Milestone, Labels, Due date, and buttons for Create issue and Cancel.

Effective use of labels helps in prioritizing and organizing issues, making it easier to track progress on boards and generate reports. After setting the assignee, labels, and due date, click on Create issue to finalize the process.

2. The Kanban Board and Issue Organization

The Kanban board is our visual workflow management method. It is designed to optimize efficiency, limit work-in-progress, and provide visibility. Effective project management relies on actively organizing and filtering this board.

  • Creating Lanes: As your project grows, you can create new lanes to represent specific states (e.g., "Code Review," "QA Testing," "Blocked").

  • Filtering by Labels: Because every issue must have labels for Type, Priority, and Status, you can use these labels as open-ended filters to isolate your specific areas of focus on the board.

Kanban board with columns: Open, Doing, Closed; displaying tasks with labels, dates, and project group identifiers.