zinc and zodiac ports for GemStone

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

zinc and zodiac ports for GemStone

Dale Henrichs
Porting the latest Zinc and Zodiac to GemStone has been on our collective todo list for  awhile now.

Sven recently put the source for Zinc and Zodiac up on GitHub and I promptly forked the projects[1][2] in the glassdb organization[3].

I've created a `gemstone` branch for Zinc and and a `gemstone3.1` branch for Zodiac (we will have SSL socket support in 3.1).

I'd like to use Zinc (and eventually Zodiac) as a test case for doing joint development using GitHub ... For those interested in participating you'd start by loading filetree[4] into your GemStone image.

We could try doing development where the participants were members of the glassdb organization, or you could fork the glassdb Zinc project.

I've created the separate branches because I want the 'master' branch to track Sven's Pharo implementation. I expect the glassdb fork to be the clearinghouse for pull requests back to Sven for bugfixes, etc.

I don't quite have Metacello support for GitHub, so you'd need to manually manage the git repository and do Gofer-based loads. Here's the "workspace"[5], that I use for my GitHub-based Metacello development ...

I'm not quite ready to dive into the port (I've got 3.1 and Metacello on my plate), but I thought that if anyone else wanted to get started or dip their toes into the GitHub universe, that having some real work to do is a good starting point...

I haven't even tried loading this into GemStone, so I'm not sure what to expect.

Paul Debruicker has paved the way with his original port[6] and we can leverage his work as much as possible ...

I've been very happy with my experiences using GitHub so I hope to eventually move the bulk of the glass projects to GitHub, but we need to work out the collaboration model a bit, I think.

I've written some short guidelines for contributing to filetree[7] and I'd say we'd start with those and modify the guidelines as we gain experience ...

I think we should use the Zinc issues list[8] for discussions/questions about porting Zinc to GemStone.

So if you interested fork (or follow) the glassdb project and get busy:)

Dale

[1] https://github.com/glassdb/zinc
[2] https://github.com/glassdb/zodiac
[3] https://github.com/glassdb
[4] https://github.com/dalehenrich/filetree
[5] https://github.com/dalehenrich/metacello-work/blob/master/docs/WholeEnchilada.md
[6] http://seaside.gemstone.com/ss/ZincHTTPComponents.html
[7] https://github.com/dalehenrich/filetree/blob/master/doc/Contribute.md
[8] https://github.com/glassdb/zinc/issues
Reply | Threaded
Open this post in threaded view
|

Re: zinc and zodiac ports for GemStone

Dale Henrichs
Just to clarify what I'm thinking a bit ... I'm imagining that folks can bite off very small chunks of this project. for example the tasks in rough order are:

  - create Gofer script
  - get Gofer script to load cleanly
  - clean up undefined globals
  - clean up sent by not implemented
  - run tests
  - get tests to run cleanly

The size of the small steps I'm think of include:

  - built script with list of packages, didn't test
  - tested script and got 8 of 10 packages to load
  - cleaned up 5 undeclared globals
  - integrate a pull request

The idea is to take a little bit of time, do part of a task, commit, create pull request or merge (depending upon how people want to organize things) ...

Come back later, pull/merge latest work, update image, check task list and pick a task and assign it to yourself ... get some work done, commit ...

Repeat ...

I think that this kind of approach can work ... making it possible to make progress without having to commit to the whole task ... the task list (issues) can keep folks from working on the same problem and we merge things when work overlaps ...

Dale

----- Original Message -----
| From: "Dale Henrichs" <[hidden email]>
| To: "GemStone Seaside beta discussion" <[hidden email]>
| Sent: Wednesday, May 23, 2012 10:13:09 AM
| Subject: [GS/SS Beta] zinc and zodiac ports for GemStone
|
| Porting the latest Zinc and Zodiac to GemStone has been on our
| collective todo list for  awhile now.
|
| Sven recently put the source for Zinc and Zodiac up on GitHub and I
| promptly forked the projects[1][2] in the glassdb organization[3].
|
| I've created a `gemstone` branch for Zinc and and a `gemstone3.1`
| branch for Zodiac (we will have SSL socket support in 3.1).
|
| I'd like to use Zinc (and eventually Zodiac) as a test case for doing
| joint development using GitHub ... For those interested in
| participating you'd start by loading filetree[4] into your GemStone
| image.
|
| We could try doing development where the participants were members of
| the glassdb organization, or you could fork the glassdb Zinc
| project.
|
| I've created the separate branches because I want the 'master' branch
| to track Sven's Pharo implementation. I expect the glassdb fork to
| be the clearinghouse for pull requests back to Sven for bugfixes,
| etc.
|
| I don't quite have Metacello support for GitHub, so you'd need to
| manually manage the git repository and do Gofer-based loads. Here's
| the "workspace"[5], that I use for my GitHub-based Metacello
| development ...
|
| I'm not quite ready to dive into the port (I've got 3.1 and Metacello
| on my plate), but I thought that if anyone else wanted to get
| started or dip their toes into the GitHub universe, that having some
| real work to do is a good starting point...
|
| I haven't even tried loading this into GemStone, so I'm not sure what
| to expect.
|
| Paul Debruicker has paved the way with his original port[6] and we
| can leverage his work as much as possible ...
|
| I've been very happy with my experiences using GitHub so I hope to
| eventually move the bulk of the glass projects to GitHub, but we
| need to work out the collaboration model a bit, I think.
|
| I've written some short guidelines for contributing to filetree[7]
| and I'd say we'd start with those and modify the guidelines as we
| gain experience ...
|
| I think we should use the Zinc issues list[8] for
| discussions/questions about porting Zinc to GemStone.
|
| So if you interested fork (or follow) the glassdb project and get
| busy:)
|
| Dale
|
| [1] https://github.com/glassdb/zinc
| [2] https://github.com/glassdb/zodiac
| [3] https://github.com/glassdb
| [4] https://github.com/dalehenrich/filetree
| [5]
| https://github.com/dalehenrich/metacello-work/blob/master/docs/WholeEnchilada.md
| [6] http://seaside.gemstone.com/ss/ZincHTTPComponents.html
| [7]
| https://github.com/dalehenrich/filetree/blob/master/doc/Contribute.md
| [8] https://github.com/glassdb/zinc/issues
|
Reply | Threaded
Open this post in threaded view
|

Re: zinc and zodiac ports for GemStone

Paul DeBruicker
In reply to this post by Dale Henrichs
On 05/23/2012 10:13 AM, Dale Henrichs wrote:
> Paul Debruicker has paved the way with his original port[6] and we can leverage his work as much as possible ...


Some of that port was just getting things that were in core Pharo/Squeak
packages into Gemstone (e.g. things that Zinc used but were not part
of/specific to Zinc) that should/could have been integrated into a
#squeakCommon compatibility layer of Gemstone.

How can I determine if that has happened?  If you want a specific list I
can spend some time this weekend (assuming rain) sorting it out.


Off the top of my head I remember other problems with the quality of my
port included:
        - use of overrides rather than subclasses
        - no separation of core Zinc code and platform specific code
        - not implementing some functionality for streaming Gzip and Jpeg files
so those tests always failed.


Also at the moment Zodiac relies on the SqueakSSLPlugin so probably will
have to wait for availability of Gemstone's SSL support to port it.  You
should be able to port Zinc without porting Zodiac, but you'd be left
with just HTTP service rather than HTTPS service as well.

Reply | Threaded
Open this post in threaded view
|

Re: zinc and zodiac ports for GemStone

Dale Henrichs


----- Original Message -----
| From: "Paul DeBruicker" <[hidden email]>
| To: "GemStone Seaside beta discussion" <[hidden email]>
| Sent: Wednesday, May 23, 2012 3:14:07 PM
| Subject: Re: [GS/SS Beta] zinc and zodiac ports for GemStone
|
| On 05/23/2012 10:13 AM, Dale Henrichs wrote:
| > Paul Debruicker has paved the way with his original port[6] and we
| > can leverage his work as much as possible ...
|
|
| Some of that port was just getting things that were in core
| Pharo/Squeak
| packages into Gemstone (e.g. things that Zinc used but were not part
| of/specific to Zinc) that should/could have been integrated into a
| #squeakCommon compatibility layer of Gemstone.
|
| How can I determine if that has happened?  If you want a specific
| list I
| can spend some time this weekend (assuming rain) sorting it out.

I recall that when I loaded it a number of the compatibility methods had already been included in GLASS, so a number of the methods have already been included ... I'd be more interested in understanding how much of your port is still valid ... I don't know how much zinc has changed since you did the port.

So perhaps getting a feel for how much of the port is still valid would be a good way to go ... we can sort out squeak/pharo compat methods after we get the tests passing ...

If the majority of your port still applies then the sequence will be to load your port and then spend time integrating with in the latest Zinc...

|
|
| Off the top of my head I remember other problems with the quality of
| my
| port included:
| - use of overrides rather than subclasses
| - no separation of core Zinc code and platform specific code
| - not implementing some functionality for streaming Gzip and Jpeg
| files
| so those tests always failed.

With Git, it isn't quite necessary to isolate platform-specific changes in separate packages ... we can afford to make spot changes, because the git merge does such a good job of managing things and I'm moving Metacello so that you can load the code for a project from the gemstone branch so it isn't even necessary to go the platform-specific package route ...

My port of STON [1] uses this approach. Take a look at the network graph[2] to get a feel for the relationships between the branches.

The main rationale for this branch per dialect approach is that when you split out the platform-specific code, you make some pretty big changes that the original maintainers may not want to deal with and then your port is difficult to keep in synch ... With the branch pre dialect, you just change the method to use the native GemStone method ... if there is compatibility method, you use it and then submit a pull request to the original developers to make their code more portable ... if they don't like the change, no biggie git manages the change and conflicts for you ...

[1] https://github.com/dalehenrich/ston
[2] https://github.com/dalehenrich/ston/network
|
|
| Also at the moment Zodiac relies on the SqueakSSLPlugin so probably
| will
| have to wait for availability of Gemstone's SSL support to port it.

Yes when GemStone 3.1 comes out we'll be able to port Zodiac.

|  You
| should be able to port Zinc without porting Zodiac, but you'd be left
| with just HTTP service rather than HTTPS service as well.


Sven actually put Zinc and Zodiac up on GitHub because I asked him to...to facilitate our port ...

Dale
Reply | Threaded
Open this post in threaded view
|

Re: zinc and zodiac ports for GemStone

Paul DeBruicker
On 05/23/2012 04:05 PM, Dale Henrichs wrote:
>
> With Git, it isn't quite necessary to isolate platform-specific changes in separate packages ... we can afford to make spot changes, because the git merge does such a good job of managing things and I'm moving Metacello so that you can load the code for a project from the gemstone branch so it isn't even necessary to go the platform-specific package route ...


In the earlier port I made the Zinc-Gemstone package and put a bunch of
extensions / overrides in it.  When using git should I change the
*zinc-gemstone extension to *zinc-http and push all those changes back
into the Zinc-HTTP package? Or would you recommend keeping it separated
for now?
Reply | Threaded
Open this post in threaded view
|

Re: zinc and zodiac ports for GemStone

Dale Henrichs
Paul,

Assuming that you are doing the work on the gemstone branch, yes. The gemstone branch gives us the isolation that we need and we'll get merge conflicts if/when Sven makes changes to those methods ... much easier to maintain, IMHO.

At least that's the theory, so let's take this route for now and see if it works in practice ...

Dale

----- Original Message -----
| From: "Paul DeBruicker" <[hidden email]>
| To: "GemStone Seaside beta discussion" <[hidden email]>
| Sent: Saturday, May 26, 2012 8:33:02 AM
| Subject: Re: [GS/SS Beta] zinc and zodiac ports for GemStone
|
| On 05/23/2012 04:05 PM, Dale Henrichs wrote:
| >
| > With Git, it isn't quite necessary to isolate platform-specific
| > changes in separate packages ... we can afford to make spot
| > changes, because the git merge does such a good job of managing
| > things and I'm moving Metacello so that you can load the code for
| > a project from the gemstone branch so it isn't even necessary to
| > go the platform-specific package route ...
|
|
| In the earlier port I made the Zinc-Gemstone package and put a bunch
| of
| extensions / overrides in it.  When using git should I change the
| *zinc-gemstone extension to *zinc-http and push all those changes
| back
| into the Zinc-HTTP package? Or would you recommend keeping it
| separated
| for now?
|
Reply | Threaded
Open this post in threaded view
|

Re: zinc and zodiac ports for GemStone

Dale Henrichs
Paul

It looks like you've been making great progress on bootstrapping the GemStone Zinc port[1] Including a todo lise[2] ...

Let us know when you're ready for us to join in on the fun:)

Dale

[1] https://github.com/glassdb/zinc
[2] https://github.com/glassdb/zinc/issues

----- Original Message -----
| From: "Dale Henrichs" <[hidden email]>
| To: "GemStone Seaside beta discussion" <[hidden email]>
| Sent: Saturday, May 26, 2012 10:38:09 AM
| Subject: Re: [GS/SS Beta] zinc and zodiac ports for GemStone
|
| Paul,
|
| Assuming that you are doing the work on the gemstone branch, yes. The
| gemstone branch gives us the isolation that we need and we'll get
| merge conflicts if/when Sven makes changes to those methods ... much
| easier to maintain, IMHO.
|
| At least that's the theory, so let's take this route for now and see
| if it works in practice ...
|
| Dale
|
| ----- Original Message -----
| | From: "Paul DeBruicker" <[hidden email]>
| | To: "GemStone Seaside beta discussion" <[hidden email]>
| | Sent: Saturday, May 26, 2012 8:33:02 AM
| | Subject: Re: [GS/SS Beta] zinc and zodiac ports for GemStone
| |
| | On 05/23/2012 04:05 PM, Dale Henrichs wrote:
| | >
| | > With Git, it isn't quite necessary to isolate platform-specific
| | > changes in separate packages ... we can afford to make spot
| | > changes, because the git merge does such a good job of managing
| | > things and I'm moving Metacello so that you can load the code for
| | > a project from the gemstone branch so it isn't even necessary to
| | > go the platform-specific package route ...
| |
| |
| | In the earlier port I made the Zinc-Gemstone package and put a
| | bunch
| | of
| | extensions / overrides in it.  When using git should I change the
| | *zinc-gemstone extension to *zinc-http and push all those changes
| | back
| | into the Zinc-HTTP package? Or would you recommend keeping it
| | separated
| | for now?
| |
|
Reply | Threaded
Open this post in threaded view
|

Re: zinc and zodiac ports for GemStone

Paul DeBruicker
On 05/28/2012 10:46 AM, Dale Henrichs wrote:

> Paul
>
> It looks like you've been making great progress on bootstrapping the GemStone Zinc port[1] Including a todo lise[2] ...
>
> Let us know when you're ready for us to join in on the fun:)
>
> Dale
>
> [1]https://github.com/glassdb/zinc
> [2]https://github.com/glassdb/zinc/issues

Hi Dale,

Now is as good a time as any if you want to mess with it.

First load SocketStream from the PharoCompat repo on Gemsource.  Then
the Zinc-HTTP package and Zinc-Tests packages from github should work.

I'm not sure if the ZnManagingMultithreadedServer is working properly or
not.  I've just been testing with the single and multithreaded servers
so far.

I also haven't tried the Seaside adaptor.   I'll make issues on the
github repo.  My guess is that they will probably both just work but
we'll see.



Paul
Reply | Threaded
Open this post in threaded view
|

Re: zinc and zodiac ports for GemStone

Dale Henrichs
In preparation for loading Zinc, I updated the gemstone branch for FileTree to match the Pharo branch and addressed an issue or two ... now I'm ready for Zinc:)

Dale

----- Original Message -----
| From: "Paul DeBruicker" <[hidden email]>
| To: "GemStone Seaside beta discussion" <[hidden email]>
| Sent: Monday, May 28, 2012 11:23:00 AM
| Subject: Re: [GS/SS Beta] zinc and zodiac ports for GemStone
|
| On 05/28/2012 10:46 AM, Dale Henrichs wrote:
| > Paul
| >
| > It looks like you've been making great progress on bootstrapping
| > the GemStone Zinc port[1] Including a todo lise[2] ...
| >
| > Let us know when you're ready for us to join in on the fun:)
| >
| > Dale
| >
| > [1]https://github.com/glassdb/zinc
| > [2]https://github.com/glassdb/zinc/issues
|
| Hi Dale,
|
| Now is as good a time as any if you want to mess with it.
|
| First load SocketStream from the PharoCompat repo on Gemsource.  Then
| the Zinc-HTTP package and Zinc-Tests packages from github should
| work.
|
| I'm not sure if the ZnManagingMultithreadedServer is working properly
| or
| not.  I've just been testing with the single and multithreaded
| servers
| so far.
|
| I also haven't tried the Seaside adaptor.   I'll make issues on the
| github repo.  My guess is that they will probably both just work but
| we'll see.
|
|
|
| Paul
|
Reply | Threaded
Open this post in threaded view
|

Re: zinc and zodiac ports for GemStone

Dale Henrichs
Paul, et.al.,

I've started some work on Issue #18[1] and I decided to try out the in-line comment feature of GitHub to review your initial commit of the GemStone port. I've summarize the set of links in a commit comment[2].

I'm mentioning this here, because I think that these inline comments are very useful ... It means that commits can be reviewed and detailed questions/critiques can be made and you don't have to own the commit that you are commenting on ...

This happened to be a giant commit where Paul integrated his entire port in one commit ... normally the commits are going to be smaller...

I encourage all of you to poke around the commit comments to see the value first hand ... of course if you have your own questions/comments all the better ...

Also I invite you to review my commits[3] on the project to see what I'm doing and to cast your own critical eye on my work ...

Dale

[1] https://github.com/glassdb/zinc/issues/18
[2] https://github.com/glassdb/zinc/commit/5f09f70ba9abab24314ac8ed5e6cba668ac7c01e#commitcomment-1385604
[3] https://github.com/dalehenrich/zinc/commit/78640393d4490702d1c2a66eba74b65cff80710c

----- Original Message -----
| From: "Dale Henrichs" <[hidden email]>
| To: "GemStone Seaside beta discussion" <[hidden email]>
| Sent: Monday, May 28, 2012 4:48:14 PM
| Subject: Re: [GS/SS Beta] zinc and zodiac ports for GemStone
|
| In preparation for loading Zinc, I updated the gemstone branch for
| FileTree to match the Pharo branch and addressed an issue or two ...
| now I'm ready for Zinc:)
|
| Dale
|
| ----- Original Message -----
| | From: "Paul DeBruicker" <[hidden email]>
| | To: "GemStone Seaside beta discussion" <[hidden email]>
| | Sent: Monday, May 28, 2012 11:23:00 AM
| | Subject: Re: [GS/SS Beta] zinc and zodiac ports for GemStone
| |
| | On 05/28/2012 10:46 AM, Dale Henrichs wrote:
| | > Paul
| | >
| | > It looks like you've been making great progress on bootstrapping
| | > the GemStone Zinc port[1] Including a todo lise[2] ...
| | >
| | > Let us know when you're ready for us to join in on the fun:)
| | >
| | > Dale
| | >
| | > [1]https://github.com/glassdb/zinc
| | > [2]https://github.com/glassdb/zinc/issues
| |
| | Hi Dale,
| |
| | Now is as good a time as any if you want to mess with it.
| |
| | First load SocketStream from the PharoCompat repo on Gemsource.
| |  Then
| | the Zinc-HTTP package and Zinc-Tests packages from github should
| | work.
| |
| | I'm not sure if the ZnManagingMultithreadedServer is working
| | properly
| | or
| | not.  I've just been testing with the single and multithreaded
| | servers
| | so far.
| |
| | I also haven't tried the Seaside adaptor.   I'll make issues on the
| | github repo.  My guess is that they will probably both just work
| | but
| | we'll see.
| |
| |
| |
| | Paul
| |
|
Reply | Threaded
Open this post in threaded view
|

Re: zinc and zodiac ports for GemStone

Dale Henrichs
It turns out it wasn't necessary for me to pull the comments together in a single comment ... since Paul issued a pull request, GitHub aggregates all of the comments (from a number of sources) into the pull request[1] ... very nice ...

I was wondering if there was a way to see the aggregated comments and I'm still curious if there is an alternative view to the pull request?

Dale

[1] https://github.com/glassdb/zinc/pull/1#issuecomment-5974661

----- Original Message -----
| From: "Dale Henrichs" <[hidden email]>
| To: "GemStone Seaside beta discussion" <[hidden email]>
| Sent: Monday, May 28, 2012 6:58:52 PM
| Subject: Re: [GS/SS Beta] zinc and zodiac ports for GemStone
|
| Paul, et.al.,
|
| I've started some work on Issue #18[1] and I decided to try out the
| in-line comment feature of GitHub to review your initial commit of
| the GemStone port. I've summarize the set of links in a commit
| comment[2].
|
| I'm mentioning this here, because I think that these inline comments
| are very useful ... It means that commits can be reviewed and
| detailed questions/critiques can be made and you don't have to own
| the commit that you are commenting on ...
|
| This happened to be a giant commit where Paul integrated his entire
| port in one commit ... normally the commits are going to be
| smaller...
|
| I encourage all of you to poke around the commit comments to see the
| value first hand ... of course if you have your own
| questions/comments all the better ...
|
| Also I invite you to review my commits[3] on the project to see what
| I'm doing and to cast your own critical eye on my work ...
|
| Dale
|
| [1] https://github.com/glassdb/zinc/issues/18
| [2]
| https://github.com/glassdb/zinc/commit/5f09f70ba9abab24314ac8ed5e6cba668ac7c01e#commitcomment-1385604
| [3]
| https://github.com/dalehenrich/zinc/commit/78640393d4490702d1c2a66eba74b65cff80710c
|
| ----- Original Message -----
| | From: "Dale Henrichs" <[hidden email]>
| | To: "GemStone Seaside beta discussion" <[hidden email]>
| | Sent: Monday, May 28, 2012 4:48:14 PM
| | Subject: Re: [GS/SS Beta] zinc and zodiac ports for GemStone
| |
| | In preparation for loading Zinc, I updated the gemstone branch for
| | FileTree to match the Pharo branch and addressed an issue or two
| | ...
| | now I'm ready for Zinc:)
| |
| | Dale
| |
| | ----- Original Message -----
| | | From: "Paul DeBruicker" <[hidden email]>
| | | To: "GemStone Seaside beta discussion"
| | | <[hidden email]>
| | | Sent: Monday, May 28, 2012 11:23:00 AM
| | | Subject: Re: [GS/SS Beta] zinc and zodiac ports for GemStone
| | |
| | | On 05/28/2012 10:46 AM, Dale Henrichs wrote:
| | | > Paul
| | | >
| | | > It looks like you've been making great progress on
| | | > bootstrapping
| | | > the GemStone Zinc port[1] Including a todo lise[2] ...
| | | >
| | | > Let us know when you're ready for us to join in on the fun:)
| | | >
| | | > Dale
| | | >
| | | > [1]https://github.com/glassdb/zinc
| | | > [2]https://github.com/glassdb/zinc/issues
| | |
| | | Hi Dale,
| | |
| | | Now is as good a time as any if you want to mess with it.
| | |
| | | First load SocketStream from the PharoCompat repo on Gemsource.
| | |  Then
| | | the Zinc-HTTP package and Zinc-Tests packages from github should
| | | work.
| | |
| | | I'm not sure if the ZnManagingMultithreadedServer is working
| | | properly
| | | or
| | | not.  I've just been testing with the single and multithreaded
| | | servers
| | | so far.
| | |
| | | I also haven't tried the Seaside adaptor.   I'll make issues on
| | | the
| | | github repo.  My guess is that they will probably both just work
| | | but
| | | we'll see.
| | |
| | |
| | |
| | | Paul
| | |
| |
|