I'm having a bit of a problem with a web based application that I've created. Anyone that's visited my homenode may have seen something called
SICKnotes being advertised. Hindsight has set in and I'm now thinking that I need to rewrite this thing, and I was wondering if someone could give me some insight before I set off on this adventure.
Here's the problem, SICKnotes is meant for systems administrators and the like as basically a bbs which instead of having general topics, has a system definition (i.e. ip address, model, etc). You put all of your systems in there and then you can get an inventory list and post notes to the system about things that you've changed and whatnot. I released this under the GPL on
freshmeat and of course a bunch of people have written wondering what it would take to be able to do routers or other things. Looking back, I now realize that that should have been my goal in the first place, to provide a framework for shops to customize this. But, I didn't, I created it to scratch my itch and it does.
So, here's the real question, how do I make this so that people can customize it? I've got basically 2 thoughts on how I can go about doing this (although neither is perfect or completely clear to me yet). The first would be to basically create "modules" for each "type" that you want to support, if you want to track systems, you write a module in perl defining how to display the form to add a new system, how to edit a system, how to view it, including the necessary sql and html. This seems a little rough to me, both because I haven't worked out all of the details and because it assumes or expects that the person using it can/will program it. So much of this stuff is shop specific that you'd have to, as well as create database tables and whatnot.
The other method that I could see puts all of the work on me. I somehow create a simple language which does the same thing as mentioned above (how to add/edit/view), but in a very simplistic way.
PULLDOWN table:SOMETABLE,id,topic
TEXT "Default" NAME:foo SHOWAS:"System name"
or something like that (I'm far from having anything worked out for that).
Can anone tell me how to do this the right way? Are there any modules that would help me solve this problem? Please, any insight is appreciated, I'm lost and frustrated and not looking forward to a full rewrite.