<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">Hello Dale,</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">what an information :-( ... but perhaps
after using Gemstone/S for 8 years now its time for a summary
about that time.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">Starting with Gemstone/S eight years
ago was based on three points:</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">* easy persistency, object-oriented (or
better: heard lot of good things about it)<br>
</div>
<div class="moz-cite-prefix">* active database, database "kernel"
development on a very high level programming model<br>
</div>
<div class="moz-cite-prefix">* Smalltalk</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">After 8 years the first two points are
still strongly valid. My work colleagues do not understand this or
do not see this as main points. Its not mainstream - that seems to
be the major point. As I mentioned in my Londoner Talk about
Gemstone/S experiences, there is an opinion, that working in a NON
mainstream area is not worth per se (you may like that or not, but
I do now understand these people).<br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">Smalltalk itself is not that important
now for me, though I really love the language and the possibility
on the server side are great - so I see it more as a database
language in my case - but if I had to code in C#, Python or other
languages - it would not matter for me.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">I tried to open it by going a clear API
only oriented way with C#, Java, Python, Javascript bindings - but
it was not worth the time (to convince the colleagues) , because
my work was again NON mainstream. But it was worth the time to get
a better structure and better applications. <br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">I've published now 8 customer
applications over the last 8 years - all based on Gemstone/S and
the UI written completely in Javascript and all stuff is API
driven. <br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">So, I've to go seven further years ...
and its totally ok to say, that after that the Gemstone/S
experiences in my companies will be closed. None of the
applications I've written are cash cows ... so they could be
closed over the years.<br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">So, what would I do differently now ?</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">* Stay with the core Gemstone/S kernel
code as much as you can. This source base is maintained and comes
from one location</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">* Do not use other
Pharo/Squeak/VAST,VisualWorks code in your application unless you
have ported it to Gemstone by yourself (this is an aggressive
statement)</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">* Do not use Github as the base for
your source code loading sequence. Do not reference projects on
Github in your code.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">* Use prebuilt images for your
development (as the seaside and core kernel delivered by
GemtalkSystems in their product). For each new release of
Gemstone/S do this work ONCE and then that's it.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">* Look for a good infrastructure to
communication with other programming languages</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">* Exercise the upgrade process. This
has been proven to be the most critical part in all Gemstone/S
projects (perhaps due to the mistakes mentioned above) so far.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">* Look carefully about the license
restrictions you get with Gemstone/S licenses. The introduction
licenses (with limitations especially CPU usages) of Gemstone/S
encourages a different programming model than a full-blown
license.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">* Do not use Smalltalk in areas where
it is not well suited, one point is the UI. Look for other
languages</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">* Now with care: Consider PostgreSQL
and RabbitMQ as base parts of your infrastructure. There are base
interfaces from Gemstone available at Github for that. They have
not the quality of Gemstone/S product, but they are doing their
work and are isolated projects at Github.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">* <br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">And what would I not change ?</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">* The API way is pretty cool</div>
<div class="moz-cite-prefix">* Think in other Programming Languages,
use them in your projects - but the mistakes mentioned above are
also valid for projects in other languages.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">So, throwing away Pharo32/64 bit out of
GsDevKit* is the CORRECT solution. I can understand you here. The
base infrastructure for a product should only depend on stuff,
delivered by the product itself.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">Due to the fact, that Gemstone/S is
missing VERY MUCH in that area (product area - backup scripts,
update scripts, starting, stopping scripts and so on), it was the
best situation those days to join GsDevKit_home to fill that gap.
I do not use Seaside, I do not use tODE - I mainly use DevKit for
having a better infrastructure in maintaining my applications.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">The other point I use GsDevKit_home for
is GLASS and its loading of all the network stuff in ZInc*
projects (despite the mistakes I mentioned above), so one gets
HTTPS and HTTPS support.<br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">So, my option seems to be to stay with
Gemstone/S 3.6.x branch over the next years.</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">Marten<br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix"><br>
</div>
<div class="moz-cite-prefix">On 05.04.24 01:13, Dale Henrichs wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAFuPq9Vx+8_1eQ2HhXfSde=ZDgThVvRtsM9DV9043SE5GxdeDg@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div dir="ltr">***I inadvertantly left glass off my original
reply ... resending to entire list***
<div>Marten,</div>
<div><br>
</div>
<div>TL;DR:<br>
</div>
<div style="margin-left:40px">GsDevKit_home is not being
maintained anymore. <br>
</div>
<div style="margin-left:40px"><br>
</div>
<div style="margin-left:40px">The heir apparent
GsDevKit_stones is available but is not quite a complete
replacement for the GsDevKit_home functionality... and is
still under development.</div>
<div style="margin-left:40px"><br>
</div>
<div style="margin-left:40px">You can create/delete/start/stop
stones and netldi with the current GsDevKit_stones.</div>
<div style="margin-left:40px"><br>
</div>
<div style="margin-left:40px">If you are brave/desperate and
willing to give me constructive criticism (see the missing
pieces section below), send me an email and I'll provide you
with "getting started instructions".<br>
</div>
<div><br>
</div>
<div>I wish I could say that I have a replacement solution for
you, but if you look back through your emails, I sent mail 5
years ago that I was not going to be able keep GsDevKit_home
working without help ... GsDevKit_home relies on a 32 bit
Pharo image and support for 32 bit executables has been
slowly going away ... a few developers have stepped up to
help, but the effort did not reach a satisfactory conclusion
... <br>
</div>
<div><br>
</div>
<div>3 years ago, I started work on superDoit[1] a scripting
environment based on 64bit GemStone. <br>
<div>I started superDoit with the intent that it would be a
replacement for the 32 bit Pharo image in GsDevKit_home. <br>
</div>
<div><br>
</div>
<div>2 years ago, it became apparent that just replacing the
32 bit Pharo image with a superDoit script wasn't going to
be feasible, so I started work on GsDevKit_stones[2].</div>
<div><br>
</div>
<div>GsDevKit_stones is much simpler and more flexible than
GsDevKit_stones and is "entirely" written in Smalltalk. It
is based on a shared Rowan code library. GsDevKit_stones
also leverages the new FileSystem support that has shown
up in the recent releases of GemStone ...<br>
</div>
</div>
<div><br>
</div>
<div>Of course the bad news in this story is that very little
of the "code base" (mostly bash scripts) survives the
transition from bash to smalltalk, so there has been a lot
of work to do to rewrite the GsDevKIt_home scripts in
superDoit.<br>
</div>
<div><br>
</div>
<div>Most of the functionality present in GsDevKit_homes has
been implemented in GsDevKit_stones scripts[3], but there
are a few critical pieces still missing:</div>
<ol>
<li>upgradeSeasideImage functionality<br>
</li>
<li>a way to "attach" GsDevKit_stones to an existing
GsDevKit_home environment</li>
<li>a replacement for the tODE GUI</li>
<li>reviewing/improving help messages for the scripts,
including an eye toward consistency of terminology across
the various scripts</li>
</ol>
The replacement for upgradeSeasideImage requires a fairly
significant refactoring of the code used in the existing
scripts.<br>
<br>
Attaching GsDevKit_stones should be a relatively easy project
to put together using existing scripts, but until
GsDevKit_stones is close ready for release it isn't necessary.<br>
<br>
The ultimate replacement for the tODE GUI will be a
combination of Jadeite[4][5] and Rowan 3[6] ... Jadeite and
Rowan are being developed internally but are not quite ready
for release.<br>
<br>
With the release of 3.7.1, we shipped an experimental Rowan 3
extent that is suitable for use with GsDevKit_stones scripts
... not production.<br>
<br>
I personally have been using GsDevKit_stones in my work for
the last year and as I mentioned before, GsDevKit_stones is
being used by smalltalkCI[7] to drive the gemstone jobs for
the last year as well ...<br>
<br>
If you are hurt by the lack of the32 bit tODE GUI ... yes
there are some tODE GUI fans out there:). There is a rough
workaround that might help ... send me email for details.<br>
<br>
Overall, I think that there are still some rough spots, and I
can't promise that GsDevKit_stones won't undergo some major
changes before it's ready for release...but it is the only
alternative for you if you are experiencing 32 bit pharo image
issues. <br>
<br>
I wish I had a better answer, but I cannot afford to spend
time trying to fix 32 bit pharo related issues ... I think my
time is better spent doing what I can to make progress on
GsDevKit_stones ...<br>
<br>
Dale<br>
<div>
<div>[1] <a href="https://github.com/dalehenrich/superDoit"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://github.com/dalehenrich/superDoit</a></div>
</div>
<div>[2] <a
href="https://github.com/GsDevKit/GsDevKit_stones"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://github.com/GsDevKit/GsDevKit_stones</a></div>
<div>[3] <a
href="https://github.com/GsDevKit/GsDevKit_stones/tree/v2/bin"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://github.com/GsDevKit/GsDevKit_stones/tree/v2/bin</a></div>
<div>[4] <a href="https://github.com/GemTalk/JadeiteForPharo"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://github.com/GemTalk/JadeiteForPharo</a></div>
<div>[5] <a href="https://github.com/GemTalk/Jadeite"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://github.com/GemTalk/Jadeite</a></div>
<div>[6] <a
href="https://github.com/GemTalk/Rowan/tree/masterV3.2"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://github.com/GemTalk/Rowan/tree/masterV3.2</a></div>
<div>[7] <a href="https://github.com/hpi-swa/smalltalkCI"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://github.com/hpi-swa/smalltalkCI</a></div>
<div class="gmail-yj6qo gmail-ajU">
<div id="gmail-:8zx" class="gmail-ajR" role="button"
tabindex="0" aria-label="Show trimmed content"
aria-expanded="false"><img class="gmail-ajT"
src="https://ssl.gstatic.com/ui/v1/icons/mail/images/cleardot.gif"
moz-do-not-send="true"></div>
</div>
</div>
<br>
<div>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Wed, Apr 3, 2024 at
2:16 PM Marten Felddtmann via Glass <<a
href="mailto:glass@lists.gemtalksystems.com"
moz-do-not-send="true" class="moz-txt-link-freetext">glass@lists.gemtalksystems.com</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
<p>Hello,</p>
<p>I would like to know, if 3.7.1 is supported by
GsDevKit_home ... <br>
</p>
<p>createStone gc371 3.7.1 - does not work and throws
errors:</p>
<p><span style="font-family:monospace"><span
style="font-weight:bold;color:rgb(84,255,255);background-color:rgb(255,255,255)">=================</span><span
style="color:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br>
<span
style="font-weight:bold;color:rgb(84,255,255);background-color:rgb(255,255,255)">
GsDevKit script: startStone -b test371</span><span
style="color:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br>
<span
style="font-weight:bold;color:rgb(84,255,255);background-color:rgb(255,255,255)">
path:
/datadisk/GsDevKit_home/bin/startStone</span><span
style="color:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br>
<span
style="font-weight:bold;color:rgb(84,255,255);background-color:rgb(255,255,255)">=================</span><span
style="color:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br>
/datadisk/GsDevKit_home/server/stones/test371/product/bin/waitstone[Info]:
GemStone version '3.7.1' <br>
Network service
!#dir:/datadisk/GsDevKit_home/server/stones/test371/logs#log:%N%P.log#server!test371
is ready. <br>
<span
style="font-weight:bold;color:rgb(84,255,84);background-color:rgb(255,255,255)">stone
test371 already running, to restart use -r option
:: startStone -b test371</span><span
style="color:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br>
Install tODE on stone: test371 <br>
[02.04.2024 19:33:10.432 CEST] <br>
gci login: currSession 1 rpc gem processId 133239
socket 8 <br>
[02.04.2024 19:33:10.506 CEST] <br>
gci login: currSession 1 rpc gem processId 133245
socket 8 <br>
<span
style="color:rgb(178,24,24);background-color:rgb(255,255,255)">Error:
while installing tODE on server: 'a
ImproperOperation occurred (error 2085), Expected
nil to be a Boolean.'</span><span
style="color:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br>
TDTopezGemStoneClient(Object)>>error: <br>
TDTopezGemStoneClient>>installTodeBlock: in
Block: [ :ex | ... <br>
BlockClosure>>cull: <br>
MethodContext(ContextPart)>>handleSignal: in
Block: [ self exceptionHandlerBlock cull: exception
] <br>
BlockClosure>>ensure: <br>
MethodContext(ContextPart)>>handleSignal: <br>
GsErrorNotification(Exception)>>signal <br>
TodeInstallSession(TodeSession)>>signalServerError: <br>
TodeInstallSession(GciSession)>>getNbResult <br>
TodeInstallSession(GciSession)>>getNbResult <br>
TodeInstallSession(GciSession)>>getNbResultAsOop <br>
TodeInstallSession(GciSession)>>rawExecuteStringNB:envId: in
Block: [ ... <br>
BlockClosure>>ensure: <br>
Cursor>>showWhile: <br>
TodeInstallSession(GciSession)>>rawExecuteStringNB:envId: <br>
TodeInstallSession(GciSession)>>executeStringNB:envId: <br>
TDTopezGemStoneClient>>installTode: in Block:
[ :installSession | ... <br>
TDTopezGemStoneClient>>installTodeBlock: in
Block: [ installBlock value: installSession ] <br>
BlockClosure>>ensure: <br>
TDTopezGemStoneClient>>installTodeBlock: in
Block: installTodeBlock: installBlock... <br>
BlockClosure>>on:do: <br>
TDTopezGemStoneClient>>installTodeBlock: <br>
TDTopezGemStoneClient>>installTode: <br>
TDShell>>executeLoadServer: in Block: [ ^ self
topezClient installTode: options ] <br>
Dictionary>>at:ifPresent:ifAbsent: <br>
Dictionary>>at:ifAbsent:ifPresent: <br>
TDShell>>executeLoadServer: <br>
TDShell>>executeBuiltIn: <br>
TDShell>>evaluateCommand:batchMode: <br>
TDShell>>evaluate:batchMode: in Block: [
:command | result := self evaluateCommand:
comma...etc... <br>
<span
style="font-weight:bold;color:rgb(255,84,84);background-color:rgb(255,255,255)">Error
on or near line 99 :: devKitCommandLine loadTode
test371 :: devKitCommandLine loadTode test371</span><span
style="color:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br>
<span
style="font-weight:bold;color:rgb(255,84,84);background-color:rgb(255,255,255)">Error
on or near line 55 :: todeLoad test371 :: todeLoad
test371</span><span
style="color:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br>
<span
style="font-weight:bold;color:rgb(255,84,84);background-color:rgb(255,255,255)">Error
on or near line 220 :: createStone test371 3.7.1
:: createStone test371 3.7.1</span><br>
<span
style="color:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br>
<br>
</span></p>
<p><br>
</p>
<p><br>
</p>
<p><br>
</p>
</div>
_______________________________________________<br>
Glass mailing list<br>
<a href="mailto:Glass@lists.gemtalksystems.com"
target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">Glass@lists.gemtalksystems.com</a><br>
<a
href="https://lists.gemtalksystems.com/mailman/listinfo/glass"
rel="noreferrer" target="_blank" moz-do-not-send="true"
class="moz-txt-link-freetext">https://lists.gemtalksystems.com/mailman/listinfo/glass</a><br>
</blockquote>
</div>
</div>
</div>
</blockquote>
<p><br>
</p>
</body>
</html>