Skip to Content.
Sympa Menu

freetds - [freetds] chapter next

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "James K. Lowden" <james.k.lowden AT icloud.com>
  • To: TDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: [freetds] chapter next
  • Date: Mon, 26 Jan 2015 21:48:28 -0500

Greetings All,

I want to let everyone know just a little news about the FreeTDS
project from my perspective.

Frediano has agreed to be the Project Maintainer and is in the process
of acquiring the requisite keys to the kingdom. It's fitting; no one
has done more to make FreeTDS what it is today.

I have faith that Frediano won't pull up the drawbridge, not that I mean
to cross it very much. I know he's interested in fixing the overnight
snapshot process, and in more frequent releases. There's quite a bit
of new functionality in the current development branch that I'm sure
will be welcome in a new release.

It's been quite a ride. The oldest FreeTDS message in my personal
archive dates from 2001, the first year of the Bush administration. In
those days FreeTDS was very much a work in progress. There was only
primitive BCP (no freebcp), incomplete type conversion, just the most
essential functions. The most frequent error was a TDS parsing error
about invalid stream state, leading immediately to exit(3).

I remember an early bug report that said char-> int conversion failed
to read the last character, leading to the mother of all off-by-one
errors: off by one order of magnitude. I think that was the day I
decided to jump in with both feet, starting with an all-to-all db-lib
type conversion test. :-)

Even though my name is on a lot of email messages, I don't lay claim to
most of the code. Much, much more was done by Brian & company in the
early days, and later by Frediano and Bill Thompson. There are many
more names, most of whom are acknowledged. It truly was a collaborative
effort.

Many people outside the free software community -- and perhaps you,
dear reader -- wonder why someone would devote his time to programming
without getting paid for it. I have one answer.

My answer is simple, if surprising: selfishness and unselfishness.

Why does anyone pursue any hobby? For the pleasure of mastery and
discovery. I knew there was this thing called "Linux" happening, and I
knew from Unix that "ls" meant "dir". I knew C, and how
packet-switched networks work (but not tcp/ip). And I knew enough
db-lib to be dangerous. Why not try my hand at FreeTDS as a way to
learn things and build on what I knew?

In my first message to Brian Bruns I offered to write a user guide. At
the time there was a FAQ, but anyone starting out pretty much had to
join the mailing list to learn how to set things up. I didn't know
what the documentation had to *say*, but I could take Brian's notes and
convert them into a proper document. In the event, he chose the doc
technology and wrote the first draft. I tidied up some of the wording
and added to it whenever a question arose on the list. Over the years
it's come to meet my goal: seldom do we see questions on the list about
how to compile the code or connect to a server.

I answered people's questions to further my knowledge. How to convert
character sets? How to discover the server? How to test the setup? I
added to the documentation and to tsql to make answering those questions
easier. As time went by, the questions got knottier: why does function
X crash? Why did bcp not upload the table?

Besides improved logging, I went through every db-lib function -- and
every published db-lib error message -- to make sure any misuse
returned an error and called the error handler. Every documented
message that can be produced *is* produced, somewhere in the code.
Eventually I learned enough (especially from Richard Stevens) to do the
very hard work of fixing the communications stack top to bottom, so
that timeouts actually work as specified.

In the process of answering questions and investigating problems, I
learned a whale of a lot about operating systems, standards, networks,
and the many sundry things Unix teaches about tooling and
architecture. It is said, "It's amazing what a man can accomplish in
10 years." For myself I know that's true: When it came time to make a
career move a few years ago, it was FreeTDS that underpinned the
change.

Thus did the fledgling fly the coop.

My work nowadays doesn't involve FreeTDS or SQL Server, or very much
database work. My technical interests have changed, too; having
learned (I would say) what FreeTDS has to teach about clients, I've
gone to the other side, to the server. More on that another time.

Meanwhile, the FreeTDS project is dying on the vine. One maintainer
does not a project make. Microsoft keeps moving the gateposts.
Required functionality changes. Microsoft now has its own
closed-source ODBC driver for (some kinds of) Linux. The open-source
door to SQL Server is closing, will close without sustained effort. If
you see some of your story in mine, I suggest you consider lending a
hand. Only doing is knowing. You never know where it might lead.

I should mention one unexpected pleasure of participating in this
community: the number and kind of wonderful people I meet, many of
whom I learned from and count as friends. They help me, as the old
Irish prayer says, to work to change the things I can, to accept the
things I can't, and to recognize the difference. Plus, they're fun to
be around. Sometimes I make them laugh, too, sometimes intentionally.

I'm human, and as much as anyone I'd like to be showered in leis and
buried in praise, whether or not deserved. I'm glad to have played a
part in bringing FreeTDS along as far as we have. I will not claim,
though, that I did it all for You. I did it for me, and you happened
to benefit. So thanks, and you're welcome.

--jkl




Archive powered by MHonArc 2.6.24.

Top of Page