Skip to content

Latest commit

 

History

History
182 lines (123 loc) · 8.48 KB

13-Amlan-Kumar Nandy-LabelLab-Improve-Team-Management-and-Collaborative-Experience.md

File metadata and controls

182 lines (123 loc) · 8.48 KB

LabelLab

Student Info

Project Abstract

labellab

LabelLab is an image analysis and classification platform for machine learning (ML) researchers. Originally built to classify images of elephants, it has been developed over the years and is now a full-fledged ML utility tool that is able to classify all kinds of images and carry out a number of ML-related tasks in a project-based manner while teaming up with other researchers.

Work Summary

LabelLab mainly consists of 3 sections -

  1. Backend built using Flask
  2. Frontend built using React.js
  3. Mobile Application built using Flutter

Albeit a couple of features that were exclusive to the mobile application, most of my work across GSoC 2021 spanned across all 3 sections of the project.

Expanding Team Management

  • Now inside a project, the project admin can create multiple teams, each having a specific functionality, and add users to them.
  • These teams can later be updated or deleted by an admin.
  • These teams can only perform actions inside a project that are authorized by their role (role-based access control). E.g. - A models team member can only work with models inside that project.
  • The project owner can make other users admins for better project management. The admin priviledge can also be revoked by the owner when necessary.
  • Project structure was modified to accomodate multiple admins.
  • Admins form a superset of all other role and can perform any actions inside a project
  • Now, a member can also voluntarily leave a project. Earlier, they had to removed by the admin.

Related PRs -

Implementing Project Activity Tracking

  • Created a Project Activity Tracking System which helps keep track of all changes inside a project such as -
    • Adding/removing members
    • Adding and labelling images
    • Creating labels
    • Creating and training models
    • and much more...
  • Each activity log is associated with a particular category (general, images, labels etc) and a particular user (the one who made that change).
  • These activity logs can be filtered for analysis of the progress of the project.
    • category-specific - View activity logs of a particular category.
    • member-specific - View activity logs of a particular project member.
    • team-specific - View activity logs of a particular team.
    • entity-specific - View changes made to a particular entity (image, label, model etc)

Related PRs -

Implementing Team-wise Chat System

  • Built a Team-wise Chat System for team members to converse about project progress.
  • Used web sockets (Socket.io) for maintaining a live feed of messages with minimal lag

Related PRs -

Migrating Mobile Application to Flutter 2.0

  • Migrated the mobile application to Flutter 2.0 along with full support for null safety.
  • Fixed dependency issues
  • Upgraded all packages to their null-safe versions.
  • Replaced packages which didn't support null safety with alternatives

Related PRs -

Creating a Backend Service Selection Utility

  • Created a backend service selection utility in the mobile application.
  • This allows the user to enter the URL of the LabelLab API instance that the application should use.
  • This provides the functionality to connect to multiple backend instances without much tinkering.

Related PRs -

Fixing Bugs in Mobile Application

  • Fixed existing bugs present in the mobile application
  • Implemented minor features that were missed earlier

Related PRs -

Writing Unit Tests

  • Wrote unit tests for the mobile applications using Mockito.
  • The tests covered all API endpoints that are being used by the mobile application.

Related PRs -

Writing documentation in GitHub Wiki

  • Originally, all of the project's documentation was present in a single readme.
  • Moved that documentation to the Project Wiki.
  • Also added documentaion for the new features that were implemented during GSoC '21.

Related PRs -

What Covered

  • Migrated mobile application to Flutter 2.0 with null safety
  • Created a backend service selection utility in mobile application
  • Fixed bugs in mobile application
  • Wrote unit tests for all endpoints used in mobile application
  • Expanded team management in backend, frontend and mobile
  • Implemented project activity tracking in backend, frontend and mobile
  • Implemented a team-wise chat system in backend, frontend and mobile
  • Wrote documentation for the entire project on Github Wiki

What left

I managed to complete all my milestons within the coding period, and also implemented a few additional features. But there are a few other features the project could benefit from such as -

  • Creating initialization scripts for the project
  • Writing unit tests for the backend
  • Fixing dependencey versions and warnings in the frontend

Reference