"My point would be the same with any other language, and
it's not rocket science : keep projects within precise functional
boundaries, and use carefully designed API whenever you have to cross those
boundaries. Don't think about building a project that spans those
boundaries, let people who know how to handle the stuff from abroad handle
it. If you're interested into changing your scope, then start a new project."Link