Wednesday, May 28, 2008

How does Google manage Android's code

In a recent article, I read that Google currently uses Perforce as its source code management tool for Android. The reason why they chose this particular tool can be found in a comparison of other SCM systems (also Wikipedia offers more information if needed). In addition, it is worth mentioning that Android consists of around 8 million lines of Linux code, and about 11 million lines of Java/C++ and maybe some Python code. Since they want to open source around 8.6 million lines of code, Google will move away from Perforce when it comes to managing Android code, and use Git instead, an "open source version control system designed to handle very large projects with speed and efficiency".

As a side note, one particular difference between Git and other SCMs is how Git handles data corruption. Most of SCMs have no checksums, and if they have, it's not really strong (CRC usually). Git goes further, and, beside using CRC and Adler32, it also utilizes cryptographic hashes. If you are interested in a book on Git, you have to wait a bit more.

2 comments:

Jakub Narebski said...

I think the most important reason for choosing Git among other OSS distributed version control systems is the fact that Linux kernel, which is as you wrote substantial part of Android code, uses Git as its SCM. I wonder if they would try to use submodules...

Mihai Fonoage said...

By the size and complexity of the code, they clearly had to modularize it, break the system into different components, in a way as to make it more manageable and easy to use by different teams/groups. In addition, I believe that parts of Android, such as Dalvik, SQLite, etc, could be seen as standalone components that might be shared by different groups. From the link you posted, the submodule feature could definitely be used in such cases.