Divide et impera.
This is one of the basic rule of programming. Divide your problem in smaller pieces and on the long run you will be happy:
- Code re-usability
- Maintenance
- Elegance?
Also if you are working on an opensource project your main goal would be to find someone else who is interested in it and that could help you. It is easier to find someone interested in something really specific than to find someone who wants to adopt your super-huge app which does a lot of beautiful things that nobody else like.