OK, this is actually a long story, but I'm going to cut it short. (I'll try, anyway.) The story itself is more about people than about programming, but I wanted to put it to you guys and see what you think. Sorry for filling your timeline, but I had to get it out of my system...
Read as much to get the sense; after that I've given my main point in the final section.
The long story
XYZ is the school I graduated from this year. The school is an alternative one, focused on community-living and things like that. They have an "Open Library" which is basically open to the students. There is no permanent librarian sitting there; the students go and enter the borrows and returns into the library themselves. However, the software they are using is very old. I mean, it uses a MS Access Database, is written in .NET or something like that, and doesn't work on versions of Windows newer than XP (don't even ask about Linux!).
So, since I do programming as a hobby, they asked if I could design a new software for them. Which I did, using the latest but not (I hope) unstable-ly new. Python, Flask, MongoDB, and Material Design. It basically runs as a server, and you access it from the browser, like Koha and others.
Then the trouble began.
Basically, they weren't certain about my programming skills, so they called Foo and Bar to "manage" the project. Foo knows a bit of coding (C and the like), and used to help out when problems arose (and they did, frequently) with the old project. Bar used to work with databases (relational ones) some while ago. Both happen to be parents of children in the school—and the school also involves parents in several areas so they would be able to easily come and fix the program if something went wrong during the running.
But both Foo and Bar's experiences seemed hopelessly out of date. For example they didn't get Python's naming conventions, and wanted models to be designed like
class UserGroup(Model):
group_name = CharField()
group_ordering_position = IntegerField()
...if you get what I mean. Furthermore, they didn't want to use MongoDB ("which is not even RDBMS"), and instead wanted models that Bar had designed, which, though they may be best for MySQL, already seemed to be using too many hacks in the planning stage itself. Stuff which Mongo does elegantly with lists and the like. Anyway, I said No, and we reached a compromise: the software is to work with both MySQL and MongoDB. The reason is that I was also putting it as an open-source project on GitHub, so I wanted at least other users to have the benefits of Mongo. This all caused a long delay when I couldn't code because I didn't know what database to code for.
Finally we restarted work. Then, Foo and Bar began wanting to see the code I was doing...and "understand" it. Looking at screenshots, they started giving suggestions like "make the model name show on top of the CRUD views", which I couldn't do just yet as I was still on backend logic and hadn't yet got to overriding the Flask-Admin templates. I think they were getting slowly getting put off because I wasn't following every single code-change they asked for.
To make it worse, they didn't understand the whole concept of DRY and OOP inheritance. So once, they were looking at the Flask-Admin-importing admin.py
code on GitHub and saying "hey, I can't scroll down!"—and I was trying to tell them "there is no more to scroll down—that's the end of the file!" Finally they gave up saying they can't understand this code and they feel I'm not taking their inputs and there's too much time-constraints and they would look for alternative solutions and the didn't want my code any more. This is when it's almost workable—right up till the data import scripts!
Links
I saved the links till the end so you get an idea of the history first. Here they are.
- GitHub repo: badrihippo/growlin
- Online demo, running on OpenShift (user Europa has admin access; sign in and then click on the username in the navbar to get the link. only "Luna" has a password, which is
luna
.)
My situation now
Foo and Bar are clear they don't want the code. The Librarian trusts their opinion as "software experts". If it was that simple, I would have said "no-go" long ago. But the thing is, I know the school. I know all the students personally (it's a small school), and I would have liked to give them a good software to work with. I wonder if there's any way of gently getting Foo and Bar to know their views are outdated and convincing the place to reconsider using the software?
Second point: I now have this semi-usable software as an open-source project. I'm thinking of stripping off the MySQL stuff, going completely Mongo, and focusing on completing it for others to use. But do you guys think it's still worth writing the software? Do you think someone out there will find it useful?
I've heard that an open-source project never really dies, and I hope the same can be said of mine ☹