WT Durham had never met Bruce, former sales executive and new COO of Prepackaged Pixels, before he paid a visit to WT’s department. They were responsible for maintaining the licensing API for the company’s toolkit bundle, which included their prized platform-agnostic GUI. The bundle was used for internal projects as well as for third-party licensing, and customers often bought the entire bundle just to use the GUI. Bruce wasn’t too happy about that.
“We’ve conducted several customer surveys,” Bruce said. “Two-thirds of our customer base only want the GUI toolkit, not the rest of our bundle.”
“Isn’t that a good thing?” WT replied. “We get a big markup on selling our toolkits as a bundle.”
“We could capture more of the market if we sell the GUI toolkit separately,” Bruce responded. “We need the ability to license just the GUI.”
“We’ll need to refactor our API.” WT did some mental calculations. “It’ll take our team six months.”
“All twelve of you working for six months?!” Bruce shouted. “Just to make the installer work with one toolkit? That thing is 150MB! I’ll bet the installer would be one-tenth of that size with just the GUI toolkit.” Bruce made it clear that single-toolkit licensing – and decreasing the size of the installer – would be their priorities.
WT wasn’t sure where Bruce, who had no programming experience, had gotten that information about the install size, but had a suspicion it was the head of the GUI toolkit team.
“He called me first.” Mindy, senior developer for the GUI toolkit, welcomed WT into her office. “Probably right after he got promoted.”
“You told him the installer size was 150MB?”
“I was making nice. Everyone complains about the size of the installer.”
WT sighed. “We inherited the installer codebase from a contractor almost ten years ago and built the licensing API on top of it. I told Bruce it would take six months to refactor for single-toolkit licensing, but who knows how long it would take to figure the base installer code out.”
“Maybe you can just trim it down?” Mindy suggested. “Fork the installer, tear out anything not related to the GUI, and stovepipe the licensing code for now. That would take less than six months, right?”
WT convinced the rest of his team to give the stovepipe solution a try. At worst, it would be a month wasted. At best, it would save them months of development time, allowing them to refactor the licensing code – and the underlying installer – properly later on.
While every part of the installer was audited, they would analyze their installation statistics, seeing exactly what environments they needed (and which they could chuck). If a particular environment fell below 5% of their installation base, they’d throw it out.
As the audit progressed, it became very apparent just why their installer was 150MB. Binaries were distributed in both 32- and 64-bit varieties, and each API namespace had its own binary. There were also optimized binaries for three different compilers. Each of these were duplicated again for debug and release versions. In all, 24 binaries per library were shipped in the installer.
And the installation stats? Nearly every installation was for the 64-bit GUI toolkit, using two of their three supported compilers. Out of 24 copies of each library, they needed only two.
Bruce’s demeanor changed when he heard that the licensing team could deliver a GUI-only installer in a month. “I knew it wasn’t that hard!” he said, not knowing at all how hard it was.
Unfortunately, sales of the overpriced bundle – which included the GUI as well as their other toolkits – fell, as everyone bought the discounted GUI-only installer instead. Without their marked-up product sales, Prepackaged Pixels faced their first quarter without a profit. Bruce weathered the storm, but WT and others fell victim to layoffs.
Several years later, WT bought a license for Prepackaged Pixel’s toolkit bundle for a freelance project. The company no longer sold GUI-only licenses, so WT had to download the entire bundle – all 150MB of it. Prepackaged Pixels had kept their business model intact, but hadn’t been able to de-bloat their installer.