[Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
22 messages Options
12
Reply | Threaded
Open this post in threaded view
|

[Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Mariano Martinez Peck
Hi guys,

I am evaluating GemStone for a client and I want to give it a try. I have a very high level idea of GemStone but I never use it for real. The application I may need to run in GemStone is a Seaside app 3.0 + Magritte3. 

Something that confuses me a lot if all these pieces that seem somehow related: GemBuilder for Smalltalk, GemTools, and tODE. And I have a few questions related to these. Thanks in advance for any help you can give me. 

From what I understand, I do need a kind of "GemBuilder for Smalltalk" in order to connect my client Smalltalk (Pharo in my case) to GemStone. But there isn't any GemBuilder for Pharo (only VW and VA). I also thought part of GemBuilder was to map certain kernel classes of the client language to GemStone, to retrieve objects from GemStone into my smalltalk client vm..etc.

So..I guess GemTools is a subset of an equivalent "GemBuilder for Pharo"? What is its relation to the GemBuilder? 
From what I understand, GemTools offers me some tools to connect to a GemStone server, load code, execute some code on the server, etc etc etc. I think I can do more or less the same with Topaz as well. That means that GemBuilder is optional and I could use Topaz only. If I use Topaz directly, it means that I don't need any GemBuilder at all for Pharo? If true, how then it happens that "mapping of certain kernel classes" that I read somewhere?  in other word, why would I not need a GemBuilder for Pharo but do need it for VW and VA? Just because there is no UI and all we have is seaside running? And if I run Seaside in VW then I don't need GemBuilder for VW?

If I don't need GemBuilder at all, how can I know which classes/methods of Pharo can I use and which ones I cannot? 

I noticed the GemTools is based on a very very old Pharo image. I guess this is not a very big problem because I would use that image only to load my code into GemStone and maybe for other small issues. Still, I will continue developing my app in Pharo 2.0 and I will keep having my ConfigurationOfXXX with the proper load for GemStone. Right? 

Anyway...now how is tODE related to GemTools? What does tODE help me regarding GemStone? Can I use it already or should I still with GemTools/Topaz for the moment? I searched  in Gemtalk Systems and I found nothing. 


Thank you very much!

--
Mariano
http://marianopeck.wordpress.com

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

jtuchel
Mariano,

I guess you just nailed down a list of questions that many others have about Gemstone/S and GLASS. While I think I know some of the answers to your questions, I hope for someone with more experience to answer them. Some of the questions are also open for me ;-)

So thanks for bringing these up and thanks in advance for qualified answers ;-)

Joachim


Am 30.09.13 22:48, schrieb Mariano Martinez Peck:
Hi guys,

I am evaluating GemStone for a client and I want to give it a try. I have a very high level idea of GemStone but I never use it for real. The application I may need to run in GemStone is a Seaside app 3.0 + Magritte3. 

Something that confuses me a lot if all these pieces that seem somehow related: GemBuilder for Smalltalk, GemTools, and tODE. And I have a few questions related to these. Thanks in advance for any help you can give me. 

From what I understand, I do need a kind of "GemBuilder for Smalltalk" in order to connect my client Smalltalk (Pharo in my case) to GemStone. But there isn't any GemBuilder for Pharo (only VW and VA). I also thought part of GemBuilder was to map certain kernel classes of the client language to GemStone, to retrieve objects from GemStone into my smalltalk client vm..etc.

So..I guess GemTools is a subset of an equivalent "GemBuilder for Pharo"? What is its relation to the GemBuilder? 
From what I understand, GemTools offers me some tools to connect to a GemStone server, load code, execute some code on the server, etc etc etc. I think I can do more or less the same with Topaz as well. That means that GemBuilder is optional and I could use Topaz only. If I use Topaz directly, it means that I don't need any GemBuilder at all for Pharo? If true, how then it happens that "mapping of certain kernel classes" that I read somewhere?  in other word, why would I not need a GemBuilder for Pharo but do need it for VW and VA? Just because there is no UI and all we have is seaside running? And if I run Seaside in VW then I don't need GemBuilder for VW?

If I don't need GemBuilder at all, how can I know which classes/methods of Pharo can I use and which ones I cannot? 

I noticed the GemTools is based on a very very old Pharo image. I guess this is not a very big problem because I would use that image only to load my code into GemStone and maybe for other small issues. Still, I will continue developing my app in Pharo 2.0 and I will keep having my ConfigurationOfXXX with the proper load for GemStone. Right? 

Anyway...now how is tODE related to GemTools? What does tODE help me regarding GemStone? Can I use it already or should I still with GemTools/Topaz for the moment? I searched  in Gemtalk Systems and I found nothing. 


Thank you very much!

--
Mariano
http://marianopeck.wordpress.com


_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass


_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Martin McClure-5
In reply to this post by Mariano Martinez Peck
On 09/30/2013 01:48 PM, Mariano Martinez Peck wrote:
> Hi guys,
>
> I am evaluating GemStone for a client and I want to give it a try. I
> have a very high level idea of GemStone but I never use it for real. The
> application I may need to run in GemStone is a Seaside app 3.0 + Magritte3.
>
> Something that confuses me a lot if all these pieces that seem somehow
> related: GemBuilder for Smalltalk, GemTools, and tODE. And I have a few
> questions related to these. Thanks in advance for any help you can give me.

Hi Mariano,

I'm glad you're wanting to try out GemStone/S!

Some short answers, for now:

The thing that GemBuilder for Smalltalk (GBS), GemTools, tODE, and Topaz
all have in common is that they are all development environments for
developing GemStone code. Each has its advantages and disadvantages.

GBS *also* allows the creation of distributed client/server Smalltalk
applications, with the client being VW or VA Smalltalk and the server
being GemStone Smalltalk. Its development tools are slanted towards that
task, though they also work for developing and debugging standalone
GemStone applications.

If you're developing a Seaside app that will run in GemStone/S, you can
use whichever development environment seems best for the task at hand --
tODE, GemTools, or Topaz.

I know I didn't get *all* of your questions answered, but I hope that
this helps you navigate the landscape.

Regards,

-Martin

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Richard Sargent (again)
In reply to this post by Mariano Martinez Peck
>> Something that confuses me a lot if all these pieces that seem somehow related: GemBuilder for Smalltalk, GemTools, and tODE.
 
That's not surprising, when all is said and done.
GemBuilder is the only truly licensed and supported product - supported by GemTalk Systems - among those three. GemTools, tODE, and Jade are the work of individual employees of GemTalk Systems but open sourced to the community (at least some of them). Additionally, there is Topaz, which one could consider the GemStone/S command-line interpreter, definitely not an IDE.
 
One of the most important things in GBS is its "traversal buffer" technology which allows seamless and high performance replication of objects between the client and the server. This allows one to have the same class defined on the server and on the client (VW or VA) which some subset of the functionality defined in the server and some in the client, with the data being replicated between the two as the client and server processes interact.
 
Topaz, GemTools, and Jade all allow one to develop against a server. The latter two provide a GUI similar to the familiar and mostly well-loved Smalltalk browsers.
 
 
>> I also thought part of GemBuilder was to map certain kernel classes of the client language to GemStone
 
Not just certain kernel classes, but any classes you wish, including your application classes. This is important if you want to have a rich client/server application, not just a server app.
 
>> why would I not need a GemBuilder for Pharo but do need it for VW and VA?
 
It isn't that you don't need a GemBuilder for Pharo, but that we do not have a commercial product for Pharo. Virtually all of our paying customers have either VA or VW applications. GemBuilder is an elaborate product, which requires considerable effort to port to a new environment and to support.
 
 
>> how is tODE related to GemTools?
 
I think the answer to this question is "barely!". tODE is a fascinating approach to an IDE, hosted in Pharo but with virtually all the work other than presentation provided in the server. You should refer to Dale's various conference talks for details on tODE. One of the most important things it addresses is the difficulty in modifying or subclassing existing browser classes to add capabilities. Over the years, I have had countless frustrations while trying to avoid modifying vendor code but adding features. tODE "deconstructs" the browser, in theory making this much easier to accomplish.
 
 
I hope this helps answer some of your questions, even if it fails to tell you what to do. :-)
 
 


From: [hidden email] [mailto:[hidden email]] On Behalf Of Mariano Martinez Peck
Sent: September-30-13 1:48 PM
To: [hidden email]
Subject: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools,and tODE

Hi guys,

I am evaluating GemStone for a client and I want to give it a try. I have a very high level idea of GemStone but I never use it for real. The application I may need to run in GemStone is a Seaside app 3.0 + Magritte3. 

Something that confuses me a lot if all these pieces that seem somehow related: GemBuilder for Smalltalk, GemTools, and tODE. And I have a few questions related to these. Thanks in advance for any help you can give me. 

