Designing and Shipping a Platform – Joshua Goodman
By wangwill
- Common Language Runtime, Group Program manager
- Why & How?
- Platforms give your users far more features and flexibility
- Platforms create ecosystems
- Windows
- iPhone
- Windows 7 mobile will be better platform but there will be way less apps than iPhone
- Strategy – Build your app on your platform
- Forces you to be extensible enough – great architecture
- High test burden
- Are pieces of your app completely replaceable?
- More extensible
- Extensions can interfere
- Upgrades more likely to break things
- Browsers: Three Strategies
- Firefox
- Build platform, then build application on top
- IE
- Well defined addin model for toolbars
- Safari
- Why high compatibility is so hard
- .Net 1.1 is compatible with 1.0
- Install 1.1 and Outlook will crash, not their code but customers do not care
- Layer cake approach
- .Net 2.0, 3.0, 3.5 on top of each other
- Side by side approach
- Old stuff uses old thing, new stuff uses new thing
- .Net 4.0 is different from 2.0, 3.0, & 3.5. It is on the side
- Use shim layer
- Window 7, runs XP in virtual machine
- Apple uses emulator of old OS
- Flash Player 9
- Two virtual machines, AVM1 & AVM2
- Still hard
- They still have to compatible or developers will not use new platform
- Side by side libraries, how about all the libraries you bought for the older version?
- App-Compat Flags
- App tells what version it wants
- Need to write code for old and new platforms
- What about libraries?
- In process side-by-side for .Net 4.0
- You can run both 4.0 and 2.0 in the process
- Frozen Designs
- Once you build it, you are stuck
- Hard to remove APIs
- Hard to change behavior
- Get it right first time or live with your mistakes
- For an app, much easier
- You can look for a the hooks in an app, not so with a platform
- Best Practices:
- Mocks: Mock a deployment and test all
- Compatibility
- Team must get to same page on compatibility bar
- Compat council makes decision
- Use your Apps
- Keep 300 applications running
- Test against them – find breaking changes
- Analyze the IL to see how often functions are called
- Use source code of apps that build on top when available
- Design Process
- Understand root of partner problem
- Try to solve it without changes
- Partners jump to a solution but not the best solution
- Politely request data
- Hard Problem: Obsoleting
- Removing it breaks partners
- Mark as “obsolete”
- Discourage use
- Hope some day people will stop using it
- Platform Growth
- It will keep growing
- Moving towards more layered approach
- Hard to shrink
- Conclusion
- Get it right the first time
- Architect for compatibility
- My thoughts: We don’t build platforms, but we can learn form them as we add modules with the Archie Team.
This entry was posted on October 12, 2009 at 6:44 pm and is filed under Patterns & Practices, Patterns & Practices Summit 2009. You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.