<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Coffee|Code : Dan Scott - Evergreen</title>
    <link>http://coffeecode.net/</link>
    <description>Caffeinated Librarian Geek</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.5.1 - http://www.s9y.org/</generator>
    
    

<item>
    <title>Evergreen on FLOSS Weekly: the aftermath!</title>
    <link>http://coffeecode.net/archives/233-Evergreen-on-FLOSS-Weekly-the-aftermath!.html</link>
            <category>Evergreen</category>
    
    <comments>http://coffeecode.net/archives/233-Evergreen-on-FLOSS-Weekly-the-aftermath!.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=233</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=233</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;
The recorded version of the &lt;a href=&quot;http://twit.tv/floss132&quot;&gt;Evergreen episode of the FLOSS Weekly&lt;/a&gt; show was released over the weekend. I&#039;m happy to say that Lynn watched it without looking too pained at any given point, and the Evergreen project has already had several responses to our plea for assistance so far, particularly on the packaging front, which is fantastic! Just having one more skilled helping hand makes all the preparation for and stress about the show worth it.
&lt;p&gt;
Several points that amused me about the show as I glanced over Lynn&#039;s shoulder:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In Randal&#039;s introduction, he said that I &quot;worked for Coffee|Code&quot;, full-stop. Aside to Leila Wallenius, the University Librarian of &lt;a href=&quot;http://laurentian.ca&quot;&gt;Laurentian University&lt;/a&gt;: no, there&#039;s nothing I need to tell you, I&#039;m still a full-time employee at the University and I&#039;m not planning on going anywhere! (That said, &lt;strong&gt;Coffee|Code Consulting&lt;/strong&gt; is a registered sole proprietorship that provides small blocks of consulting services for Evergreen software in my spare time).&lt;/li&gt;
&lt;li&gt;For the first half of the show, my affiliation was shown as the (misspelled) &lt;a href=&quot;http://coffecode.net&quot;&gt;http://coffecode.net&lt;/a&gt;. So of course I immediately ran out and bought that domain.&lt;/li&gt;
&lt;li&gt;Co-host Dan Lynch expressed a wish that his own show, &lt;a href=&quot;http://linuxoutlaws.com/&quot;&gt;Linux Outlaws&lt;/a&gt;, had a guest list like FLOSS Weekly. Oddly enough, some time ago when the subject of librarians and their fanatical devotion to open access to information came up on Linux Outlaws, I had submitted a feedback form on their site saying (essentially) &quot;hey, if you want to talk to a Linux-loving free software-developing librarian some time, I&#039;m around...&quot; but I think that comment went into the ether.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If I ever do a video interview like this again, I&#039;m going to try to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prop my laptop up on a couple of LCSH books or attach a separate web cam at a proper height so it doesn&#039;t appear that I&#039;m looking down on the viewer.&lt;/li&gt;
&lt;li&gt;Cut down on the &quot;uhm&quot;s and &quot;ahh&quot;s and stare a bit more robotically at the camera instead of rolling my eyes as I rack my brains to come up with an answer&lt;/li&gt;
&lt;li&gt;Stop rambling and trust the interviewers to take the show in the direction that their audience will be interested in instead of trying to jam in points that I think are important or interesting&lt;/li&gt;
&lt;li&gt;Ensure that my erstwhile partner in crime has a better Internet connection&lt;/li&gt;
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Tue, 31 Aug 2010 22:50:05 -0400</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/233-guid.html</guid>
    
</item>
<item>
    <title>Non-stop Evergreen, or &quot;What I'm doing on my summer vacation&quot;</title>
    <link>http://coffeecode.net/archives/232-Non-stop-Evergreen,-or-What-Im-doing-on-my-summer-vacation.html</link>
            <category>Evergreen</category>
    
    <comments>http://coffeecode.net/archives/232-Non-stop-Evergreen,-or-What-Im-doing-on-my-summer-vacation.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=232</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=232</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;
