The problem with that logic is that things work differently on different browsers, operating systems, devices, etc. So, I can test and retest on different devices, or I can use an engine which no one will notice in load time anymore because it's still very small compared to the rest of the game assets. Granted, the functions are specific, but any of us are pretty used to calling other peoples functions by now. Also, it's just basically a waste of time to redo collision detection etc, and what about if you want to use physics. People have spent years on those physics engines. Do I write my own physics engine also? What about all the sound problems known for html5? Sure, I can write a very simple game with it, but I don't think that type of thing is as useful as it once was. We all are used to using other people's libraries now days.