<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">I have nothing to add other than the “Order of Rusty Evergreen” and the role of “assessor,” just brought me a moment of real joy.  Thanks.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:#385623">Ruth Frasur (she/they)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#385623">Coordinator<o:p></o:p></span></p>
<p class="MsoNormal"><i><span style="color:#385623">Evergreen Indiana Library Consortium<o:p></o:p></span></i></p>
<p class="MsoNormal"><i><span style="color:#385623">Evergreen Community Development Initiative<o:p></o:p></span></i></p>
<p class="MsoNormal">Indiana State Library<o:p></o:p></p>
<p class="MsoNormal">140 N. Senate Ave. <o:p></o:p></p>
<p class="MsoNormal">Indianapolis, IN 46204<o:p></o:p></p>
<p class="MsoNormal">(317) 232-3691<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Evergreen-dev <evergreen-dev-bounces@list.evergreen-ils.org>
<b>On Behalf Of </b>Shula Link via Evergreen-dev<br>
<b>Sent:</b> Friday, June 2, 2023 10:10 AM<br>
<b>To:</b> Bill Erickson <berickxx@gmail.com><br>
<b>Cc:</b> evergreen-dev@list.evergreen-ils.org<br>
<b>Subject:</b> Re: [Evergreen-dev] OpenSRF / Redis / Rust<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:red">**** This is an EXTERNAL email. Exercise caution. DO NOT open attachments or click links from unknown senders or unexpected email. ****</span>
<o:p></o:p></p>
<div class="MsoNormal" align="center" style="text-align:center">
<hr size="2" width="100%" align="center">
</div>
<div>
<div>
<div>
<p class="MsoNormal">I'm working through the Rust Tutorial right now, actually. I'd be interested in possibly joining the Order of Rusty Evergreen as an assessor.<o:p></o:p></p>
</div>
<p class="MsoNormal"><br clear="all">
<o:p></o:p></p>
<div>
<div>
<div>
<p class="MsoNormal">Shula Link (she/her) <o:p></o:p></p>
<div>
<p class="MsoNormal">Systems Services Librarian<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Greater Clarks Hill Regional Library<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="mailto:slink@columbiacountyga.gov" target="_blank">slink@columbiacountyga.gov</a> | <a href="mailto:slink@gchrl.org" target="_blank">slink@gchrl.org</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">706-447-6702<o:p></o:p></p>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Thu, Jun 1, 2023 at 5:34 PM Bill Erickson via Evergreen-dev <<a href="mailto:evergreen-dev@list.evergreen-ils.org">evergreen-dev@list.evergreen-ils.org</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">On Thu, Jun 1, 2023 at 9:10 AM Galen Charlton via Evergreen-dev <<a href="mailto:evergreen-dev@list.evergreen-ils.org" target="_blank">evergreen-dev@list.evergreen-ils.org</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<p class="MsoNormal">Hi,<br>
<br>
On Wed, May 31, 2023 at 11:08 AM Jason Boyer via Evergreen-dev <<a href="mailto:evergreen-dev@list.evergreen-ils.org" target="_blank">evergreen-dev@list.evergreen-ils.org</a>> wrote:<br>
> I know "should we replace all of the 'C'?" wasn't really Bill's original question
<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">... but I think this is the real question before us, or at least, close to it.<o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I hesitated to start with "replace all the C", but you're right.  Either we adopt it or we don't.  Having a full investment plan is way better than waiting to see what sticks.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">For my part, I'm all in.  Replacing C is foremost on my mind, but once we're accustomed to using Rust, I could see it moving beyond the traditional C borders of "must be fast" into more general purpose API / utility coding.  (For some things,
 anyway.  It is decidedly not a rapid prototyping language).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">For the curious, here's an implementation of the "open-ils.actor.get_barcodes" API based on my OpenSRF / Evergreen Rust code:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="https://protect2.fireeye.com/v1/url?k=31323334-50bba2bf-31367a34-4544474f5631-677b26bb3baa3dcf&q=1&e=f210b66a-fba6-40fe-8189-e5a4dc1440af&u=https%3A%2F%2Fgithub.com%2Fkcls%2Fevergreen-universe-rs%2Fblob%2Fmain%2Fevergreen%2Fsrc%2Fbin%2Feg-svc-rspub%2Fmethods.rs%23L150" target="_blank">https://github.com/kcls/evergreen-universe-rs/blob/main/evergreen/src/bin/eg-svc-rspub/methods.rs#L150</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It should seem familiar, Rust syntax notwithstanding.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">But back to the topic at hand...<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal">If we move forward with the Rust router and websockets gateway and, two years from now, we find that that's all there is that's written in Rust, in my opinion it would not have been worth the concrete deployment and packaging issues we
 would run into, especially on Debian. Rust and Cargo are very much a moving target, and whatever you think of Debian's approach to packing the Rust build environment, Debian's notion of a stable version of Rust is clearly not new enough as compared to the
 rest of the Rust ecosystem. Now, it's not the end of the world if we have to live with using rustup to deploy on Debian, but that _is_ a tradeoff.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Similarly, the crate ecosystem is in great flux. One of the things I discovered when I put Bill's branch out for a test drive today is that one of the major dependencies of the Rust opensrf-websockets code,
<a href="https://crates.io/crates/websocket" target="_blank">https://crates.io/crates/websocket</a>, is now effectively deprecated - in part, because one of _its_ dependencies _will_ break in future versions of Rust. Again, not the end of the world, as alternative
 libraries are available, but we _will_ have a dependency treadmill to deal with similar to the Node and Angular stuff. It looks like there are at least 101 dependencies among the entire Rust opensrf project.<o:p></o:p></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Yes, the ecosystem is young and in flux.  This could be a challenge, especially in the short term.  A perfectly reasonable argument against going in too fast and half-baked.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I'm not so concerned about the number of dependencies, though.  OpenSRF has about 27 Perl dependencies in the Makefile, plus whatever they depend on.  It's to be expected, to some extent.  And as the ecosystem matures, I would expect versioning
 conflicts to diminish.  <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I would also hesitate to compare Rust too closely to Node/Angular.  I think we can agree that Node is kind of special :\  My node_modules directory has 815 package directories. And, for added fun, an additional 152 node_modules subdirectories within
 those packages. I mean...<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">My main concerns, which are echoed in other responses to this thread:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">1. Packaging / Release Building<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">2. Relative youth of the language and the ecosystem.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">3. Community developer mindshare<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The first 2 can be accomplished with time and effort.  #3 requires a conscious decision on our part and, to some extent, should probably happen first.  So I guess the REAL ;) question is: who wants to join my Rust Seal Strike Force 6 Team
 Thunder Brigade  to learn the language and assess its viability as a general-purpose language for OpenSRF / Evergreen?<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I really appreciate all the thoughts and feedback!<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">-b<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
<p class="MsoNormal">_______________________________________________<br>
Evergreen-dev mailing list<br>
<a href="mailto:Evergreen-dev@list.evergreen-ils.org" target="_blank">Evergreen-dev@list.evergreen-ils.org</a><br>
<a href="https://protect2.fireeye.com/v1/url?k=31323334-50bba2bf-31367a34-4544474f5631-edcc8c98585635d9&q=1&e=f210b66a-fba6-40fe-8189-e5a4dc1440af&u=http%3A%2F%2Flist.evergreen-ils.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fevergreen-dev" target="_blank">http://list.evergreen-ils.org/cgi-bin/mailman/listinfo/evergreen-dev</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
</body>
</html>