Recently, the Appium project, a large open-source application, decided to rewrite its codebase using ES2015, the newest version of JS. Not only that, we wanted to do a complete architectural overhaul, and in the process avail ourselves of all of the amazing new practices we'd heard lauded during conferences over the previous years. We went for it whole hog, and six months later we had our new application---all 45 modules' worth. It was beautiful! And it solved many of our problems. But alas, it came with new ones we had not anticipated in our headlong rush towards the hottest new ideas.
In this talk, I'll tell the story of what worked and what didn't. What were the goals of our rewrite and how did our choices deliver on those goals? Specifically, how did ES2015 and the "many modules" approach work for us? What could have worked better and where are we going from here? What tools did we use or invent to cover over any drawbacks of our approach?
A degree of caution is important for any rewrite, especially when you are tempted to choose new languages or patterns because of their tantalizing buzzwordiness. On the other hand, there are many things you cannot know before you jump in, complete a project, look back, and ask how it went. What we learned is that the accepted Node wisdom, at least as we internalized it, doesn't apply to every kind of application. We needed to try things out and allow reality to humble us in order to eventually find the right patterns for our specific use case. Please, allow the false starts and dead ends we encountered to help you when you come to a rearchitecture of your own!