Reinvent the wheels
It is no doubt that the most ideal way of developing application programs is to directly rely on existing open source projects. However, due to lacking documentation, poor documentation quality or our limited programming skills and software engineering crafts, the integration work will be technically too difficult and thus becomes impossible. Then it is mandatory and meaningful for us to reinvent the wheels.