From what I understand, I do need a kind of "GemBuilder for Smalltalk" in order to connect my client Smalltalk (Pharo in my case) to GemStone. But there isn't any GemBuilder for Pharo (only VW and VA). I also thought part of GemBuilder was to map certain kernel classes of the client language to GemStone, to retrieve objects from GemStone into my smalltalk client vm..etc.

So..I guess GemTools is a subset of an equivalent "GemBuilder for Pharo"? What is its relation to the GemBuilder? 
From what I understand, GemTools offers me some tools to connect to a GemStone server, load code, execute some code on the server, etc etc etc. I think I can do more or less the same with Topaz as well. That means that GemBuilder is optional and I could use Topaz only. If I use Topaz directly, it means that I don't need any GemBuilder at all for Pharo? If true, how then it happens that "mapping of certain kernel classes" that I read somewhere?  in other word, why would I not need a GemBuilder for Pharo but do need it for VW and VA? Just because there is no UI and all we have is seaside running? And if I run Seaside in VW then I don't need GemBuilder for VW?

If I don't need GemBuilder at all, how can I know which classes/methods of Pharo can I use and which ones I cannot? 

I noticed the GemTools is based on a very very old Pharo image. I guess this is not a very big problem because I would use that image only to load my code into GemStone and maybe for other small issues. Still, I will continue developing my app in Pharo 2.0 and I will keep having my ConfigurationOfXXX with the proper load for GemStone. Right? 

Anyway...now how is tODE related to GemTools? What does tODE help me regarding GemStone? Can I use it already or should I still with GemTools/Topaz for the moment? I searched  in Gemtalk Systems and I found nothing. 


Thank you very much!

--
Mariano
http://marianopeck.wordpress.com

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Mariano Martinez Peck
Thank you all for your answers. It is now pretty clear to me the differences and what I need and don't need. Thanks. 
One last question regarding tODE...I do understand it provides some tools built on top on the web, and I have seen a few presentations from Dale. The thing is that I remember seeing some emails from Dale talking or relating tODE with GemTools. So...besides having an IDE on top on the web, does tODE provides or will provide some functionality of GemTools? I GUESS you may be able to run tODE directly on the seaside running in GemStone itself so it helps you browse the code etc. If we have a workspace...then I guess we are able to load our app code into GemStone and do what we want.. etc.. so maybe this is the thing? that running tODE in GemStone could give us the functionality we now have in GemTools?

Now that I have this thread already open ;) I wonder if someone has ever written some "port rules" or things to be aware when deploying to GemStone. I guess certain Pharo kernel classes/methods may not exist or answer something different, etc... And I think the answer would be around Grease?  In other words, what I ask is the following: imagine (it is not the case unfortunately) I don't use any other library than seaside/magritte. What are the things that would make the port to gemstone complicated? Is there any list or conventions somewhere?

Thanks





On Tue, Oct 1, 2013 at 3:55 AM, Richard Sargent <[hidden email]> wrote:
>> Something that confuses me a lot if all these pieces that seem somehow related: GemBuilder for Smalltalk, GemTools, and tODE.
 
That's not surprising, when all is said and done.
GemBuilder is the only truly licensed and supported product - supported by GemTalk Systems - among those three. GemTools, tODE, and Jade are the work of individual employees of GemTalk Systems but open sourced to the community (at least some of them). Additionally, there is Topaz, which one could consider the GemStone/S command-line interpreter, definitely not an IDE.
 
One of the most important things in GBS is its "traversal buffer" technology which allows seamless and high performance replication of objects between the client and the server. This allows one to have the same class defined on the server and on the client (VW or VA) which some subset of the functionality defined in the server and some in the client, with the data being replicated between the two as the client and server processes interact.
 
Topaz, GemTools, and Jade all allow one to develop against a server. The latter two provide a GUI similar to the familiar and mostly well-loved Smalltalk browsers.
 
 
>> I also thought part of GemBuilder was to map certain kernel classes of the client language to GemStone
 
Not just certain kernel classes, but any classes you wish, including your application classes. This is important if you want to have a rich client/server application, not just a server app.
 
>> why would I not need a GemBuilder for Pharo but do need it for VW and VA?
 
It isn't that you don't need a GemBuilder for Pharo, but that we do not have a commercial product for Pharo. Virtually all of our paying customers have either VA or VW applications. GemBuilder is an elaborate product, which requires considerable effort to port to a new environment and to support.
 
 
>> how is tODE related to GemTools?
 
I think the answer to this question is "barely!". tODE is a fascinating approach to an IDE, hosted in Pharo but with virtually all the work other than presentation provided in the server. You should refer to Dale's various conference talks for details on tODE. One of the most important things it addresses is the difficulty in modifying or subclassing existing browser classes to add capabilities. Over the years, I have had countless frustrations while trying to avoid modifying vendor code but adding features. tODE "deconstructs" the browser, in theory making this much easier to accomplish.
 
 
I hope this helps answer some of your questions, even if it fails to tell you what to do. :-)
 
 


From: [hidden email] [mailto:[hidden email]] On Behalf Of Mariano Martinez Peck
Sent: September-30-13 1:48 PM
To: [hidden email]
Subject: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools,and tODE

Hi guys,

I am evaluating GemStone for a client and I want to give it a try. I have a very high level idea of GemStone but I never use it for real. The application I may need to run in GemStone is a Seaside app 3.0 + Magritte3. 

Something that confuses me a lot if all these pieces that seem somehow related: GemBuilder for Smalltalk, GemTools, and tODE. And I have a few questions related to these. Thanks in advance for any help you can give me. 

From what I understand, I do need a kind of "GemBuilder for Smalltalk" in order to connect my client Smalltalk (Pharo in my case) to GemStone. But there isn't any GemBuilder for Pharo (only VW and VA). I also thought part of GemBuilder was to map certain kernel classes of the client language to GemStone, to retrieve objects from GemStone into my smalltalk client vm..etc.

So..I guess GemTools is a subset of an equivalent "GemBuilder for Pharo"? What is its relation to the GemBuilder? 
From what I understand, GemTools offers me some tools to connect to a GemStone server, load code, execute some code on the server, etc etc etc. I think I can do more or less the same with Topaz as well. That means that GemBuilder is optional and I could use Topaz only. If I use Topaz directly, it means that I don't need any GemBuilder at all for Pharo? If true, how then it happens that "mapping of certain kernel classes" that I read somewhere?  in other word, why would I not need a GemBuilder for Pharo but do need it for VW and VA? Just because there is no UI and all we have is seaside running? And if I run Seaside in VW then I don't need GemBuilder for VW?

If I don't need GemBuilder at all, how can I know which classes/methods of Pharo can I use and which ones I cannot? 

I noticed the GemTools is based on a very very old Pharo image. I guess this is not a very big problem because I would use that image only to load my code into GemStone and maybe for other small issues. Still, I will continue developing my app in Pharo 2.0 and I will keep having my ConfigurationOfXXX with the proper load for GemStone. Right? 

Anyway...now how is tODE related to GemTools? What does tODE help me regarding GemStone? Can I use it already or should I still with GemTools/Topaz for the moment? I searched  in Gemtalk Systems and I found nothing. 


Thank you very much!

--
Mariano
http://marianopeck.wordpress.com



--
Mariano
http://marianopeck.wordpress.com

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

otto
Mariano,

We've been running a Seaside 3 / Magritte 3 app on GS for a while now.

We develop in Pharo 1.4 (suppose that could be 2). The application
works in Pharo 1.4, almost all tests run in Pharo 1.4. There are a few
very small tests that we run in GemStone only, but to be honest I had
to search for them now because I could not remember - so we rarely
touch them.

We then write the code to filetree and use filetree to load back into
GS via topaz.

The only thing we use GemTools for is to hunt for bugs. If we really
can't understand why the app works in Pharo and not in GS, we use
GemTools to set a breakpoint and figure out what's going on. Once we
know, we exit GemTools and write code in Pharo. Sometimes we edit code
using GemTools just to see how something will work if it is that
specific to GS. Also, sometimes, it helps to inspect data objects
which we only have in a GS DB.

We do not even use GemTools to work on remote GS instances. We only
use topaz for that. Topaz is good enough for most things. In 6 years,
it happened about 2 times that we made a backup of the production DB,
copy it local and then use GemTools to debug.

I would not consider using a GBS based tool, I would just develop in
Pharo, given that you know Pharo pretty well. GemTools is not workable
as a development tool. And I can't imagine that tODE is. That is if
you use refactoring tools, customise your image and run things like
lint.

Some more answers below:

> that running tODE in GemStone could give us the
> functionality we now have in GemTools?

I think so. I think that the energy that would have to go into tODE to
make it more than that would be enormous, but then I would be glad to
hear otherwise.

> Now that I have this thread already open ;) I wonder if someone has ever
> written some "port rules" or things to be aware when deploying to GemStone.
> I guess certain Pharo kernel classes/methods may not exist or answer
> something different, etc... And I think the answer would be around Grease?
> In other words, what I ask is the following: imagine (it is not the case
> unfortunately) I don't use any other library than seaside/magritte. What are
> the things that would make the port to gemstone complicated? Is there any
> list or conventions somewhere?