Last week, I started my summer vacation with a weekend at a friend&#039;s cottage. By Tuesday I was deeply engrossed in some Evergreen enhancement work for the &lt;a href=&quot;http://www.iisg.nl/&quot;&gt;International Institute of Social History&lt;/a&gt;. I&#039;m building an authorities management user interface that properly exposes Evergreen&#039;s powerful authority support in the 2.0 release: browsing authority lists, editing authorities and having the updates ripple through to the bibliographic records with controlled fields, merging and deleting authorities... here&#039;s a screenshot of the interface in progress: &lt;a class=&quot;serendipity_image_link&quot;  href=&#039;http://coffeecode.net/uploads/pics/Authority_record_list.png&#039;&gt;&lt;!-- s9ymdb:340 --&gt;&lt;img class=&quot;serendipity_image_left&quot; width=&quot;110&quot; height=&quot;92&quot;  src=&quot;http://coffeecode.net/uploads/pics/Authority_record_list.serendipityThumb.png&quot;  alt=&quot;&quot; /&gt;&lt;/a&gt;. The numbers represent the number of bibliographic records linked to each authority record. These are still early days, but I think there are some cataloguers that are going to be pretty excited about this functionality when they get their hands on it.
&lt;/p&gt;
&lt;p&gt;
This week, I&#039;m on location in the &lt;a href=&quot;http://library.upei.ca/&quot;&gt;Robertson Library at the University of Prince Edward Island&lt;/a&gt; doing some Evergreen consulting work for them. The good people at UPEI have put my family and I up in a nice cottage on the island, so I&#039;m toiling away at improving Evergreen during the day while my family explores the island. Melissa Belvadi and Grant Johnson have put together a list of pain points that they would like me to address that happen to mesh nicely with general pain points that have come up over the years on the Evergreen mailing lists. My first priority has been to make working with spine labels a little less aggravating. I&#039;m happy to say that after a day and a half, I&#039;ve been able to teach the spine label editor how to (*gasp*) move up and down with the arrow keys and (*ooh-ahh*) insert and delete new lines and (*w00t*) have the spine label defaults come from library settings that only have to be set once instead of being individually set by each cataloguer. Oh, and I&#039;ve added font size, font weight, and font family to those settings so that you can have 20 pt. bold Helvetica spine labels if you want them.
&lt;/p&gt;
&lt;p&gt;
All of this code is being committed to Evergreen trunk as I hit functionality milestones; much of the authority work has made its way into the Evergreen 2.0 alpha release that was cut on Monday (although not yet announced officially). On Monday I also cut the OpenSRF 1.6.0-alpha release and uploaded a virtual image built on Debian Squeeze reflecting the OpenSRF/Evergreen alpha releases to &lt;a href=&quot;http://evergreen-ils.org/~denials/Evergreen_trunk_2010_08_23.zip&quot;&gt;http://evergreen-ils.org/~denials/Evergreen_trunk_2010_08_23.zip&lt;/a&gt; (note that it&#039;s 500 MB, and does not come with X installed, so it&#039;s primarily aimed at users that are already familiar with Evergreen and just want to see the new stuff without having to go through the entire install process).
&lt;/p&gt;
&lt;p&gt;
I did take some time off of Evergreen development this afternoon, as I was honoured to be one of the two guests on the &lt;a href=&quot;http://twit.tv/floss&quot;&gt;FLOSS Weekly podcast&lt;/a&gt;. Mike Rylander and I were there to discuss Evergreen with the hosts, &lt;a href=&quot;http://twitter.com/merlyn&quot;&gt;Randal Schwartz&lt;/a&gt; and &lt;a href=&quot;http://danlynch.org/&quot;&gt;Dan Lynch&lt;/a&gt;. Unfortunately for Mike, me, and the audience, Mike&#039;s Skype connection kept dropping and I had to do the bulk of the talking. Despite missing the contributions from Mike&#039;s massive brain, I&#039;m told that the show went well. So if you&#039;re interested in hearing a bit about Evergreen and why I do what I do, keep an eye open for the interview at &lt;a href=&quot;http://twit.tv/floss132&quot;&gt;http://twit.tv/floss132&lt;/a&gt; - it should be edited and online by Friday, August 27th at the latest. I tried not to swear too often so they wouldn&#039;t have to do much editing work - heh.
&lt;/p&gt;
&lt;p&gt;
Finally, somewhere in there I celebrated another birthday. Oh yeah! Older? Yes! Wiser? Probably not.
&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 25 Aug 2010 20:40:45 -0400</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/232-guid.html</guid>
    
