2005-06-03

Swish-e for Windows

So, I've got Swish-e codebase in Swish-e CVS building for Windows completely on Linux including the SWISH::API for Perl. There are a few reasons for me wanting to dump MSVC and cross-compile everything from Linux:
  1. Convenience: it's completely automated and I can provide the Perl and C API with daily snapshot builds.
  2. I don't use Windows. I hate MSVC. And combining the two makes my blood boil.
  3. We use libtool with our autoconf build. Building a DLL using libtool is utterly trivial. MSVC seems to require a master's degree in technical frobnication to build a working DLL.
  4. I don't want to rely on proprietary tools for any part of the build process.
  5. Most importantly, as of the next release (2.4.4) we will need to provide a DLL on Windows to make it easier to comply with the new Swish-e licensing.
About the new licensing... Swish-e has officially changed the license to GPL with Exception from the former LGPL license. The reasons for the change are many. For one, Swish-e relies on some GPL code and that taints the LGPL license. It would have been pretty easy to replace that dependency and stick with LGPL. Suffice to say, we have technical and philosophical reasons why we want to see the code under GPL. The website and documentation has reflected that fact for a very long time. We simply hadn't made the effort to sweep through the source code and correct the license statements. (Thanks Peter for taking the time to do that!)

Contributors of some significant batches of code (Swish-d Cluster, SwishCtl, etc) have stated that they would not have been able to contribute code back to the community had Swish-e not been under GPL. We don't want to prevent people from using Swish-e. Some of us just don't want a proprietary program being deeply integrated with Swish-e. For instance, there is one Swish-e ActiveX control which relies on an expensive, proprietary library. Those users are stuck with their ancient version of Swish-e because they can't drop in a newer version. We would like Open Source software such as PHP and Python to be able to link to libswish-e. Indeed, even the swish_php code written by Jose is under the GPL-incompatible PHP open source license. (Open Source != Free Software: GPL taints most open source licenses.) So we invoked the "linking over controlled interfaces" exception to GPL that allows any program (proprietary, open source, etc) to link to Swish-e but only if that program uses the documented interfaces (libswish-e). We have our GPL and everyone has access to the search interfaces.

I built this the other day to test release on Linux:
http://webaugur.com/wares/files/swish-e/swish-e-2.5.4-2005-06-01.exe

That build of swish-e.exe is linked to libswish-e-2.dll or whatever it's named. I think I'll add an optional development section to the installer for swish-e.h and libswish-e.dll.a and whatever else might be handy. (Suggestions are welcome.) The MSVC folks will probably be left to fend for themselves from now on. I'll see if I can make it easier for them to generate a DLL import library.

Why don't I like MSVC? MSVC creates tons of busy work and needless distractions. Visual Studio can be handy for debugging but they removed Makefile support in MSVC 6. So you can choose to be trapped inside of their horrible manually-operated GUI for all eternity or you can abandon their debugger and manually write Makefiles. And since the last few releases of GCC, GDB, binutils, etc work almost flawlessly with Windows I see no point in ever bothering again with MSVC. What's more, with GCC you can do useful things like cross-compile Windows executables from Linux and cross-compile Linux executables from Windows. Pick just about any two computer systems in existence and you can cross-compile between them.

It took me 45 minutes just to test the perl stuff the other day. Maybe 3 minutes of actual testing and I wasted the rest of the time rebooting Windows. When I hold down backspace or press a key combo at just the right moment Windows goes into a tight loop and consumes 100% CPU until I kill it. Seems like something to do with IRQs and memory allocation. It's almost as if VMware is triggering events too fast for Windows to keep up. If I increase /dev/shm to 2 GB and instruct the vm to use it for temp space (instead of /tmp on a hard disk) then it doesn't lock up quite so often. I think more RAM would help more than anything.

Labels: , ,

2005-02-19

swish-python

I've started working on a Python language binding for the Swish-e search engine. All of the basic functionality works. I have provided an example script which prints the results in a similar format as the swish-e program. The example script serves as the documentation for now. Swish-python doesn't yet handle the index headers. Header functions pass back an object reference which you can't yet use.

swish-python 0.1 can be downloaded as a source tarball or a debian package.

Labels:

2004-07-21

swish_php module

I took a few moments tonight and updated the swish_php module. The updates should be in swish-e anonymous CVS sometime soon.

Labels:

2004-07-14

SWISH-E Daily Builds

SWISH-E Daily Windows Builds are being made again. Sorry for letting them go for so long. I'm really glad to find that makensis now runs natively under Linux. WINE has had a number of little nagging problems under Fedora Core. Currently I can't seem to get the ttydrv (Windows GDI Graphical) driver to function; meaning I can't really schedule Windows applications to run in text-only mode from cron (UNIX system task scheduler).

I may start building daily Fedora RPMs for SWISH-E. I don't have a ton of disk space on my web host. However I would like to make daily builds available to get it out there for testing. That hinges on a few things such as getting the Fedora.us build system working on one of my computers. I have a spare machine I could put online just for doing automated builds. That may be ideal.

Also, I'd like to get stable releases of SWISH-E into Fedora Extras. That will be some serious work due to the Fedora.us packaging guidelines and the shear volume of Perl modules the SWISH-E helper scripts support/require. I think it is worth doing, though. There are a growing number of people using SWISH-E and I'd like to make their lives a bit easier if possible. Should I support Red Hat Linux 9? I really don't know how many people are using it compared to Fedora Core or Red Hat Enterprise.

Labels: , ,