We've used Grease and have some stuff that we did before grease
existed. And we've not been good at contributing stuff. Mainly because
we get under pressure and then soon fall behind, sticking to older
versions. Upgrading is costly. Not sure how to improve this situation.

Having said this, we're willing to help and give anyone stuff we've
done to make the port easier. It is not that onerous. Dale and others
have done a lot; just to get Seaside into GS extended a lot of GS
kernel classes to be Pharo / Seaside compatible.

We have 2 Metacello configs. The one called "Runtime" loads all the
Seaside / Magritte / Whatever tools we use from the community, with
some differences between what we load into GS / Pharo. The other is
our own project that is dependent on Runtime, also with small
compatibility changes between the different environments.

Please let me know where I can give you more info or code.

Cheers
Otto
_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Richard Sargent
Administrator
In reply to this post by Mariano Martinez Peck
>> regarding tODE...I do understand it provides some tools built on top on the web

Dale is the authority on tODE, but I don't think it has anything build on top of the web. There was an effort by someone else to port it to Amber Smalltalk, but I don't know the state of that.

tODE is presently an environment for programming a GemStone server. However, it is designed to allow it to be adapted to other purposes, including being an IDE within a single environment such as Pharo or any other Smalltalk.


>> does tODE provides or will provide some functionality of GemTools?

In that GemTools provides an IDE for GemStone/S development, tODE provides the same functionality. There may be features in GemTools that are not present in tODE, but that is something Dale could clarify. One of the things that tODE was intended for was to provide GemTools-like capability without the poor performance the event-driver user interface model displays over a WAN.

Dale has been using tODE itself for his GemStone development work over the last 6-8 months ... exclusively.



On Tue, Oct 1, 2013 at 6:11 AM, Mariano Martinez Peck <[hidden email]> wrote:
Thank you all for your answers. It is now pretty clear to me the differences and what I need and don't need. Thanks. 
One last question regarding tODE...I do understand it provides some tools built on top on the web, and I have seen a few presentations from Dale. The thing is that I remember seeing some emails from Dale talking or relating tODE with GemTools. So...besides having an IDE on top on the web, does tODE provides or will provide some functionality of GemTools? I GUESS you may be able to run tODE directly on the seaside running in GemStone itself so it helps you browse the code etc. If we have a workspace...then I guess we are able to load our app code into GemStone and do what we want.. etc.. so maybe this is the thing? that running tODE in GemStone could give us the functionality we now have in GemTools?

Now that I have this thread already open ;) I wonder if someone has ever written some "port rules" or things to be aware when deploying to GemStone. I guess certain Pharo kernel classes/methods may not exist or answer something different, etc... And I think the answer would be around Grease?  In other words, what I ask is the following: imagine (it is not the case unfortunately) I don't use any other library than seaside/magritte. What are the things that would make the port to gemstone complicated? Is there any list or conventions somewhere?

Thanks





On Tue, Oct 1, 2013 at 3:55 AM, Richard Sargent <[hidden email]> wrote:
>> Something that confuses me a lot if all these pieces that seem somehow related: GemBuilder for Smalltalk, GemTools, and tODE.
 
That's not surprising, when all is said and done.
GemBuilder is the only truly licensed and supported product - supported by GemTalk Systems - among those three. GemTools, tODE, and Jade are the work of individual employees of GemTalk Systems but open sourced to the community (at least some of them). Additionally, there is Topaz, which one could consider the GemStone/S command-line interpreter, definitely not an IDE.
 
One of the most important things in GBS is its "traversal buffer" technology which allows seamless and high performance replication of objects between the client and the server. This allows one to have the same class defined on the server and on the client (VW or VA) which some subset of the functionality defined in the server and some in the client, with the data being replicated between the two as the client and server processes interact.
 
Topaz, GemTools, and Jade all allow one to develop against a server. The latter two provide a GUI similar to the familiar and mostly well-loved Smalltalk browsers.
 
 
>> I also thought part of GemBuilder was to map certain kernel classes of the client language to GemStone
 
Not just certain kernel classes, but any classes you wish, including your application classes. This is important if you want to have a rich client/server application, not just a server app.
 
>> why would I not need a GemBuilder for Pharo but do need it for VW and VA?
 
It isn't that you don't need a GemBuilder for Pharo, but that we do not have a commercial product for Pharo. Virtually all of our paying customers have either VA or VW applications. GemBuilder is an elaborate product, which requires considerable effort to port to a new environment and to support.
 
 
>> how is tODE related to GemTools?
 
I think the answer to this question is "barely!". tODE is a fascinating approach to an IDE, hosted in Pharo but with virtually all the work other than presentation provided in the server. You should refer to Dale's various conference talks for details on tODE. One of the most important things it addresses is the difficulty in modifying or subclassing existing browser classes to add capabilities. Over the years, I have had countless frustrations while trying to avoid modifying vendor code but adding features. tODE "deconstructs" the browser, in theory making this much easier to accomplish.
 
 
I hope this helps answer some of your questions, even if it fails to tell you what to do. :-)
 
 


From: [hidden email] [mailto:[hidden email]] On Behalf Of Mariano Martinez Peck
Sent: September-30-13 1:48 PM
To: [hidden email]
Subject: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools,and tODE

Hi guys,

I am evaluating GemStone for a client and I want to give it a try. I have a very high level idea of GemStone but I never use it for real. The application I may need to run in GemStone is a Seaside app 3.0 + Magritte3. 

Something that confuses me a lot if all these pieces that seem somehow related: GemBuilder for Smalltalk, GemTools, and tODE. And I have a few questions related to these. Thanks in advance for any help you can give me. 

From what I understand, I do need a kind of "GemBuilder for Smalltalk" in order to connect my client Smalltalk (Pharo in my case) to GemStone. But there isn't any GemBuilder for Pharo (only VW and VA). I also thought part of GemBuilder was to map certain kernel classes of the client language to GemStone, to retrieve objects from GemStone into my smalltalk client vm..etc.

So..I guess GemTools is a subset of an equivalent "GemBuilder for Pharo"? What is its relation to the GemBuilder? 
From what I understand, GemTools offers me some tools to connect to a GemStone server, load code, execute some code on the server, etc etc etc. I think I can do more or less the same with Topaz as well. That means that GemBuilder is optional and I could use Topaz only. If I use Topaz directly, it means that I don't need any GemBuilder at all for Pharo? If true, how then it happens that "mapping of certain kernel classes" that I read somewhere?  in other word, why would I not need a GemBuilder for Pharo but do need it for VW and VA? Just because there is no UI and all we have is seaside running? And if I run Seaside in VW then I don't need GemBuilder for VW?

If I don't need GemBuilder at all, how can I know which classes/methods of Pharo can I use and which ones I cannot? 

I noticed the GemTools is based on a very very old Pharo image. I guess this is not a very big problem because I would use that image only to load my code into GemStone and maybe for other small issues. Still, I will continue developing my app in Pharo 2.0 and I will keep having my ConfigurationOfXXX with the proper load for GemStone. Right? 

Anyway...now how is tODE related to GemTools? What does tODE help me regarding GemStone? Can I use it already or should I still with GemTools/Topaz for the moment? I searched  in Gemtalk Systems and I found nothing. 


Thank you very much!

--
Mariano
http://marianopeck.wordpress.com



--
Mariano
http://marianopeck.wordpress.com

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass




--
Richard Sargent
Business Development Manager
[hidden email]
GemTalk Systems
15220 NW Greenbrier Parkway #240
Beaverton, OR 97006

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

James Foster-9
In reply to this post by Mariano Martinez Peck
Hi Mariano,

Others have given good answers, but I'll offer my input as well! 

See http://programminggems.wordpress.com/2013/10/01/jade/ for a blog post and https://www.youtube.com/watch?v=dnRB5rBbkiI for a screencast showing how to load Seaside 3.0 and Magritte3 into GemStone/S 3.1.0.4. Also this gives a demo of Jade, a GemStone/S IDE for Microsoft Windows that has been in development and use for about 10 years and has good network performance.

James

On Sep 30, 2013, at 1:48 PM, Mariano Martinez Peck <[hidden email]> wrote:

Hi guys,

I am evaluating GemStone for a client and I want to give it a try. I have a very high level idea of GemStone but I never use it for real. The application I may need to run in GemStone is a Seaside app 3.0 + Magritte3. 

Something that confuses me a lot if all these pieces that seem somehow related: GemBuilder for Smalltalk, GemTools, and tODE. And I have a few questions related to these. Thanks in advance for any help you can give me. 

From what I understand, I do need a kind of "GemBuilder for Smalltalk" in order to connect my client Smalltalk (Pharo in my case) to GemStone. But there isn't any GemBuilder for Pharo (only VW and VA). I also thought part of GemBuilder was to map certain kernel classes of the client language to GemStone, to retrieve objects from GemStone into my smalltalk client vm..etc.