</item>
<item>
    <title>Classification scheme-aware call number sorting in Evergreen</title>
    <link>http://coffeecode.net/archives/230-Classification-scheme-aware-call-number-sorting-in-Evergreen.html</link>
            <category>Evergreen</category>
    
    <comments>http://coffeecode.net/archives/230-Classification-scheme-aware-call-number-sorting-in-Evergreen.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=230</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=230</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;
As a librarian who works at a library that primarily uses the &lt;a href=&quot;http://www.loc.gov/catdir/cpso/lcco/&quot;&gt;Library of Congress classification scheme&lt;/a&gt;, I have been interested for &lt;a href=&quot;http://svn.open-ils.org/trac/ILS/ticket/51&quot;&gt;a long time&lt;/a&gt; in teaching Evergreen to be aware of call number schemes other than Dewey. The problem, in a nutshell, is that Evergreen simply applies an alphabetical sort against the the uppercased version of the call number when generating call number browser displays - resulting in LC call numbers that sort incorrectly, like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;K 215 .E53 W37 1997&lt;/li&gt;
&lt;li&gt;K 22 .U748 v.18&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;When the subject recently came up on the &lt;a href=&quot;http://article.gmane.org/gmane.education.libraries.open-ils.general/2891&quot;&gt;open-ils-general mailing list&lt;/a&gt;, I decided to follow up with some code. So, &lt;a href=&quot;http://svn.open-ils.org/trac/ILS/changeset/17130&quot;&gt;as of this weekend&lt;/a&gt;, Evergreen trunk now has a generalized infrastructure for generating sort keys for call numbers. The broad strokes of the current implementation are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The classification scheme is set the level of the call number.&lt;/li&gt;
&lt;li&gt;Classification schemes are defined in the &lt;tt&gt;asset.call_number_classification&lt;/tt&gt; table with a pointer to a database function to call to generate a normalized sort key for the given call number.&lt;/li&gt;
&lt;li&gt;Three classification schemes are available out of the box:
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Generic&lt;/em&gt; (the default) - a simple normalization approach that produces reasonable results in the absence of special rules for Cutters, etc&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Dewey (DDC)&lt;/em&gt; - a normalization routine taken from the &lt;a href=&quot;http://git.koha-community.org/gitweb/?p=koha.git;a=blob;f=C4/ClassSortRoutine/Dewey.pm;h=b4ba92199e7d425e3c4cfdb5082a4f36b486e3c9;hb=HEAD&quot;&gt;Koha C4::ClassSortRoutine::Dewey&lt;/a&gt; Perl module&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Library of Congress (LC)&lt;/em&gt; - a normalization routine that simply wraps Bill Dueber&#039;s excellent &lt;a href=&quot;http://code.google.com/p/library-callnumber-lc/&quot;&gt;Library::CallNumber::LC&lt;/a&gt; Perl module&lt;/li&gt;
&lt;/ul&gt; - and adding more classification schemes is just a matter of adding another row to the &lt;tt&gt;asset.call_number_classification&lt;/tt&gt; table and the appropriate sortkey-generating database function.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Note that this is the first time, to my knowledge, that Koha code has been adopted directly by Evergreen. I included attribution for the copyright holders in both the Generic and Dewey normalization functions. I wrote the Generic implementation in Evergreen from scratch shortly after taking a look at Koha&#039;s approach, so in some corners my work would be considered a &quot;derived work&quot;. Koha&#039;s Dewey normalization function was (somewhat surprisingly) the only open-source implementation that I could find for Dewey, so it made perfect sense to me to adopt that for use in Evergreen. Many thanks to Koha for their use of the GPL v2 or later licence!
&lt;/p&gt;
&lt;p&gt;
There are still some limitations and low-hanging fruit that I hope to address in the near future:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Right now you can only manipulate classification schemes via SQL. The &lt;strong&gt;Holdings Maintenance&lt;/strong&gt; dialogue needs to give cataloguers the ability to set the classification scheme for each call number, because I&#039;m sure they don&#039;t want to drop down to the command line. This setting should probably be sticky during a given session, so that if they&#039;re processing a cart of government docs, they won&#039;t have to change the scheme from the default to CODOC for each item.&lt;/li&gt;
&lt;li&gt;Speaking of defaults, each library needs to be able to define a default classification scheme - so your consortium can have a Dewey library and an LC library and a SUDOC library, and their preferences won&#039;t trample each other. This can just be a simple org-unit setting.&lt;/li&gt;
&lt;li&gt;Following on Mike Rylander&#039;s &lt;a href=&quot;http://svn.open-ils.org/trac/ILS/ticket/51&quot;&gt;advice&lt;/a&gt;, the &lt;tt&gt;asset.call_number_classification&lt;/tt&gt; table should gain a new column that lists the field/subfield combinations used to find the appropriate call number (if any) for each scheme in a given bibliographic record. Then the &lt;strong&gt;Holdings Maintenance&lt;/strong&gt; dialogue can offer the appropriate call number based on the classification scheme.&lt;/li&gt;
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Sun, 08 Aug 2010 21:37:49 -0400</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/230-guid.html</guid>
    
