5 ms·
This looks like a massive project that you can just throw people at. Putting 1000 people on this would get you a 1000x speedup over making it a one-man project.
by ahomescu1 13y ago
This looks like a massive project that you can just throw people at. Putting 1000 people on this would get you a 1000x speedup over making it a one-man project. OTOH, you'd need a very good design from experienced people (OS experts, web browser experts, Java/JavaScript compiler people, etc).
- calineczka 13y ago> Putting 1000 people on this would get you a 1000x speedup over making it a one-man project What? Do you seriously believe in that?
- cronin101 13y agoIf you tell 1000 people, collectively at least one person will believe that.
- deleted 13y ago[deleted]
- ahomescu1 13y agoYes, see the parallel comment. There are many independent pieces in an entire OS: kernel, drivers, browser, all the applications, libraries etc. Most of them are weakly connected (except maybe the platform libraries). Are you saying someone couldn't develop a POSIX-compliant kernel and libc in parallel with the apps that run on it?
- eob 13y agoYou might be interested in this book. It's required reading in many CS curricula: http://www.amazon.com/The-Mythical-Man-Month-Engineering-Anniversary/dp/0201835959 http://www.amazon.com/The-Mythical-Man-Month-Engineering-Ann...
- ahomescu1 13y agoSomeone already brought it up in a sibling comment.
- digitalzombie 13y agoyou should read mythical man month...
- ahomescu1 13y agoI know about mythical man month, but this is a good counter-example: a massive project that breaks up into many small independent pieces: an OS kernel, drivers, a browser (with a JavaScript compiler), a Java VM, all the applications (each one developed independently). You can have separate teams working on each of those. EDIT: Ubuntu has about 38k amd64 packages in total [1]. Those are mostly developed by independent teams, so they could be re-developed in parallel. While Android isn't that big, it still is broken up into many sub-components, along with a lot of external dependencies [2]. 1 - http://askubuntu.com/questions/111753/how-many-i386-and-amd64-packages-exist http://askubuntu.com/questions/111753/how-many-i386-and-amd6... 2 - https://android.googlesource.com/ https://android.googlesource.com/
- count 13y agoYou realize the mythical man month is specifically about building a massive project - a computer operating system, with all of those 'independent' parts and 'small pieces'?
- ahomescu1 13y agoYes, but it doesn't say that it can't be done by a large team. If you break down a project the right way, it can be parallelized. I think a good specification helps a lot. For example, integration is much easier if the OS kernel and C library are coded to POSIX standards, than to whatever the project itself chooses. Same thing applies for other standards, like programming languages (Java, JavaScript). You can have a JVM team implement the VM separately, then come in at the end and plug it into the big system. Also, what the MMM says regarding big projects is that "adding manpower to a late software project makes it later", not that it's never useful. As a counter-example, let's look at Android. Are you saying that all of Android was written by a small team of 10 people?
- weland 13y agoI really hope I never work with you.
- ahomescu1 13y agoI really think you misunderstood me, please read my other responses.
- weland 13y agoI didn't. Your logic is built on the fallacy that the following are independent: > An OS kernel, drivers, a browser (with a JavaScript compiler), a Java VM, all the applications (each one developed independently). They aren't. The kernel and the drivers can't be built in parallel. You can only build the browser after you build the kernel and the driver (best-case scenario you can make the OS POSIX-compliant and begin to develop some of the userspace along, on another POSIX-compliant OS, but it's not trivial and there will be additional porting effort no matter what). Ditto for JVM, and you will have additional integration effort between the JVM and the browser.