Copy-pasting code, you must be insane
Apparently, at the IC, the owner is not the only person with a weird brain. We have decided together on the copy-paste approach. It is the least worst option we’ve found.
A possible alternative is to have one big library and reuse it in every project. This approach presents two major problems. Firstly, an update in this library would impact all our projects. More importantly, making it extensible (i.e. customisable) would take a lot of effort. We would have to define what are the core-common features, what’s extensible and how. For Django developers, picture lots of abstract models to extend correctly and various beloved mixins and configuration files.
Another possible solution is to make many external libraries. We would have one for each Glamkit feature: one for the EventPage with their scheduling, one for the Exhibition pages, one for our logo wall, and another 20ish. Now, what happens to the common CSS styles, do we split it into 20 libraries or is that library 21? What about small utilities common to these libraries? Multiplying dependencies and maintaining them wouldn’t be worth the effort. Furthermore, the exact same issue remains: making these libraries extensible would take a lot of work.
With a copy-paste, we don’t have extensibility issues. We can just change the pasted-code. With a copy-paste, we don’t have update issues, we can change what’s in Glamkit without having to worry about the current projects. The changes are only for future projects.
The only drawback with that approach is that our projects do not take advantage of GLAMKit updates. While this is true, in practice, it hasn’t been an issue so far.