</item>
<item>
    <title>Authorities in Evergreen: an Amsterdam trip report</title>
    <link>http://coffeecode.net/archives/229-Authorities-in-Evergreen-an-Amsterdam-trip-report.html</link>
            <category>Evergreen</category>
    
    <comments>http://coffeecode.net/archives/229-Authorities-in-Evergreen-an-Amsterdam-trip-report.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=229</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=229</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;
As part of the informal partnership between the &lt;a href=&quot;http://iisg.nl&quot;&gt;International Institute of Social History (IISH)&lt;/a&gt; and &lt;a href=&quot;http://projectconifer.ca&quot;&gt;Project Conifer&lt;/a&gt;, I was pleased to be able to spend the last two weeks in Amsterdam, working side-by-side with one of the Institute&#039;s developers, Ole Kerpel, on augmenting the support for MARC21 authorities in Evergreen. To prepare for the work session, I had posted a &lt;a href=&quot;https://blueprints.launchpad.net/evergreen/+spec/respect-my-authorities&quot;&gt;blueprint&lt;/a&gt; for the authorities work on the Evergreen Launchpad instance and circulated &lt;a href=&quot;http://evergreen-ils.org/dokuwiki/doku.php?id=dev:proposal:authorities&quot;&gt;the list of requirements&lt;/a&gt; we had been asked to address to the broader Evergreen development community. We were fortunate to have the attention of Mike Rylander on the proposal, who not only supplied suggestions for how to implement some of the items, but also committed significant code contributions to the effort that greatly assisted our efforts. Here is a summary of the goals we accomplished in the current development branch of Evergreen (targeted for the 2.0 release), followed by a list of the outstanding items and my finger-in-the-air estimate of how much more time it would take to accomplish each of the tasks:
&lt;/p&gt;
&lt;h3&gt;Accomplishments&lt;/h3&gt;
&lt;ul&gt;
&lt;li style=&quot;margin-top: 1em;&quot;&gt;Controllable control numbers &lt;p&gt;While not, strictly speaking, a requirement for authority control in and of itself, the ability to ensure that the behaviour of the 001/003/035 fields all conformed to the MARC21 specifications was an important requirement for IISH. They plan to provide external access to their authority and bibliographic records, so making the official identifier fields linkable based on the underlying record ID was an important aspect of the work. We implemented this feature as an optional database-level trigger to ensure that the control numbers and control number identifiers are always perfectly in sync with the internal identifier of the particular system on which the records are stored.&lt;/p&gt;&lt;/li&gt;
&lt;li style=&quot;margin-top: 1em;&quot;&gt;Links &lt;p&gt;Where having Mike Rylander participate in your review process pays off, part one... Before I even arrived in Amsterdam, Mike implemented a tricky database trigger that tracks the links between a given bibliographic record and the authority records to which it links. The links are tracked at the database level, as well as directly in one or more &lt;tt&gt;0&lt;/tt&gt; subfields in each field that is controlled by an authority record. Yes, a given field in a bibliographic record can be controlled by two authority records and it all works. Nice, Mike!&lt;/p&gt;&lt;/li&gt;
&lt;li style=&quot;margin-top: 1em;&quot;&gt;Syncs &lt;p&gt;Where having Mike Rylander participate in your review process pays off, part two... Mike also implemented the bulk of the logic for automatically updating bibliographic records that are linked to a given authority record when that authority record is modified. Yes, folks, when you add a death date to an authority record, it will automatically appear in the corresponding bib records.&lt;/p&gt;&lt;/li&gt;
&lt;li style=&quot;margin-top: 1em;&quot;&gt;Control an uncontrolled set of bibliographic records &lt;p&gt;You may have dealt with library systems in the past that use some sort of string matching to implement authority support. As noted above, Evergreen is not like that. However, this means that many of us, when migrating to Evergreen, have bibliographic records lacking the &lt;tt&gt;0&lt;/tt&gt; subfields that are required for full authority support. Towards that end, I wrote &lt;a href=&quot;http://svn.open-ils.org/trac/ILS/browser/trunk/Open-ILS/src/support-scripts/authority_control_fields.pl&quot;&gt;a script&lt;/a&gt; that will walk through a set of bibliographic records, search for matching authority records for each controllable field in each bibliographic record, and add the required &lt;tt&gt;0&lt;/tt&gt; subfields to the bibliographic records. It certainly won&#039;t be a fast solution, but you should only need to do it once, and it worked on the limited test cases that we had ready at hand.&lt;/p&gt;&lt;/li&gt;
&lt;li style=&quot;margin-top: 1em;&quot;&gt;Teach the MARC editor about authority records &lt;p&gt;The MARC editor knew all about fixed fields for bibliographic records, and provided a handy grid for editing those fields. However, it didn&#039;t even know how to recognize authority records, and presented a fixed field grid that was absolutely meaningless. I spent a chunk of time laboriously transcribing the fixed field rules from MARC documentation into the MARC editor and now the MARC editor presents a reasonable fixed field grid for your editing convenience.&lt;/p&gt;&lt;/li&gt;
&lt;li style=&quot;margin-top: 1em;&quot;&gt;Merge authority records &lt;p&gt;Something that often happens in a library is that two authority records are created that identify the same thing. Eventually somebody notices the problem and wants to merge the authority records together. Towards this end, I added a database-level stored procedure that supports the merging of authority records, such that the linked bibliographic records will automatically point to the winning authority record.&lt;/p&gt;&lt;/li&gt;
&lt;li style=&quot;margin-top: 1em;&quot;&gt;Authority browse interfaces &lt;p&gt;Where having Mike Rylander participate in your review process pays off, part the third... Mike also implemented basic browse interfaces that presents a series of authority records in MARCXML format matching your requested authority type (author, title, subject, topic) and the matching substring at the &lt;tt&gt;/opac/extras/browse&lt;/tt&gt; and &lt;tt&gt;/opac/extras/startwith&lt;/tt&gt; URL entry points. While still raw at this point, these can provide the basis for classic authority browse interfaces for those who desperately desire them.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Remaining to-do items&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Note that any estimates are based on how long I think it would take me to implement, based on my own familiarity with MARC and Evergreen and all things Perl and JavaScript and PostgreSQL, and provided with the granularity of no less than one day. Actual implementation times may vary, of course; if related work items are worked on consecutively, then it is likely to take less time to achieve than if the items are tackled sporadically.&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&quot;margin-top: 1em;&quot;&gt;Add an authority in the flow &lt;p&gt;When you&#039;re working in the MARC Editor and you find that there is no match for an entry that you really think should be controlled, IISH wants to make it easy for a cataloguer to add an authority record for that entry. We thought that there might be two options that we would want to expose - a direct &quot;create an authority record from this field&quot; option that takes no further input, and a &quot;create an authority record from this field and open it in another MARC editor to let me tweak it&quot; option. &lt;strong&gt;Estimate&lt;/strong&gt;: 2 person days&lt;/p&gt;&lt;/li&gt;
&lt;li style=&quot;margin-top: 1em;&quot;&gt;Highlight controlled fields &lt;p&gt;This is really a two-part problem. First, for uncontrolled fields, we want to teach the &lt;strong&gt;Validate&lt;/strong&gt; button to offer the kind of automatic matching that the script does and add the required &lt;tt&gt;0&lt;/tt&gt; subfield. Second, we want to highlight fields that are explicitly controlled by authority records with a &lt;tt&gt;subfield&lt;/tt&gt; differently from fields that simply match an authority record, but which are not controlled by it. &lt;strong&gt;Estimate:&lt;/strong&gt; 1 person day&lt;/p&gt;&lt;/li&gt;
&lt;li style=&quot;margin-top: 1em;&quot;&gt;Simplify authority record selection &lt;p&gt;This two-part requirement would mask many of the fields that are currently offered as options when you right-click on an uncontrolled subfield to display matching authority records. For example, it is a little weird to offer a &quot;See from&quot; heading to a cataloguer; we&#039;re trying to avoid adding new records with those headings, right? Heh. Second, we want to introduce the ability to invoke the authority browse list in this interface so that the cataloguer can see a given set of headings in context and select the heading to apply from there. &lt;strong&gt;Estimate:&lt;/strong&gt; 2 person days&lt;/p&gt;&lt;/li&gt;
&lt;li style=&quot;margin-top: 1em;&quot;&gt;Delete authority record &lt;p&gt;There is currently no cataloguer-friendly way to delete authority records. We need to expose a list of authority records (probably reusing that browse list again) and make it possible for cataloguers to delete an authority record. When that record is deleted, all bibliographic records that link to it need to have their links removed - and ideally, the cataloguer would be able to tell how many bibliographic records link to that authority before the delete takes place. &lt;strong&gt;Estimate:&lt;/strong&gt; 1 person day&lt;/p&gt;&lt;/li&gt;
&lt;li style=&quot;margin-top: 1em;&quot;&gt;Edit and merge authority records &lt;p&gt;Although the database-level support now exists for merging authority records, we need to expose a means for cataloguers to select the authority records that they want to edit or merge. This could just be a slightly evolved version of the &quot;Delete&quot; interface. &lt;strong&gt;Estimate:&lt;/strong&gt; 1 person day&lt;/p&gt;&lt;/li&gt;
&lt;li style=&quot;margin-top: 1em;&quot;&gt;Expose authority records via SRU/Z39.50/crawlable interface &lt;p&gt;One of the goals of the IISH is to be able to share their authority records with other institutions. One of the standard methods is SRU + Z39.50 server support; we should be able to build on the SRU/Z39.50 server support for bibliographic records in Evergreen to provide a basic solution for authority records. Interest has also been expressed in having a crawlable implementation that would give the linked data crowd something to play with. &lt;strong&gt;Estimate:&lt;/strong&gt; 2 person days for an SRU/Z39.50 server, 1 person day for a very basic crawlable linked-data implementation&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In summary - hurray for Mike Rylander for helping us out to such an extent, and many thanks, again, to IISH for giving me an opportunity to focus on Evergreen development for an extended period of time, and to Laurentian University for supporting my efforts. I hope that between Ole and myself that it will be possible to finish the rest of these work items prior to the Evergreen 2.0 release. It has been exhilarating to see far Evergreen&#039;s authority support has come in less than a month, and given a little more time I suspect that Evergreen&#039;s authority support will be the envy of other library systems.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 19 Jul 2010 14:52:06 -0400</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/229-guid.html</guid>
    