So..I guess GemTools is a subset of an equivalent "GemBuilder for Pharo"? What is its relation to the GemBuilder? 
From what I understand, GemTools offers me some tools to connect to a GemStone server, load code, execute some code on the server, etc etc etc. I think I can do more or less the same with Topaz as well. That means that GemBuilder is optional and I could use Topaz only. If I use Topaz directly, it means that I don't need any GemBuilder at all for Pharo? If true, how then it happens that "mapping of certain kernel classes" that I read somewhere?  in other word, why would I not need a GemBuilder for Pharo but do need it for VW and VA? Just because there is no UI and all we have is seaside running? And if I run Seaside in VW then I don't need GemBuilder for VW?

If I don't need GemBuilder at all, how can I know which classes/methods of Pharo can I use and which ones I cannot? 

I noticed the GemTools is based on a very very old Pharo image. I guess this is not a very big problem because I would use that image only to load my code into GemStone and maybe for other small issues. Still, I will continue developing my app in Pharo 2.0 and I will keep having my ConfigurationOfXXX with the proper load for GemStone. Right? 

Anyway...now how is tODE related to GemTools? What does tODE help me regarding GemStone? Can I use it already or should I still with GemTools/Topaz for the moment? I searched  in Gemtalk Systems and I found nothing. 


Thank you very much!

--
Mariano
http://marianopeck.wordpress.com
_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass


_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

jtuchel
In reply to this post by otto
Otto,

thanks a million for the insights you're providing here. I'd like to dig
into a few questions regarding your development process.

One thing that sounds scary to Gemstone wannabees (at least it does to
me) is the big question of moving/extracting data to use on a separatte
environment. Like getting a Customer's set of objects from the
productioon system and moving it to a development/test machine to debug
and find problems. If you have a big database with a few hundred
customers' data, a whole db backup might not be a good option.
How do you handle such scenarios with Gemstone? Do you write Smalltalk
code to extract stuff from Gemstone as XML and move it into Pharo? What
do you use as a persistence solution for such data? Just the image? XML
files? Another scenario here is static data (report definitions etc.)
that you have to move up from your development stage to a test stage and
finally into the production environment. How do you transport this kind
of data from your Pharo dev environment to a Gemstone test server and
then to the production Gem?


How do you test the side effects/behaviour of Gemstone transactions in
your Pharo image? I mean, you should be able to play back/forth
ok/cancel games and see if your control flow in Seaside is correct? Is
there some kind of "Transaction emulator" for Pharo that gives you this?


I know that Gemstone users always laugh about such questions, because
they found a way to do all this? But as a wannabee, you look at all this
stuff and just wonder...

Joachim

Am 01.10.13 17:28, schrieb Otto Behrens:

> Mariano,
>
> We've been running a Seaside 3 / Magritte 3 app on GS for a while now.
>
> We develop in Pharo 1.4 (suppose that could be 2). The application
> works in Pharo 1.4, almost all tests run in Pharo 1.4. There are a few
> very small tests that we run in GemStone only, but to be honest I had
> to search for them now because I could not remember - so we rarely
> touch them.
>
> We then write the code to filetree and use filetree to load back into
> GS via topaz.
>
> The only thing we use GemTools for is to hunt for bugs. If we really
> can't understand why the app works in Pharo and not in GS, we use
> GemTools to set a breakpoint and figure out what's going on. Once we
> know, we exit GemTools and write code in Pharo. Sometimes we edit code
> using GemTools just to see how something will work if it is that
> specific to GS. Also, sometimes, it helps to inspect data objects
> which we only have in a GS DB.
>
> We do not even use GemTools to work on remote GS instances. We only
> use topaz for that. Topaz is good enough for most things. In 6 years,
> it happened about 2 times that we made a backup of the production DB,
> copy it local and then use GemTools to debug.
>
> I would not consider using a GBS based tool, I would just develop in
> Pharo, given that you know Pharo pretty well. GemTools is not workable
> as a development tool. And I can't imagine that tODE is. That is if
> you use refactoring tools, customise your image and run things like
> lint.
>
> Some more answers below:
>
>> that running tODE in GemStone could give us the
>> functionality we now have in GemTools?
> I think so. I think that the energy that would have to go into tODE to
> make it more than that would be enormous, but then I would be glad to
> hear otherwise.
>
>> Now that I have this thread already open ;) I wonder if someone has ever
>> written some "port rules" or things to be aware when deploying to GemStone.
>> I guess certain Pharo kernel classes/methods may not exist or answer
>> something different, etc... And I think the answer would be around Grease?
>> In other words, what I ask is the following: imagine (it is not the case
>> unfortunately) I don't use any other library than seaside/magritte. What are
>> the things that would make the port to gemstone complicated? Is there any
>> list or conventions somewhere?
> We've used Grease and have some stuff that we did before grease
> existed. And we've not been good at contributing stuff. Mainly because
> we get under pressure and then soon fall behind, sticking to older
> versions. Upgrading is costly. Not sure how to improve this situation.
>
> Having said this, we're willing to help and give anyone stuff we've
> done to make the port easier. It is not that onerous. Dale and others
> have done a lot; just to get Seaside into GS extended a lot of GS
> kernel classes to be Pharo / Seaside compatible.
>
> We have 2 Metacello configs. The one called "Runtime" loads all the
> Seaside / Magritte / Whatever tools we use from the community, with
> some differences between what we load into GS / Pharo. The other is
> our own project that is dependent on Runtime, also with small
> compatibility changes between the different environments.
>
> Please let me know where I can give you more info or code.
>
> Cheers
> Otto
> _______________________________________________
> Glass mailing list
> [hidden email]
> http://lists.gemtalksystems.com/mailman/listinfo/glass
>

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Jon Paynter-2
On Tue, Oct 1, 2013 at 12:12 PM, Joachim Tuchel <[hidden email]> wrote:


I know that Gemstone users always laugh about such questions, because they found a way to do all this? But as a wannabee, you look at all this stuff and just wonder...
I come from the other side who likes to write code on the gemstone server, so im puzzled why people insist on developing gemstone code in a non-gemstone image.  but it seems to work well, as its a popular (and profitable) choice.

As to getting at customer data?
Just copy the gemstone extent file(s) to your local testing server and run a local gemstone server.   Weather the extents are 10mb, or 600GB... find room somewhere.  Then you are guaranteed to have the correct customer data to chase down those wierd bugs.

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

James Foster-9
On Oct 1, 2013, at 1:28 PM, Jon Paynter <[hidden email]> wrote:

> As to getting at customer data?
> Just copy the gemstone extent file(s) to your local testing server and run a local gemstone server.   Weather the extents are 10mb, or 600GB... find room somewhere.  Then you are guaranteed to have the correct customer data to chase down those wierd bugs.

Besides, if you are taking an off-site backup then why not bring it to your development machine?

James

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Dale Henrichs-3
In reply to this post by otto
Mariano,

I would second what Otto recommends ... He is living the "develop in Pharo and deploy in GemStone" life every day and as such has first hand experience and invaluable advice.

GemTools is way past it's "use by date":) and tODE is targetted to replace GemTools. When tODE is ready for prime time, I expect to be providing a new round of documentation (and tODE scripts) for working with GLASS. At worst, tODE will be a better option than topaz, at best ... well, we'll just have to see:) Until then, tODE is still in development, so I would not recommend that you try using it.

I encourage Otto (and others ... hint, hint) to share more about their processes and procedures ...

Dale
----- Original Message -----
| From: "Otto Behrens" <[hidden email]>
| To: "Mariano Martinez Peck" <[hidden email]>
| Cc: [hidden email]
| Sent: Tuesday, October 1, 2013 8:28:30 AM
| Subject: Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE
|
| Mariano,
|
| We've been running a Seaside 3 / Magritte 3 app on GS for a while
| now.
|
| We develop in Pharo 1.4 (suppose that could be 2). The application
| works in Pharo 1.4, almost all tests run in Pharo 1.4. There are a
| few
| very small tests that we run in GemStone only, but to be honest I had
| to search for them now because I could not remember - so we rarely
| touch them.
|
| We then write the code to filetree and use filetree to load back into
| GS via topaz.
|
| The only thing we use GemTools for is to hunt for bugs. If we really
| can't understand why the app works in Pharo and not in GS, we use
| GemTools to set a breakpoint and figure out what's going on. Once we
| know, we exit GemTools and write code in Pharo. Sometimes we edit
| code
| using GemTools just to see how something will work if it is that
| specific to GS. Also, sometimes, it helps to inspect data objects
| which we only have in a GS DB.
|
| We do not even use GemTools to work on remote GS instances. We only
| use topaz for that. Topaz is good enough for most things. In 6 years,
| it happened about 2 times that we made a backup of the production DB,
| copy it local and then use GemTools to debug.
|
| I would not consider using a GBS based tool, I would just develop in
| Pharo, given that you know Pharo pretty well. GemTools is not
| workable
| as a development tool. And I can't imagine that tODE is. That is if
| you use refactoring tools, customise your image and run things like
| lint.
|
| Some more answers below:
|
| > that running tODE in GemStone could give us the
| > functionality we now have in GemTools?
|
| I think so. I think that the energy that would have to go into tODE
| to
| make it more than that would be enormous, but then I would be glad to
| hear otherwise.
|
| > Now that I have this thread already open ;) I wonder if someone has
| > ever
| > written some "port rules" or things to be aware when deploying to
| > GemStone.
| > I guess certain Pharo kernel classes/methods may not exist or
| > answer
| > something different, etc... And I think the answer would be around
| > Grease?
| > In other words, what I ask is the following: imagine (it is not the
| > case
| > unfortunately) I don't use any other library than seaside/magritte.
| > What are
| > the things that would make the port to gemstone complicated? Is
| > there any
| > list or conventions somewhere?
|
| We've used Grease and have some stuff that we did before grease
| existed. And we've not been good at contributing stuff. Mainly
| because
| we get under pressure and then soon fall behind, sticking to older
| versions. Upgrading is costly. Not sure how to improve this
| situation.
|
| Having said this, we're willing to help and give anyone stuff we've
| done to make the port easier. It is not that onerous. Dale and others
| have done a lot; just to get Seaside into GS extended a lot of GS
| kernel classes to be Pharo / Seaside compatible.
|
| We have 2 Metacello configs. The one called "Runtime" loads all the
| Seaside / Magritte / Whatever tools we use from the community, with
| some differences between what we load into GS / Pharo. The other is
| our own project that is dependent on Runtime, also with small
| compatibility changes between the different environments.
|
| Please let me know where I can give you more info or code.
|
| Cheers
| Otto
| _______________________________________________
| Glass mailing list
| [hidden email]
| http://lists.gemtalksystems.com/mailman/listinfo/glass
|
_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Dale Henrichs-3
In reply to this post by Mariano Martinez Peck



From: "Mariano Martinez Peck" <[hidden email]>
To: [hidden email]
Sent: Tuesday, October 1, 2013 6:11:07 AM
Subject: Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Thank you all for your answers. It is now pretty clear to me the differences and what I need and don't need. Thanks. 
One last question regarding tODE...I do understand it provides some tools built on top on the web, and I have seen a few presentations from Dale. The thing is that I remember seeing some emails from Dale talking or relating tODE with GemTools. So...besides having an IDE on top on the web, does tODE provides or will provide some functionality of GemTools? I GUESS you may be able to run tODE directly on the seaside running in GemStone itself so it helps you browse the code etc. If we have a workspace...then I guess we are able to load our app code into GemStone and do what we want.. etc.. so maybe this is the thing? that running tODE in GemStone could give us the functionality we now have in GemTools?
tODE currently has all of the functionality of GemTools, plus quite a bit of additional functionality ... The current incarnation of tODE[1] actually runs on top of Pharo2.0 instead of a web-browser ... it has been built from the ground up for remote development (tODE performance over the WAN exceeds the performance of GemTools over the LAN), but more importantly tODE is aimed at making it easy for developers to build custom tools and scripts. For example, I consider the git mergetool that I've built in tODE to be superior to any of the other git merge tools that I've used and it took around a day to put together ... I'm also focusing on "scriptablity for Smalltalk": basically you can create workspaces that are invoked from a command line (the "object shell") and take command line arguments so creating and running scripts for deployment or other repetitive tasks is very straightforward.

Right now, I'm just starting up a beta program for tODE and I've got several folks lined up to take tODE for a "bleeding edge spin." Personally I haven't touched GemTools in anger since January of this year, yet I've been doing basically full time development directly in GemStone using tODE. Now that I've made myself happy with tODE, I need to find out what needs to be done to make other folks happy:) and that is the job of the beta testers. Paul DeBruicker is the first one to step up to the plate and I'm still addressing some of the things that he has identified ...

tODE is being built to be "fully aware of Metacello and git" that means that metacello and git support is being baked into tODE. It is very easy to incorporate metacello/git operations into custom scripts that you use for your daily workflows...

[1] http://www.slideshare.net/esug/tode-and-now-for-something-completely-different

Now that I have this thread already open ;) I wonder if someone has ever written some "port rules" or things to be aware when deploying to GemStone. I guess certain Pharo kernel classes/methods may not exist or answer something different, etc... And I think the answer would be around Grease?  In other words, what I ask is the following: imagine (it is not the case unfortunately) I don't use any other library than seaside/magritte. What are the things that would make the port to gemstone complicated? Is there any list or conventions somewhere?

Thanks





On Tue, Oct 1, 2013 at 3:55 AM, Richard Sargent <[hidden email]> wrote:
>> Something that confuses me a lot if all these pieces that seem somehow related: GemBuilder for Smalltalk, GemTools, and tODE.
 
That's not surprising, when all is said and done.
GemBuilder is the only truly licensed and supported product - supported by GemTalk Systems - among those three. GemTools, tODE, and Jade are the work of individual employees of GemTalk Systems but open sourced to the community (at least some of them). Additionally, there is Topaz, which one could consider the GemStone/S command-line interpreter, definitely not an IDE.
 
One of the most important things in GBS is its "traversal buffer" technology which allows seamless and high performance replication of objects between the client and the server. This allows one to have the same class defined on the server and on the client (VW or VA) which some subset of the functionality defined in the server and some in the client, with the data being replicated between the two as the client and server processes interact.
 
Topaz, GemTools, and Jade all allow one to develop against a server. The latter two provide a GUI similar to the familiar and mostly well-loved Smalltalk browsers.
 
 
>> I also thought part of GemBuilder was to map certain kernel classes of the client language to GemStone
 
Not just certain kernel classes, but any classes you wish, including your application classes. This is important if you want to have a rich client/server application, not just a server app.
 
>> why would I not need a GemBuilder for Pharo but do need it for VW and VA?
 
It isn't that you don't need a GemBuilder for Pharo, but that we do not have a commercial product for Pharo. Virtually all of our paying customers have either VA or VW applications. GemBuilder is an elaborate product, which requires considerable effort to port to a new environment and to support.
 
 
>> how is tODE related to GemTools?
 
I think the answer to this question is "barely!". tODE is a fascinating approach to an IDE, hosted in Pharo but with virtually all the work other than presentation provided in the server. You should refer to Dale's various conference talks for details on tODE. One of the most important things it addresses is the difficulty in modifying or subclassing existing browser classes to add capabilities. Over the years, I have had countless frustrations while trying to avoid modifying vendor code but adding features. tODE "deconstructs" the browser, in theory making this much easier to accomplish.
 
 
I hope this helps answer some of your questions, even if it fails to tell you what to do. :-)
 
 


From: [hidden email] [mailto:[hidden email]] On Behalf Of Mariano Martinez Peck
Sent: September-30-13 1:48 PM
To: [hidden email]
Subject: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools,and tODE

Hi guys,

I am evaluating GemStone for a client and I want to give it a try. I have a very high level idea of GemStone but I never use it for real. The application I may need to run in GemStone is a Seaside app 3.0 + Magritte3. 

Something that confuses me a lot if all these pieces that seem somehow related: GemBuilder for Smalltalk, GemTools, and tODE. And I have a few questions related to these. Thanks in advance for any help you can give me. 

From what I understand, I do need a kind of "GemBuilder for Smalltalk" in order to connect my client Smalltalk (Pharo in my case) to GemStone. But there isn't any GemBuilder for Pharo (only VW and VA). I also thought part of GemBuilder was to map certain kernel classes of the client language to GemStone, to retrieve objects from GemStone into my smalltalk client vm..etc.

So..I guess GemTools is a subset of an equivalent "GemBuilder for Pharo"? What is its relation to the GemBuilder? 
From what I understand, GemTools offers me some tools to connect to a GemStone server, load code, execute some code on the server, etc etc etc. I think I can do more or less the same with Topaz as well. That means that GemBuilder is optional and I could use Topaz only. If I use Topaz directly, it means that I don't need any GemBuilder at all for Pharo? If true, how then it happens that "mapping of certain kernel classes" that I read somewhere?  in other word, why would I not need a GemBuilder for Pharo but do need it for VW and VA? Just because there is no UI and all we have is seaside running? And if I run Seaside in VW then I don't need GemBuilder for VW?

If I don't need GemBuilder at all, how can I know which classes/methods of Pharo can I use and which ones I cannot? 

I noticed the GemTools is based on a very very old Pharo image. I guess this is not a very big problem because I would use that image only to load my code into GemStone and maybe for other small issues. Still, I will continue developing my app in Pharo 2.0 and I will keep having my ConfigurationOfXXX with the proper load for GemStone. Right? 

Anyway...now how is tODE related to GemTools? What does tODE help me regarding GemStone? Can I use it already or should I still with GemTools/Topaz for the moment? I searched  in Gemtalk Systems and I found nothing. 


Thank you very much!

--
Mariano
http://marianopeck.wordpress.com



--
Mariano
http://marianopeck.wordpress.com

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass


_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

NorbertHartl
In reply to this post by Dale Henrichs-3

Am 02.10.2013 um 00:33 schrieb Dale K. Henrichs <[hidden email]>:

I encourage Otto (and others ... hint, hint) to share more about their processes and procedures ... 

I agree with everything Otto said. I managed it at least the last 6 months to develop in pharo only and deploy on gemstone. It is easy in my case because I took some not too fine  ways in code just to avoid having gemstone specific packages. For this I would need to tweak some of my workflows. 
Working that way is made easy by things like Grease. But on the other hand you learn really quick what are the differences between pharo and gemstone. For all of these there is a way of programming that runs on both platforms.

So, I work on my pharo image and commit code to my repository. On a remote server I have an installation of jenkins continuous integration server. Whenever I commit, jenkins runs a build for pharo _and_ gemstone for the same code. Most of the time I discover problems when jenkins runs the test and pharo stays green while gemstone turns red. If everything looks green I update my development server with the new code. 

Updating the development server: The production server does a backup every night. I have a script [1] that copies the backup from the production server and recreates the image on the development server. On top of that I load the newest version from metacello. This is a very essential step. With bootstrapping the test server in the same state as the production server you test exactly what will happen later when you update the production server.

For testing gemstone in more detail I can do two things: I can download the last prepared image from jenkins into my local gemstone. Or I download the last backup of my production server and recreate the image on my laptop. 

Finally I can connect to my development and production server with gemtools or topaz. But this happens rarely just like Otto said. Whenever an entry is added to the object log I get an email. Then I use gemtools to connect to the image and open a debugger on the problem and fix it. Apart from that it is mostly topaz usage because gemtools is too slow for me. And for updating tasks you are better off with topaz in combination with a tool like screen [2] anyway. That's because if the internet connection breaks while you are updating everything is rolled back. 

Norbert

[1] the script the recreates an image from backup
#!/bin/bash

. ./env
echo copying backup from 2d-concierge
scp 2d-concierge:/opt/application/concierge/backup/backup.dbf.gz .
echo unpacking backup
gunzip backup.dbf.gz
echo stopping concierge
./concierge stop > /dev/null
echo cleaning data dir
rm data/extent0.dbf
rm data/tranlog*
echo copy fresh extent
copydbf /opt/gemstone/product/bin/extent0.dbf data/extent0.dbf
chown -R gemstone data
echo starting stone in restore mode
startstone -R concierge
echo restoring backup
cat scripts/restore-backup.st | topaz -l -T200000
echo commiting restore
cat scripts/commit-restore.st | topaz -l -T200000
echo stoping stone
stopstone concierge DataCurator swordfish
echo restaring stone in normal mode
./concierge start





_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

otto
> I agree with everything Otto said.

I wish my wife would. :-)

> I took some not too fine  ways in code just to avoid having gemstone
> specific packages.

Have also got some tricks here. What made a big difference is we have
stubs in Pharo for GemStone classes and methods we use on them, for
example System and SystemRepository. So we write GS specific code (eg
to commit a transaction or migrate) in Pharo. It's been a long time
since I needed to write a method that's in GS only. And we need to
clean up the old ones.

> On a remote
> server I have an installation of jenkins continuous integration server.
> Whenever I commit, jenkins runs a build for pharo _and_ gemstone for the
> same code. Most of the time I discover problems when jenkins runs the test
> and pharo stays green while gemstone turns red.

Yes, do exactly that. Cool.

> If everything looks green I
> update my development server with the new code.
>
> Updating the development server: The production server does a backup every
> night. I have a script [1] that copies the backup from the production server
> and recreates the image on the development server. On top of that I load the
> newest version from metacello. This is a very essential step. With
> bootstrapping the test server in the same state as the production server you
> test exactly what will happen later when you update the production server.

Yes, do that too. Only difference is we don't have a development
server. We just do it as a jenkins job.

> For testing gemstone in more detail I can do two things: I can download the
> last prepared image from jenkins into my local gemstone. Or I download the
> last backup of my production server and recreate the image on my laptop.

Also

> is mostly topaz usage because gemtools is too slow for me. And for updating
> tasks you are better off with topaz in combination with a tool like screen
> [2] anyway. That's because if the internet connection breaks while you are
> updating everything is rolled back.

Yes, agree

A key thing is the automation of all this. Quite some effort goes into that.
_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Mariano Martinez Peck
In reply to this post by Dale Henrichs-3
First, I wanted to really appreciate all the answers I got. They were all very valuable and detailed. Thanks you very much. 
It is much clear now.

Dale, I think I am totally confused about tODE. I have just seen the link you send to slideshare and that's not at all what I remembered about tODE. That (slideshare) look like a desktop/fat client tool (with remote stuff) based on Pharo 2.0. But...I remember watching a presentation of you which I thought it was tODE that was seaside-base. In fact I remember you saying: "yes, I did it in Seaside because it was easier for me than doing it in Morphic"...I am just crazy or that was something else? 
Ok...I found it: http://seaside.gemtalksystems.com/movies/tODE_intro.mov (I remember it form the ESUG Innovation Technology Awards ;) )
So...i thought it was seaside-based so I thought it would be easy to run it inside GLASS, hence you could directly "develop" inside GemStone from any browser.

Continue discussing about these tools...imagine that I want to browse a bit and learn about GemStone. I want to see which number classes I have, which methods each class can answer, etc etc.  You know...explore the system (forgot for a minute about the pdf documentation). How could I do this right now (until tODE is released)? GemTools is the only way? well...maybe the seaside example of the class browser hahah

Thanks, 
 


On Tue, Oct 1, 2013 at 7:33 PM, Dale K. Henrichs <[hidden email]> wrote:
Mariano,

I would second what Otto recommends ... He is living the "develop in Pharo and deploy in GemStone" life every day and as such has first hand experience and invaluable advice.

GemTools is way past it's "use by date":) and tODE is targetted to replace GemTools. When tODE is ready for prime time, I expect to be providing a new round of documentation (and tODE scripts) for working with GLASS. At worst, tODE will be a better option than topaz, at best ... well, we'll just have to see:) Until then, tODE is still in development, so I would not recommend that you try using it.

I encourage Otto (and others ... hint, hint) to share more about their processes and procedures ...

Dale
----- Original Message -----
| From: "Otto Behrens" <[hidden email]>
| To: "Mariano Martinez Peck" <[hidden email]>
| Cc: [hidden email]
| Sent: Tuesday, October 1, 2013 8:28:30 AM
| Subject: Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE
|
| Mariano,
|
| We've been running a Seaside 3 / Magritte 3 app on GS for a while
| now.
|
| We develop in Pharo 1.4 (suppose that could be 2). The application
| works in Pharo 1.4, almost all tests run in Pharo 1.4. There are a
| few
| very small tests that we run in GemStone only, but to be honest I had
| to search for them now because I could not remember - so we rarely
| touch them.
|
| We then write the code to filetree and use filetree to load back into
| GS via topaz.
|
| The only thing we use GemTools for is to hunt for bugs. If we really
| can't understand why the app works in Pharo and not in GS, we use
| GemTools to set a breakpoint and figure out what's going on. Once we
| know, we exit GemTools and write code in Pharo. Sometimes we edit
| code
| using GemTools just to see how something will work if it is that
| specific to GS. Also, sometimes, it helps to inspect data objects
| which we only have in a GS DB.
|
| We do not even use GemTools to work on remote GS instances. We only
| use topaz for that. Topaz is good enough for most things. In 6 years,
| it happened about 2 times that we made a backup of the production DB,
| copy it local and then use GemTools to debug.
|
| I would not consider using a GBS based tool, I would just develop in
| Pharo, given that you know Pharo pretty well. GemTools is not
| workable
| as a development tool. And I can't imagine that tODE is. That is if
| you use refactoring tools, customise your image and run things like
| lint.
|
| Some more answers below:
|
| > that running tODE in GemStone could give us the
| > functionality we now have in GemTools?
|
| I think so. I think that the energy that would have to go into tODE
| to
| make it more than that would be enormous, but then I would be glad to
| hear otherwise.
|
| > Now that I have this thread already open ;) I wonder if someone has
| > ever
| > written some "port rules" or things to be aware when deploying to
| > GemStone.
| > I guess certain Pharo kernel classes/methods may not exist or
| > answer
| > something different, etc... And I think the answer would be around
| > Grease?
| > In other words, what I ask is the following: imagine (it is not the
| > case
| > unfortunately) I don't use any other library than seaside/magritte.
| > What are
| > the things that would make the port to gemstone complicated? Is
| > there any
| > list or conventions somewhere?
|
| We've used Grease and have some stuff that we did before grease
| existed. And we've not been good at contributing stuff. Mainly
| because
| we get under pressure and then soon fall behind, sticking to older
| versions. Upgrading is costly. Not sure how to improve this
| situation.
|
| Having said this, we're willing to help and give anyone stuff we've
| done to make the port easier. It is not that onerous. Dale and others
| have done a lot; just to get Seaside into GS extended a lot of GS
| kernel classes to be Pharo / Seaside compatible.
|
| We have 2 Metacello configs. The one called "Runtime" loads all the
| Seaside / Magritte / Whatever tools we use from the community, with
| some differences between what we load into GS / Pharo. The other is
| our own project that is dependent on Runtime, also with small
| compatibility changes between the different environments.
|
| Please let me know where I can give you more info or code.
|
| Cheers
| Otto
| _______________________________________________
| Glass mailing list
| [hidden email]
| http://lists.gemtalksystems.com/mailman/listinfo/glass
|



--
Mariano
http://marianopeck.wordpress.com

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Johan Brichau-3
In reply to this post by Mariano Martinez Peck
Hi Mariano,

We're doing "develop in Pharo, deploy in Gemstone" for a couple of years now.
After what Otto and Norbert said, I feel I have very few things to add.

Since we are GLASS users, we are only using GemTools and Topaz to interact with a running Gemstone.
We hopefully will be able to test-drive tODE really soon (hint hint ;-)

GemTools is used to debug and develop gemstone-specific parts of the application. Whenever an error occurs in Gemstone, a continuation is pushed onto a persistent log (aka ObjectLog) and this can be easily inspected and debugged using the Smalltalk debugger in GemTools afterwards. We either debug directly on a production system or we make a backup copy to restore on our local machine and debug from there. When we need to develop against specific Gemstone parts (things like indexes for example), we develop on a local Gemstone install.

Topaz is used to execute scripts. All upgrades (running metacello load and migration code) is run via a topaz script that is launched on the commandline. We never use Topaz for anything else.

> Now that I have this thread already open ;) I wonder if someone has ever written some "port rules" or things to be aware when deploying to GemStone. I guess certain Pharo kernel classes/methods may not exist or answer something different, etc... And I think the answer would be around Grease?  In other words, what I ask is the following: imagine (it is not the case unfortunately) I don't use any other library than seaside/magritte. What are the things that would make the port to gemstone complicated? Is there any list or conventions somewhere?

It depends a bit what you will be making. If it's a Seaside app, the chances are that most things that work in Pharo will also work in GLASS. I am saying GLASS because the additions in GLASS to Gemstone are what makes it behave sufficiently close to a Pharo with image-based persistency.

There are a couple of differences we learned to "know" and there are things we wrapped in a compatibility package (some parts contributed back but most pending).
We also used an Abstract Factory pattern to differentiate those parts of the application that need Gemstone-specific code. This is mostly when we are dealing with indexes or some very specific Gemstone stuff we came to use over the years.
We also made DALi: an abstraction layer for transactions that makes the app run transparantly with GLASS, Pharo-GOODS and Pharo-image-based-persistency. The library works very well but I guess it needs work/explaining to make it useable/understandable for others. To appreciate its abstraction, you need to understand how GLASS transactions for Seaside work.

Here are some other rules that pop to mind:
- The Gemstone compiler is more strict than Pharo's (shadowed variabes, empty statement will not compile). Grease has some "code portability" code critics which detect these cases so you can prevent them in Pharo too.
- Assignments to temporaries to transfer values from one Seaside callback to another does not work in Gemstone (not even 3.x). This is often used in Seaside methods where you have multiple callbacks being triggered in the same action. There is a very easy workaround: use a valueholder object to hold the value.
- GemStone's DateAndTime implementation (and related parts) includes daylight savings time (while Pharo's does not). This is great for us, but you need to know that some days have 23 hours durations and some have 25 hour durations ;-)
- Use Grease when possible or plug factory methods onto the Grease framework (using class extensions) when you need them in your app
_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Dale Henrichs-3
In reply to this post by Mariano Martinez Peck



From: "Mariano Martinez Peck" <[hidden email]>
To: [hidden email]
Sent: Wednesday, October 2, 2013 7:01:39 AM
Subject: Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

First, I wanted to really appreciate all the answers I got. They were all very valuable and detailed. Thanks you very much. 
It is much clear now.

Dale, I think I am totally confused about tODE. I have just seen the link you send to slideshare and that's not at all what I remembered about tODE. That (slideshare) look like a desktop/fat client tool (with remote stuff) based on Pharo 2.0. But...I remember watching a presentation of you which I thought it was tODE that was seaside-base. In fact I remember you saying: "yes, I did it in Seaside because it was easier for me than doing it in Morphic"...I am just crazy or that was something else? 
Haha, the name of my recent presentation at ESUG is "tODE: And now for something completely different" and I wasn't kidding.

The big problem that I had with using Seaside and the browser for tODE was in implementing the debugger ... viewing stack traces is relatively easy, but when you want to continue or step you get tangled up in the seaside code itself ... In a fat client,  when the debugger pops up there is a bit of magic going on while the main UI process is put under the debugger and a new UI process is created so that the UI continues to run ... when using seaside, it takes a bigger set of magic to swap out the thread that is handling the http request... the other factor driving me away from the web-browser was the fact that it is not very easy to view multiple "windows" in a web browser ... Matthias Springer is "porting morphic" to Amber to solve that particular problem ...

So the new version of tODE uses Pharo as a client, but it is not a typical "fat client".It is possible to create new window-based tools in tODE without writing any client-side code... I call it an "ultra thin client" in the presentation. In fact when Matthias finishes his work in "porting morphic" to Amber, it should be relatively straight forward to retarget tODE from Pharo to Amber.

Matthias got started on this work earlier in the year when he use tODE and MagLev to create web-based interface for MagLev as part of an HPI bachelor project ... he only got so far before running into "window management" issues and decide that "morphic" needed to be ported to Amber...
Ok...I found it: http://seaside.gemtalksystems.com/movies/tODE_intro.mov (I remember it form the ESUG Innovation Technology Awards ;) )
So...i thought it was seaside-based so I thought it would be easy to run it inside GLASS, hence you could directly "develop" inside GemStone from any browser.

Continue discussing about these tools...imagine that I want to browse a bit and learn about GemStone. I want to see which number classes I have, which methods each class can answer, etc etc.  You know...explore the system (forgot for a minute about the pdf documentation). How could I do this right now (until tODE is released)? GemTools is the only way? well...maybe the seaside example of the class browser hahah
Today, I would recommend using GemTools for that kind of exploration. If you use GemTools, you should use it running against a stone running on a local network  ... the window update events in GemTools are fired across the network, so any network latency shows up as slow response times in the tools. GemTools is based on OmniBrowser so they should be very familiar to you.

You can download a one-click from the downloads page[1] and follow the instructions starting with "Define GemTools Session"[2] for setting up your GemTools client. Please ask questions here if you have trouble ...

If you are writing a Seaside application, you should be able to get pretty far in your application before you have to worry about GemStone-specific code. Transactions are handled within the Seaside framework....If you end up with long running http requests (i.e,, hooking up to paypal to collect money), then you should pose your issue to this list for guidance, as there are different solutions to that problem depending upon what you are trying to do ...

Dale

[1] http://seaside.gemtalksystems.com/downloads.html
[2] https://code.google.com/p/glassdb/wiki/GettingStartedWithGLASS#Define_GemTools_Session

Thanks, 
 


On Tue, Oct 1, 2013 at 7:33 PM, Dale K. Henrichs <[hidden email]> wrote:
Mariano,

I would second what Otto recommends ... He is living the "develop in Pharo and deploy in GemStone" life every day and as such has first hand experience and invaluable advice.

GemTools is way past it's "use by date":) and tODE is targetted to replace GemTools. When tODE is ready for prime time, I expect to be providing a new round of documentation (and tODE scripts) for working with GLASS. At worst, tODE will be a better option than topaz, at best ... well, we'll just have to see:) Until then, tODE is still in development, so I would not recommend that you try using it.

I encourage Otto (and others ... hint, hint) to share more about their processes and procedures ...

Dale
----- Original Message -----
| From: "Otto Behrens" <[hidden email]>
| To: "Mariano Martinez Peck" <[hidden email]>
| Cc: [hidden email]
| Sent: Tuesday, October 1, 2013 8:28:30 AM
| Subject: Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE
|
| Mariano,
|
| We've been running a Seaside 3 / Magritte 3 app on GS for a while
| now.
|
| We develop in Pharo 1.4 (suppose that could be 2). The application
| works in Pharo 1.4, almost all tests run in Pharo 1.4. There are a
| few
| very small tests that we run in GemStone only, but to be honest I had
| to search for them now because I could not remember - so we rarely
| touch them.
|
| We then write the code to filetree and use filetree to load back into
| GS via topaz.
|
| The only thing we use GemTools for is to hunt for bugs. If we really
| can't understand why the app works in Pharo and not in GS, we use
| GemTools to set a breakpoint and figure out what's going on. Once we
| know, we exit GemTools and write code in Pharo. Sometimes we edit
| code
| using GemTools just to see how something will work if it is that
| specific to GS. Also, sometimes, it helps to inspect data objects
| which we only have in a GS DB.
|
| We do not even use GemTools to work on remote GS instances. We only
| use topaz for that. Topaz is good enough for most things. In 6 years,
| it happened about 2 times that we made a backup of the production DB,
| copy it local and then use GemTools to debug.
|
| I would not consider using a GBS based tool, I would just develop in
| Pharo, given that you know Pharo pretty well. GemTools is not
| workable
| as a development tool. And I can't imagine that tODE is. That is if
| you use refactoring tools, customise your image and run things like
| lint.
|
| Some more answers below:
|
| > that running tODE in GemStone could give us the
| > functionality we now have in GemTools?
|
| I think so. I think that the energy that would have to go into tODE
| to
| make it more than that would be enormous, but then I would be glad to
| hear otherwise.
|
| > Now that I have this thread already open ;) I wonder if someone has
| > ever
| > written some "port rules" or things to be aware when deploying to
| > GemStone.
| > I guess certain Pharo kernel classes/methods may not exist or
| > answer
| > something different, etc... And I think the answer would be around
| > Grease?
| > In other words, what I ask is the following: imagine (it is not the
| > case
| > unfortunately) I don't use any other library than seaside/magritte.
| > What are
| > the things that would make the port to gemstone complicated? Is
| > there any
| > list or conventions somewhere?
|
| We've used Grease and have some stuff that we did before grease
| existed. And we've not been good at contributing stuff. Mainly
| because
| we get under pressure and then soon fall behind, sticking to older
| versions. Upgrading is costly. Not sure how to improve this
| situation.
|
| Having said this, we're willing to help and give anyone stuff we've
| done to make the port easier. It is not that onerous. Dale and others
| have done a lot; just to get Seaside into GS extended a lot of GS
| kernel classes to be Pharo / Seaside compatible.
|
| We have 2 Metacello configs. The one called "Runtime" loads all the
| Seaside / Magritte / Whatever tools we use from the community, with
| some differences between what we load into GS / Pharo. The other is
| our own project that is dependent on Runtime, also with small
| compatibility changes between the different environments.
|
| Please let me know where I can give you more info or code.
|
| Cheers
| Otto
| _______________________________________________
| Glass mailing list
| [hidden email]
| http://lists.gemtalksystems.com/mailman/listinfo/glass
|



--
Mariano
http://marianopeck.wordpress.com

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass


_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Mariano Martinez Peck
In reply to this post by Johan Brichau-3



On Wed, Oct 2, 2013 at 12:24 PM, Johan Brichau <[hidden email]> wrote:
Hi Mariano,

We're doing "develop in Pharo, deploy in Gemstone" for a couple of years now.
After what Otto and Norbert said, I feel I have very few things to add.

Thanks for the answer. We should really keep this thread stored somewhere! too many valuable information!
 

Since we are GLASS users, we are only using GemTools and Topaz to interact with a running Gemstone.
We hopefully will be able to test-drive tODE really soon (hint hint ;-)

GemTools is used to debug and develop gemstone-specific parts of the application. Whenever an error occurs in Gemstone, a continuation is pushed onto a persistent log (aka ObjectLog) and this can be easily inspected and debugged using the Smalltalk debugger in GemTools afterwards. We either debug directly on a production system or we make a backup copy to restore on our local machine and debug from there.

Ok, this is clear. It's similar to fuel-out a stack in Pharo :)
 
When we need to develop against specific Gemstone parts (things like indexes for example), we develop on a local Gemstone install.
Topaz is used to execute scripts. All upgrades (running metacello load and migration code) is run via a topaz script that is launched on the commandline. We never use Topaz for anything else.

> Now that I have this thread already open ;) I wonder if someone has ever written some "port rules" or things to be aware when deploying to GemStone. I guess certain Pharo kernel classes/methods may not exist or answer something different, etc... And I think the answer would be around Grease?  In other words, what I ask is the following: imagine (it is not the case unfortunately) I don't use any other library than seaside/magritte. What are the things that would make the port to gemstone complicated? Is there any list or conventions somewhere?

It depends a bit what you will be making. If it's a Seaside app, the chances are that most things that work in Pharo will also work in GLASS. I am saying GLASS because the additions in GLASS to Gemstone are what makes it behave sufficiently close to a Pharo with image-based persistency.


OK, here I am confused. Why would GLASS help me more than plain GemStone to run my app? I GUESS this is because Seaside itself needs some extensions to GemStone (for methods that do not exist there but do in Pharo) or something like that, hence our app has already covered several of these problems (those already present for Seaside and friends)? 

 
There are a couple of differences we learned to "know" and there are things we wrapped in a compatibility package (some parts contributed back but most pending).
We also used an Abstract Factory pattern to differentiate those parts of the application that need Gemstone-specific code. This is mostly when we are dealing with indexes or some very specific Gemstone stuff we came to use over the years.


So this is how you solve the fact that special select: and friends for indexes use a different syntax? because in my case, I would like the app to continue running in Pharo, so this: 

| aTime |
aTime := Time now.
myEmployees select: {:i | aTime == i.name}

will simply not work. Did you delegate to a strategy or Abstract Factory or similar, or is there a compatibility package for Pharo that can somehow understand and parse this?

 
We also made DALi: an abstraction layer for transactions that makes the app run transparantly with GLASS, Pharo-GOODS and Pharo-image-based-persistency. The library works very well but I guess it needs work/explaining to make it useable/understandable for others. To appreciate its abstraction, you need to understand how GLASS transactions for Seaside work.


mmm yes. Is it documented somewhere how the Seaside-sessions and related to GemStone sessions in Glass?

 
Here are some other rules that pop to mind:
- The Gemstone compiler is more strict than Pharo's (shadowed variabes, empty statement will not compile). Grease has some "code portability" code critics which detect these cases so you can prevent them in Pharo too.

interesting!
 
- Assignments to temporaries to transfer values from one Seaside callback to another does not work in Gemstone (not even 3.x). This is often used in Seaside methods where you have multiple callbacks being triggered in the same action. There is a very easy workaround: use a valueholder object to hold the value.
- GemStone's DateAndTime implementation (and related parts) includes daylight savings time (while Pharo's does not). This is great for us, but you need to know that some days have 23 hours durations and some have 25 hour durations ;-)
- Use Grease when possible or plug factory methods onto the Grease framework (using class extensions) when you need them in your app


Cool. 

Thanks Johan for sharing this info.  


--
Mariano
http://marianopeck.wordpress.com

_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
Reply | Threaded
Open this post in threaded view
|

Re: [Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE

Johan Brichau-3

> Thanks for the answer. We should really keep this thread stored somewhere! too many valuable information!

It's in the mailinglist archives, but you are right: we might want to make a consolidated page with all of this ;-)

> OK, here I am confused. Why would GLASS help me more than plain GemStone to run my app? I GUESS this is because Seaside itself needs some extensions to GemStone (for methods that do not exist there but do in Pharo) or something like that, hence our app has already covered several of these problems (those already present for Seaside and friends)?

The Seaside implementation for Gemstone wraps every request in a transaction. In my view, this is essential to make your Seaside app behave exactly the way it would when you use image-based persistency in Pharo. There's other parts as well, but I found that an essential element to understand when moving our app to GLASS.
Dale explains this way better than I do: http://gemstonesoup.wordpress.com/2007/05/07/transparent-persistence-for-seaside/

> So this is how you solve the fact that special select: and friends for indexes use a different syntax? because in my case, I would like the app to continue running in Pharo, so this:
>
> | aTime |
> aTime := Time now.
> myEmployees select: {:i | aTime ==
> i.name
> }
>
>
> will simply not work. Did you delegate to a strategy or Abstract Factory or similar, or is there a compatibility package for Pharo that can somehow understand and parse this?

Obviously, when you develop in Pharo, you want to be able to run your application there as well. That means you need to design the application so that you can localize differences related to what storage method you are using. From the very beginning, we made the architectural design choice to be able to run Yesplan on different databases. We decided to always go for object-oriented databases, but remain independent on which one that would be.

An abstract factory is indeed an essential pattern here, but so is a facade (put all those database query methods behind it).
it is essential to make the necessary abstractions and use object-oriented polymorhpism and class specialization to be able to deal with the required differences.
Most of the differences are related to optimizations though (indexes, reduced conflict collections, etc...).

We have a compatibility package too that contains methods we used in Pharo but that do not exist in Gemstone.
Most of that we can actually contribute back to GLASS but it's rather limited anyway.

cheers
Johan
_______________________________________________
Glass mailing list
[hidden email]
http://lists.gemtalksystems.com/mailman/listinfo/glass
12