Skip to main content

Research Documentation

This directory contains research, analysis, and strategic insights generated during the development and improvement of Teams for Linux.

Research Context

These documents capture in-depth analysis and strategic insights that inform development decisions and provide context for major features.

Contents

Ready for Implementation

  • System Performance Research - Renderer overhead, main process I/O, and metrics infrastructure

    • Identifies 10 performance-sensitive patterns (MutationObserver sprawl, polling, sequential I/O)
    • Proposes lightweight startup/memory instrumentation with zero dependencies
    • Status: Research complete, prioritized implementation plan included
  • Electron 40 Migration Research - Migration from Electron 39.5.1 to 40.6.0

    • Covers breaking changes, Node.js 22→24 impact, Chromium 142→144 changes
    • ESLint 10 section already shipped in v2.7.8
    • Status: Research complete, deferred to v2.8.0 (staying on Electron 39 for stability)
  • Notification Sound Overhaul Research - Replace node-sound, consolidate notification config

    • Evaluates Web Audio, data URI, and system command approaches
    • Proposes phased plan: replace native addon, add custom sounds, Web Audio fallback
    • Status: Research complete, targeted for v2.8.0
  • MQTT Microphone State via Speaking Indicator - Publish speaking/silent/muted state to MQTT

    • Wires existing speaking indicator WebRTC detection into MQTT via microphone-state-changed IPC
    • Completes original request from #1938 (@vbartik's RGB LED home automation)
    • Status: Research complete, ready for implementation (depends on PR #2299 merged)

Awaiting User Feedback

  • MQTT Extended Status Investigation - Extended MQTT status publishing

    • Phase 1 Shipped: Infrastructure, LWT, call state, camera, microphone, and screen sharing topics
    • Screen sharing null sourceId fix: PR #2193 landing in v2.7.11
    • Screen sharing broader feature: PR #2144 awaiting user confirmation (#2107)
    • Phase 2 Deferred: Reliable mute/speaking state via WebRTC getStats() is now proven (see speaking indicator PR #2299); wiring to MQTT awaits user demand
  • Graph API Integration Research - Microsoft Graph API for enhanced features

    • Phase 1 POC Complete: Token acquisition, calendar/mail endpoints working
    • Phases 2-3: Enhanced features and user-facing UI not started

Reference

  • Project Management Tools Research - Evaluation of Beads, release-please, release-it, and other tooling for solo OSS maintainer workflows. Status: Research complete, no implementation decision.

Historical (Migrated)

  • Configuration Organization Research - Configuration system improvements
    • Phase 1 Complete: Documentation reorganization
    • Phases 2-3: Nested structure migration happening incrementally

Shipped (Retained for Reference)

  • Custom Notification System Research - Alternative notification modal system
    • MVP shipped in v2.6.16: toast notifications with auto-dismiss and click-to-focus
    • Phase 2 dropped: notifications worked on maintainer's machine but not for the requesting user
    • Retained because future requests for custom notifications should reference the lessons learned here

Implemented Features (Research Removed)

Research documents are deleted once a feature is fully shipped and the document provides no ongoing reference value. The ADRs and git history preserve the decisions and context.

FeatureVersionReference
Issue-PR Release Linkingv2.7.11GraphQL closingIssuesReferences query; closes: metadata in changelog files. See PR #2317
Codebase Review (March 2026)v2.7.xCode quality, maintainability, performance, and DX review; findings addressed incrementally
Issue Triage Botv2.7.xAll four phases implemented; migrated to standalone Go service. See ADR-018 and github-issue-triage-bot
Dependency Cleanupv2.7.10Removed node-sound, lodash, electron-positioner; project now has 6 production deps
Speaking Indicatorv2.7.11WebRTC getStats() for three-state mute/speaking detection. See PR #2299
Electron-Updater Auto-Updatev2.7.6ADR-011; research covered electron-updater integration
External Changelog Generationv2.7.xADR-005; fork detection + release automation shipped
Screen Lock Media Privacy---Closed (#2106); no user interest; work preserved in branch
Tray Icon Logout Indicator---Archived (#1987); user not responding; work preserved in branch
External Browser Authentication---Not feasible; Teams manages OAuth internally (#2017)
GNOME Search Provider---Not recommended; latency too high for acceptable UX (#2075)
Code Quality Hardening (Phases 1-3)v2.7.5Logging hygiene, resilience, input handling, IPC hardening, CI/CD gates
Wayland/X11 Ozone Platformv2.7.4Force X11 by default due to Electron 38+ Wayland regressions
Quick Chat / Chat Modalv2.7.4ADR-014, ADR-015
PII Log Sanitizationv2.7.2ADR-013
DOM Access Restorationv2.5.2Hybrid API + DOM approach for React compatibility
Architecture Modernization---Rejected (DDD too complex) --- incremental refactoring adopted instead
MQTT Commandsv2.6.xBidirectional MQTT support for toggle-mute, toggle-video, etc.
Calendar Data Exportv2.6.xMQTT get-calendar command
useSystemPicker---Rejected --- ADR-008

Purpose

These documents capture strategic insights, comprehensive analysis, research findings, and context that inform development decisions and provide rationale for major features.

Document Lifecycle

Research documents follow this lifecycle:

  1. Active Research Phase: Document findings, analysis, and recommendations
  2. Decision Phase: Use research to inform final decisions (implemented or rejected)
  3. Archive Phase: Move content to appropriate location after decision:
    • Implemented features: Create ADR if significant, update feature docs, delete research
    • Rejected features: Create/update ADR with concise decision record, delete research
    • Superseded research: Close with reference to superseding document
  4. History: Git commit history preserves full investigation context

Contributing Research

When adding new research documents:

  1. Follow naming convention: Use descriptive, kebab-case filenames
  2. Include context: Date, scope, and purpose of analysis
  3. Link related documents: Cross-reference relevant files
  4. Update this index: Add entries for new research documents
  5. Provide actionable outcomes: Include clear recommendations or decisions