chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-users] Experience of using Chicken in production environment


From: Aleksej Saushev
Subject: [Chicken-users] Experience of using Chicken in production environment
Date: Sat, 11 Apr 2009 06:34:15 +0400
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.3 (berkeley-unix)

  Hello!

We face urgent need to close a gap in our production system and rewrite
archaic CGI code, which occured to have serious design defects left by
previous developers 4-5 years ago. Since I know both Lisp and Scheme
better than PHP or PERL, I decided (given the time schedule) to rewrite
all necessary code in Scheme. Given my previous experience with similar
FFI issues, that seemed easier than debugging hastily written analogous
code in C.

Among all implementations Chicken was choosen due to following reasons:
1. It is one of the two fastest developed implementations.
2. I have rather close contacts with two of its developers, and they
mentioned their projects in the web interface domain, which is what
I mostly need.
3. I happen to maintain package.
All reasons are of support nature, so that I can get advice and other
support (most important is bug fixes).

During the project I ran into following problems:

1. Skipped release.

Right at the start the Chicken project is close to 4.0 release, the last
announced (stable) release is 3.4.0. At the same time, there exists
3.5.0 release, which is more recent stable release as per convention
elaborated earlier, and even later releases from 3.5 series. 3.5.0 isn't
announced and there's little information on what's going on.

Thanks to close contacts with Chicken developers, I'm told that 3.5.0
release has serious or critical bug that prevents its usage.
I'm recommended to either stay with 3.4.0 (the most recent _announced_
stable release) or update to one of "unstable" release from 3.5 branch.
Given that, I'm going to follow conservative way and stay with 3.4.0.

2. Unsupported stable branch.

Meanwhile Chicken development continues and it's going to enter
pre-release state. From the development list I learn that 4.0.0
is really a major milestone, it does change things significantly
and all auxilliary software (which is of primary importance to me)
has to be _ported_. When asked about support plans for branch "3",
maintainer answers that there's no interest. I have to assume that
support is mostly discontinued(?).

3. Release cycle is too short?

The development goes on, and we see 4.0.0 pre-release and release.
But that's only the core, most of auxilliary software ("eggs") still
has to be ported, and new release gets more support, which leaves stable
branch, that has almost no support already, with even less support.

4. What is it? What can I do with it??

Target systems reside in separate network, there's no access to Internet,
unless I setup connection via GSM modem. Thus I need to fetch all
necessary files, bring them there, copy them on target systems and install.
Obvious. Not so obvious, when you're doing it.

First, you don't have recursive fetch. Workaround: install all what you
need on development system, list extensions, _guess_ corresponding eggs'
names, fetch those, bring them on the scene, and... get busted.
You cannot pass neither distributed file name nor name of directory with
downloaded files to "chicken-setup" tool. It simply doesn't support it.

Alright, I am wise enough to try it before I lose connection to supporters,
who can tell that dowloaded files are gzipped tarballs and "chicken-setup"
can be run from egg source directory to get the work done. Alright, all's
well that ends well. Nevertheless writing script to do what could be done
already is a bit annoying.

5. Where's it???

I haven't run into this problem yet, but where's download cache or how
can I turn it on?

6. Versioning, versioning...

Previously I thought that having version number in file name is very
useful, since it is really convenient. I was mistaken. Experience
revealed that _not_ having versions is _very_inconvenient_.

Especially when you know that an egg was fixed in last 15 minutes,
and you're waiting for a new file.

7. No comments.

$ chicken-setup -d srfi-19
*** output flushed ***
$ csi
*** output flushed ***
#;1> (use srfi-19)
*** output flushed ***
#;2> (date->string (current-date))
"Sun Nov 15 20:58:47-18761321 1987"
#;3> 
$ date
Sat Apr 11 06:20:11 MSD 2009
$ uname -mrs
FreeBSD 6.3-STABLE i386

??

Workaround:

 (let* ((conn (pg:connect '()))
         (tuples (pg:query-tuples "select now()" conn)))
    (pg:close conn)
    tuples)

All thanks to the author of Postgres interface.


Conclusions, if any, are left as excercise to the reader.

Acknowledgements: I'm grateful to Peter Bex and Elf, who provided very
much valuable support in my work, and Alaric Snell-Pym, without whose
encouraging mentions I wouldn't even dare to use Chicken for this,
and numerous others who provided so much material to have fun and grief.

I'm still going to finish the project despite all the obstacles. Stay tuned.


-- 
BECHA...
   CKOPO CE3OH...





reply via email to

[Prev in Thread] Current Thread [Next in Thread]