<?xml version="1.0" encoding="utf8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Crossbow news</title>
<description>The minimalist feed aggregator</description>
<link>gopher://dacav.org</link>
<item>
<title>Crossbow 3.0.0</title>
<link>gopher://dacav.org/1/projects/crossbow/releases/3.0.0</link>
<description>Crossbow 3.0.0 "Alida"
======================

After almost two years since version 2.0.0, I'm proud to announce
a new release of Crossbow! Version 3.0.0, codename "Alida".

This release comes with a few relevant changes that justify a bump
of the MAJOR version digit.


1. The build system is migrated from Autotools to CMake
-------------------------------------------------------

I recently grew fond of CMake, and it is nowadays easier for me to
maintain a CMake configuration, than the Autoconf/Automake
equivalent.

CMake allows to leverage fast build tools such as Ninja, while
keeping compatibility with classic tools such as Make, both on GNU
and BSD systems.

On the downside, it is hard or impossible to have a "dist" package
that doesn't list CMake in the build time dependencies.
I think the compromise is acceptable, since most packaging systems
I know have a clean distinction between build time and run time
dependencies.

The README.md file distributed with Crossbow has been updated with
brief instructions on how to compile and install your beloved feed
reader, but please refer to the excellent CMake documentation for
details.


2. Dropped crossbow-upgrade(1)
------------------------------

The crossbow-upgrade(1) tool served the purpose of migrating an
existing configuration for the 1.x series of Crossbow to the new
configuration format supported by the 2.x series.

Since no change in the configuration language was introduced with
Crossbow 3.0.0, the tool has been removed.

If upgrading from Crossbow 1.x to Crossbow 3.0.0, please install
Crossbow 2.0.0 first, run crossbow-upgrade(1) to migrate any old
configurations to the new format, and then proceed with a new
upgrade.


3. Feed entries are now identified by a digest
----------------------------------------------

Crossbow has relied so far on the "guid" field of feed entries as
unique identifiers, and using the "link" field as a fallback
when the "guid" is not identified.

Unfortunately, however uncommon, nothing prevents a feed to
publish multiple entries having the same "guid" or "link".
A feed with such characteristics was found in the wild, and it
could not be handled properly by Crossbow.

To address this problem, Crossbow 3.0.0 uniquely identifies
each entry by the SHA-1 digest of the concatenation of a few entry fields.
The current selection of fields is: "title", "guid", "link" and
"pubDate".

To obtain the digest we rely on libcrypto, which is now a direct
dependency of Crossbow.

Since Crossbow keeps track of entries that have been seen by
persisting their identifiers, all entries will be re-processed
on the first execution after the upgrade.

To avoid this, it is recommended to follow these steps:

 1. Update all the feeds by running `crossbow`, forcing every
    unseen entry to be processed by Crossbow 2.0.0;

 2. Install the 3.0.0 release;

 3. Remove the persistence files corresponding to every involved
    configuration (by default, this means the  "~/.crossbow"
    directory).  This step is optional.

 4. Update all the feeds again by running `crossbow -c`
    (catch-up mode).

Any update published by followed feed in the time window between
step 1 and step 4 is going to be lost.</description>
</item>
<item>
<title>Crossbow 2.0.0</title>
<link>gopher://dacav.org/1/projects/crossbow/releases/2.0.0</link>
<description>Release 2.0.0
-------------

Crossbow reaches version 2.0.0.

This new release comes with a substantial modifications, and it is not
backwards compatible.

The most relevant modification is the introduction of a configuration
file, that defines the set of feeds to be monitored and their settings.
In previous releases the configuration used to be baked into the feed
persistence file.

Decoupling persistence and configuration removes the need for commands
such as crossbow-set(1), crossbow-del(1) and crossbow-query(1), which were
intended as accessors for the persisted configuration.  We are left with a
single command, crossbow(1), that takes the place of crossbow-fetch(1).

In order to facilitate the transaction from the 1.x series to the 2.x
series, a new command named crossbow-upgrade(1) has been added to the
distribution.  The command migrates the configuration to the new format,
while maintaining the tracking information for all monitored feeds.

Apart from being represented in a different way, the feed configuration
supports the same functionalities as before.  The only noticeable
difference is that the "print" and "pretty" handlers have been merged.
As always, everything is explained in detail in the provided manpages.

I hope you enjoy it :)</description>
</item>
<item>
<title>Crossbow 1.2.2</title>
<link>gopher://dacav.org/1/projects/crossbow/releases/1.2.2</link>
<description></description>
</item>
<item>
<title>Crossbow 1.2.1</title>
<link>gopher://dacav.org/1/projects/crossbow/releases/1.2.1</link>
<description></description>
</item>
<item>
<title>Crossbow 1.2.0</title>
<link>gopher://dacav.org/1/projects/crossbow/releases/1.2.0</link>
<description></description>
</item>
<item>
<title>Crossbow 1.1.3</title>
<link>gopher://dacav.org/1/projects/crossbow/releases/1.1.3</link>
<description></description>
</item>
<item>
<title>Crossbow 1.1.2</title>
<link>gopher://dacav.org/1/projects/crossbow/releases/1.1.2</link>
<description></description>
</item>
<item>
<title>Crossbow 1.1.1</title>
<link>gopher://dacav.org/1/projects/crossbow/releases/1.1.1</link>
<description></description>
</item>
<item>
<title>Crossbow 1.0.1</title>
<link>gopher://dacav.org/1/projects/crossbow/releases/1.0.1</link>
<description></description>
</item>
</channel>
</rss>