Posted on 2006-09-13 16:00:41-07 by michrony
Pains without Remedy
The purpose of APIs is to make software sharing and reuse as easy and straightforward as possible? Not necessarily so. At least, this is my conclusion after 2 weeks of working with Andrew Hicox on his wrapper for Remedy. Om my site, I prepared a brief list of what IMO makes a quality API. Going through this list, it appears that:
-- Yes, there is a description for its calls, but I have a strong feeling that, as in the old days of C libraries, this description is taken as the main, not minor part of the whole API package. To begin with, getting access to all necessary Unix directories and accounts was a terrible pain. I've not seen any make/ant/perl scripts to do this job.
-- To use Oracle, one needs access to sqlplus and certain SQL statements to check what is going on. The problem is, in the world of Remedy-ARSTools this is far from obvious. Hmmmm... OK, INSERT, UPDATE will blow Remedy up, but testing database app without SELECTs is the shortest way to disaster as far as I am concerned.
-- Once there is a working demo for at least some of API features, we are pretty much set. Also, it makes lots of sense to keep these demos as simple as possible, most importantly, mixing Remedy related logic with other advanced APIs such as SOAP is a real pain. Well... : -(((
-- There is not much that can be done about advanced API such as this one without simple, but reasonable logging scheme. Unfortunately, I've not noticed any.
Direct Responses: 3045 | Write a response
Posted on 2006-09-15 15:58:21-07 by ahicox in response to 3020
Re: Pains without Remedy

Hi Michael.
First, I'm sorry that things didn't work out for you on that contract ...

Keep in mind that Remedy::ARSTools isn't strictly speaking an API in the classic sense you're trying to apply here. The purpose for this module is simply to provide some convenience functions, on top of the ARSPerl project, which is a perl binding for the actual Remedy C API.

I'm aware that the documentation is in an atrocious state, and that indeed, this module doesn't function correctly with newer releases of ARSPerl, making it's utility to the community somewhat less than optimum. That being said, it DOES have a high degree of applicability within the very narrow set of circumstances for which it was built, which is why you were required to use it on the contract.

At some point, I'd love to come back to this project and update it for wider applicability, and fix the documentation, but at least for now, that's not something I've got the time to do, though any would-be contributors out there in the community are more than welcome to submit fixes and patches!

Just to briefly address your points above:

-- The package includes a CPAN standard Makefile.PL, that will generate a makefile to create required directories and install files within them. I'm not sure what you're getting at here.

-- The Remedy server may use any number of off the shelf databases for it's back-end. We used Oracle on the project you were working on. At least within our deployment, querying the underlying database directly is much more efficient for SELECT type operations than querying the Remedy API to retrieve the data. Again, I'm not sure how this point, which seems to be related to your frustration understanding the database table structure, is really applicable to Remedy::ARSTools.

-- The module does work as intended, I've been using it for many years and have built many many functioning projects using it. The module doesn't include a test suite, which is one of those things I've been meaning to get to.

- The module includes debug flags, which can log to stderr. That's about as simple as it gets.

-Andrew
Direct Responses: Write a response
Perl Weekly newsletter
A free weekly newsletter for people who are busy to read all the blogs. click here to check it out.