Understanding the software stack