Dropbox

Our counterintuitive fix for Android path normalization

Oct 27, 2020Gary Guo
Our counterintuitive fix for Android path normalization
SummaryAI, from the source post

This post details the technical challenges and solutions for inconsistent path normalization logic between Dropbox's servers and its Android client. It explains how specific decisions regarding space removal and Python 2.5's unicode.lower() function led to discrepancies, particularly with international characters. The post then outlines the risks associated with the obvious fix (matching server logic) and explores alternative solutions like an ID-based file system and feature-gating with Stormcrow. It highlights the limitations of Stormcrow's initialization timing and proposes a pragmatic solution using a global static variable to gate the modified normalization logic, which is then cached on disk for subsequent app launches. This approach allowed for a safe, low-cost, and low-risk fix to a critical user-facing bug.