</item>
<item>
    <title>Got funds for enhancing Evergreen? Looking for places to spend it?</title>
    <link>http://coffeecode.net/archives/228-Got-funds-for-enhancing-Evergreen-Looking-for-places-to-spend-it.html</link>
            <category>Evergreen</category>
    
    <comments>http://coffeecode.net/archives/228-Got-funds-for-enhancing-Evergreen-Looking-for-places-to-spend-it.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=228</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=228</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;
As an Evergreen developer, I believe our project has a few significant gaps that projects like &lt;a href=&quot;http://rscel.org&quot;&gt;RSCEL&lt;/a&gt; might be able to help address for the overall good of the community by bringing in outside resources to the project. Or perhaps there are skills within the community that don&#039;t feel like they&#039;ve been called on yet; when I say that we lack skills, I&#039;m basing that on the lack of patches and offers of assistance that I&#039;ve seen in these areas. I would be delighted to be proven wrong! Either way, I submit this for the community&#039;s consideration.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;3rd party security audit&lt;/strong&gt;: Before Conifer adopted Evergreen, I had hoped that we would be able to fund a security audit of the code by a trusted and competent 3rd party like &lt;a href=&quot;http://omniti.com/does/web-application-security&quot;&gt;OmniTI&lt;/a&gt; (from a previous life, I believe that OmniTI employs some of the best people in the business, thus the plug - but there are certainly other options out there). As developers, we try our best to avoid vulnerabilities, but as the &lt;a href=&quot;http://evergreen-ils.org/blog/?p=406&quot;&gt;recently disclosed vulnerability in open-ils.pcrud&lt;/a&gt; attests, we&#039;re not experts in security. An audit of the public-facing interfaces (the catalogue, feeds, etc) would be a great help to the project. I would expect a prioritized list of areas that need to be addressed, along with recommendations on how to address those problems (whether they be cross-site scripting, session fixation attacks, authentication encryption attacks, etc). Our community&#039;s process (or lack thereof) for reporting and addressing security vulnerabilities might be an appropriate subject for an audit as well.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testing framework&lt;/strong&gt;: Our project is woefully short on tests, either human-powered or automated, for determining the state of the code at any given point in a release cycle. Thus, we have put out release after release that either won&#039;t install cleanly, or won&#039;t upgrade successfully from a previous release. The trunk version of the code had a error that meant that Evergreen couldn&#039;t be compiled; that problem existed for three weeks before somebody noticed and fixed it. I&#039;m not pointing fingers, here; if I did that, I wouldn&#039;t have enough fingers to point back at myself for all of the problems I&#039;ve introduced that other people have had to fix. Johnathan Nightingale in &lt;a href=&quot;http://blog.johnath.com/2008/07/02/the-most-important-thing/&quot;&gt;The Most Important Thing … or How Mozilla Does Security and What You Can Steal&lt;/a&gt; provides a great overview of Mozilla&#039;s philosophy about and approach to testing. There is all kinds of goodness in this presentation, but one of the most interesting points is that &quot;money can be exchanged for services&quot; -- that is to say, if your existing development team doesn&#039;t have the skills or time to implement a testing infrastructure, there are companies that do have the ability to put together a test infrastructure for a given project. Once that infrastructure is in place, it tends to get extended and used by the existing development team because it makes their lives easier; they don&#039;t need to manually test a given code path every time in the future, or deal with regressions that aren&#039;t noticed until months in the future when the changes they were making are no longer fresh in their minds. It sometimes requires a culture change, though.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continuous integration&lt;/strong&gt;: Hand in hand with a testing framework is a continuous integration server that provides testing feedback on every commit to the Evergreen repository for a given set of branches. Even without a testing framework, it is possible to have a continuous integration server run through the process of installing all prerequisites, configuring the code, building and installing the code, and creating the database schema to at least determine whether the basics can be accomplished successfully to confirm that a branch is ready for release. This arguably also goes hand in hand with a team&#039;s process for addressing a security vulnerability: if you have a continuous integration server that can tell you if a given fix does not introduce basic build and install errors, then you can get a new release out with much more confidence that you&#039;re not going to be encouraging your users to jump to a broken package. Note that Equinox ran a continuous integration server for OpenSRF and Evergreen trunk &lt;a href=&quot;http://markmail.org/message/j6hd6634oimpum6x&quot;&gt;for a while&lt;/a&gt;, but that was &lt;a href=&quot;http://markmail.org/message/evjm4rdsricwz5qh&quot;&gt;killed&lt;/a&gt; and replaced by a &lt;a href=&quot;http://markmail.org/message/zfqnec2b6n6wjcsk&quot;&gt;call for volunteers to build a new continuous integration service&lt;/a&gt; (I can&#039;t find a more to-the-point call for volunteers, so perhaps it just hasn&#039;t been advertised widely enough - or again, perhaps we lack the skills in the community to get a standard CI service like &lt;a href=&quot;http://hudson-ci.org/&quot;&gt;Hudson&lt;/a&gt; running.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Packaging&lt;/strong&gt;: To decrease the difficulty of installing and configuring Evergreen, we need more investment in packaging Evergreen and all of its unpackaged dependencies. The idea is that a user should be able to run &quot;aptitude install evergreen&quot; or &quot;yum install evergreen&quot; and have the entire system installed and configured, and then run &quot;aptitude upgrade&quot; or &quot;yum upgrade&quot; to have newer versions installed. Right now the process is still rather onerous and requires a great deal of manual effort, although it has improved significantly since the early days of 2007. Again, this requires a particular set of skills that the Evergreen community does not appear to possess in depth: autoconf, automake, APT and RPM packaging - and perhaps some redesign of elements like skins to make local customizations easier to incorporate and keep up to date. This would be a natural complement to a continuous integration service, but much of the effort could also be done on its own.&lt;/li&gt;
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Fri, 02 Jul 2010 15:37:35 -0400</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/228-guid.html</guid>
    
</item>

</channel>
</rss>