Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Maintaining a multi-platform (iOS and Android) code base
1 point by its_so_on on Jan 19, 2012 | hide | past | favorite | 2 comments
In the mobile space, the iOS and Android versions of the same app typically have substantially different code-bases (for obvious reasons), unless they are not actually native but merely a wrapped web app. Assuming going native is the correct development strategy for teams large enough to direct resources at each platform, what is the best strategy for maintaining these two code bases? I can think of several off-hand.

1) Picking a true cross-platform stack or technologies. (In the desktop, an example would be creating a Python app with a cross-platform widgets library. A more common example is doing everything through the browser).

2) Port. Complete development of the version with better expected returns first (e.g. iOS) and then port the version (or have a porting team do it, while the original team is continuing development on the next version, and after that's done that gets ported). This reminds me of desktop apps that targeted Windows first and then had a team prepare a Mac version. These days it becomes less and less clear what "one" platform to target first.

3) ifdef type "cross-platform" hell. Maybe the code base should be in a single "cross-platform" branch, and every feature should be added incrementally such that it is only committed when it works on every platform. Is this even possible between iOS and Android?

4) parallel development. There is no porting, just two teams, an iOS team and an Android team, and they don't communicate much, except for working from the same requirements.

5) a core functionality team that makes something multiplatform, and then has the code-base finished by an iOS and Android team respectively? The why-Microsoft-didn't-port-SQL-Server-to-Unix article linked here a few days ago mentions this: "For example, do you follow a philosophy that says the core team just worries about Windows and throws the Windows product over the wall to a team that adapts it to *nix? Or do you reorganize everything so you have a core team that builds multi-platform software and then teams that adapt it to the various platforms (which is what true multi-platform companies do)?"

http://hal2020.com/2011/07/27/porting-microsoft-sql-server-to-linux/

It seems that although desktop software is becoming less relevant, native mobile apps are as relevant as ever. What are your best experiences of substantial multi-platform iOS and Android development? Or native Mac and Windows software for that matter!

I am especially looking for high-level strategies that will scale to larger teams while continuing to target both iOS and Android, so if you have advice on how to start out small while targeting both these platforms, with an expectation to grow the team(s) substantially, I'd love to hear it!



Sadly, it's called HTML5 : DOM + javascript + CSS + AJAX Google and Apple and Microsoft have locked things down pretty good, otherwise. The best portable application appears to be Mozilla compatible.


Hi, thanks for this response! I definitely agree with you that it's easiest... and yet, startups are creating awesome iOS native apps, and awesome Android native apps - in the same office. I would love to hear more from the experience of these types of startups.

No disagreement with you on your points.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: