Okay. I've settled on using PHP on IIS, simply because the workstations automatically authenticate and all I have to do is check $_ENV["REMOTE_USER"]. Strong security with the minimum of fuss.

I've gotten a thousand lines of code down, which is about three-quarters of the framework. It talks to mySQL, provides calls like set_title(), do_header(), and add_nav_entry(), and loads modules. Each module is a separate file in the plugins/ directory that calls register_plugin(). It's coming together very nicely; I plan to work on the security system tomorrow (fine-grained permissions on each module like read, edit, and delete).

Anyone have any ideas for report generation? I'm thinking I could make a PDF file and send it back to the client; that would give me a lot of control over printing (which is the Big Thing) when printing reports. Should I use PDFlib directly from PHP? Write TeX and convert? Hmm...

Also, I think Big Brother is an interesting name, though I don't think the staff will go with it. _________________I don't believe in witty sigs.

Ah, well, PDFlib's API hasn't changed much since I poked around a little around version 2. I printed out the manual (incidentally it was 142 pages -- the exact same number as the database structure) and it seems rather straightforward.

Besides, most of the reports they want are done with a fixed-width font (normal and bold styles) with a few grey boxes and a few black lines._________________I don't believe in witty sigs.

I came up with a name that I think I can run with: LISSARD. LISSARD Integrates School Systems' Administrative Reporting Data. Anyway, I registered a new Sourceforge project, so I should start getting stuff in CVS either Friday or Monday. (I don't think they handle new project registration on weekends, but I could be wrong.)

I got about half a ream of paper on the guts of That Thing, as well as half a ream of paper that came with That Thing. The manual contains screen captures of pretty much every screen in the UI and tells you what every box and button does... further, the UI lines up pretty much 1:1 to the underlying data structure. So, I have pretty much all the data I need.

This makes me wish I could program more than "hello world". I certainly can understand your frustration, but the recreation of the conversation had me laughing pretty hard._________________Slowly I turned. Step by step.

Anyway, I opened up the master database file, ran some silly tool, and printed 142 pages detailing the structure of and relationships between all of the tables. I then got a three-ring binder, some multi-color sticky page marker thingies, three different colors of pens and a comfy chair and stared at it for a while. The data structures aren't all that bad, really, and I think life would be better for everyone if I re-used it. So, it'd be a matter of representing the current data as SQL, importing it into a real database backend (yes, I am dissing Access), and making a new frontend.

Is this reverse engineering/reimplementing as a competitive product all legal? You probably don't want That Company suing your arse off._________________Ebichu wa chiizu ga daisuki dechu!

I think so. It could be argued completely coincidential that the database structures are similar (not identical, as they were stupid for putting the # character in column names) and the feature set won't be identical since I don't plan on re-implementing the billing system. I have not seen any of their code and everything I have gathered was from files it created on my computer. Also, it currently only talks to mySQL, so it can't read the database directly.

At any rate, if this is illegal, I'm sure I can get the EFF on my side. All I'm doing is writing software, after all, and if it happens to be similar... oh well._________________I don't believe in witty sigs.

// ALTER database
// MySQL barfs if you drop all the columns of a database
// Hence, we add before dropping
// ...unless it's auto_increment, which we defer...
// (MySQL also barfs if there's two auto_increments, so we add it
// after dropping columns and hope that any other auto_increment
// column is dropped)
$deferredcols = array();

Regarding line 233, that's either whitespace or does not exist. Unless you're referring to line 233 in database.php, which calls a function to count the result rows as part of the function that counts the number of rows in a table._________________I don't believe in witty sigs.

I'm not entirely convinced that this covers your back, but I'm not a lawyer and have little interest in US laws.

I was under the impression that you were intending to replace That Thing with LISSARD, rather than interoperate with it. You don't seem to have pulled apart the existing data structures to see how they work for the purposes of interoperation. You seem to have pulled them apart to see how they work so you can copy them in your own program. This is reasonable for personal use, but seems a bit illegal for a competing program that you are licensing to others, unless the license for the competing program says you must also hold a license for That Thing as well. As I said, I'm not a lawyer, but am I missing something?_________________Ebichu wa chiizu ga daisuki dechu!

I'm not entirely convinced that this covers your back, but I'm not a lawyer and have little interest in US laws.

I was under the impression that you were intending to replace That Thing with LISSARD, rather than interoperate with it. You don't seem to have pulled apart the existing data structures to see how they work for the purposes of interoperation. You seem to have pulled them apart to see how they work so you can copy them in your own program.

Well, a little of each. Eventually, the plan is to revise portions of That Thing to use a different (hopefully more intelligent) layout, but right now we need to get all of the data from That Thing into LISSARD as quickly as humanly possible. Thus, using the same structures -- in this instance at least -- is a means to provide interoperability. That is the basis of the decision to use the same structure; fast movement of data in between the programs. In fact, if the database backend was rewritten to use ODBC, it would be possible to make LISSARD use That Thing's data directly. Hence, this design (arguably) falls under the reverse-engineering-for-interoperability

ebichu wrote:

This is reasonable for personal use, but seems a bit illegal for a competing program that you are licensing to others, unless the license for the competing program says you must also hold a license for That Thing as well. As I said, I'm not a lawyer, but am I missing something?

Read (3). I can provide said information to others for purposes of interoperability as well.