You are currently browsing the category archive for the 'Seaside' category.

[1]

Not long after shipping the SOAP update for GLASS, I started working on Metacello. With the SOAP update, it became obvious that the GLASS ‘umbrella’ package was going to have to be replaced, and soon. Well, 7 months later I am reaching the point were I am finally ready to replace the GLASS package with a Metacello configuration .

I’m going to phase in the use of Metacello with GLASS. With the initial release, we’ll use Metacello for bootstrapping GLASS into a virgin extent. This way folks starting a greenfield project can use Seaside 2.8.4 or Pier 1.2 right away. Other releases that are in the pipeline:

  • GemStone/S 64 2.4.x with partial continuations for Seaside3.0.
  • Metacello configuration for bootstrapping Seaside 3.0 (ConfigurationOfSeaside30). A Squeak/Pharo version of this configuration is available now.
  • final release of GLASS.230 package that will boot Metacello into an existing GLASS installation and allow for upgrading to GLASS 1.0-beta.0 and beyond.

GLASS 1.0-beta.0

ConfigurationOfGLASS version 1.0-beta.0 is based upon GLASS.230-dkh.231, with the following additions:

  • Seaside 2.8.4
  • Pier 1.2
  • Metacello support
  • VB-Regex loaded as part of ‘core’
  • Scriptaculous updates from Ken Treis
  • GemTools updates from Gerhard Obermann
    • optional auto abort performed before commands
    • add remove method (without any checks) renamed “remove method …” to “safe remove method …”
    • add command “browse class history”
    • add class history index to class browser title
  • browse changes fixed … reversed comparison direction so that ”Install” will install repository version. the strike-out text is what is in current image.
  • supports bootstrapping of code into virgin extent (see Bootstrapping Instructions).

Read the following sections to gain an understanding of the 1.0-beta configuration structure. If you are impatient and just want to load and go, then you can skip to the Bootstrapping Instructions.

1.0-beta Configuration Structure

With release 1.0-beta.0 there are 9 different loadable configurations defined in ConfigurationOfGLASS. If you read the code in the method ConfigurationOfGlass>>baseline10beta00:, you can see the Metacello specification summarized in the following sections.

Primary GLASS Projects

Any one (or combination) of the following projects and groups may be used as a load configuration for bootstrapping

Each of these projects is managed by it’s own ConfigurationOfxxx class.

  • Core project. ConfigurationOfGsCore manages the Core, Base-Bootstrap, Bootstrap, GemStone-Exceptions (2.x only), GemStone-Indexing-Extensions, GsRandom, Sport, Squeak and VB-Regex packages. The Core packages are fundamental to the operation of GLASS and is always loaded.
  • FastCGI project. ConfigurationOfGsFastCGI manages the FastCGIPool and FastCGI packages. The FastCGI packages are optional and are used to support FastCGI packages for Seaside2.8 and Seaside3.0.
  • Hyper project. ConfigurationOfGsHyper manages the OpenSkills and Hyper packages. The Hyper packages are optional and are used to support the Hyper packages for Seaside2.8 and Seaside3.0.
  • Magritte project. ConfigurationOfGsMagritte manages the Magritte-Model, Magritte-Tests and Magritte-Seaside packages. The Magritte packages are optional and represent the GemStone/S port of Magritte. By default only Magritte-Model and Magritte-Tests packages are loaded. To load Magritte-Seaside, it must be explicitly referenced.
  • Metacello project. ConfigurationOfMetacello manages the Metacello packages and is imported from the Metacello project. By default the Metacello-Core, Metacello-MC and Metacello-Platform packages are loaded. The Metacello packages are fundamental to the operation of GLASS.
  • Misc project. ConfigurationOfGsMisc manages the MockGemStone, SMTPMail, Utf8Encoding, Announcements, XML-Parser, SIXX, SmaCC, System-Digital-Signatures, and GemStone-Release-Support packages. The Misc packages are represent useful pieces of functionality that are contained in a single package and depend only upon the Core project. The Misc project is rarely loaded in it’s entirety. Typically individual packages are loaded from the project.
  • Monticello project. ConfigurationOfGsMonticello manages the Change-Notification, PackageInfo-Base, and Monticello packages. The Monticello packages are fundamental to the operation of GLASS.
  • OB project. ConfigurationOfGsOB manages the OmniBrower, OB-GemStone-Platfrom, OB-Monticello, OB-SUnitIntegration, OB-SUnitGUI, OB-Stanadard, OB-Tools and JadeServer packages. The OB packages are optional and provide the implementation for the GemTools.
  • Pier project. ConfigurationOfGSPier manages the Pier-Model, Pier-Blog, Pier-DesignChooser, Pier-Design, Pier-Documents, Pier-EditorEnh, Pier-Google, Pier-Links, Pier-Randomizer, Pier-Slideshow, Pier-TagCloud, and Pier-Twitter packages. The Pier packages are optional and represent the GemStone/S port of Pier.
  • Scaffolding project. ConfigurationOfGsScaffolding manages the GemStone-Scaffolding package. The Scaffolding packages are optional and representing the implementation of Scaffolding for GemStone. Even though this project consists of a single primary package, the fact that it depends upon Magritte and Scriptaculous warrants the creation of separate Metacello configuration.
  • Seaside2.8 project. ConfigurationOfGsSeaside28 manages the Seaside2.8, SeasideAsync, Scriptaculous, RSRSS2, CallDemo, CheckboxExample, CSSDock, ErrorHandler, HelloWorld, ImageDemo, LogoutDemo, MarqueeDemo, menuDemo, ScreenResolution, Store, GemStone-Store, GemStone-Examples, FastCGISeaside and HyperSeaside packages. The Seaside2.8 packages are optional and represent the GemStone/S port of Seaside. By default only the Seaside2.8 pacakge is loaded. All of the other packages must be explicitly referenced.
  • Seaside2.8 Testing project. ConfigurationOfGsSeasideTesting28 manages the SeasideTesting and PierTesting packages.
  • SOAP project. ConfigurationOfGsSoap manages the SoXML, SOAP-CORE, SOAP-Client SOAP-Server, SOAP-Example and SOAP-TestCases packages. The SOAP packages are optional and represent the GemStone/S port of SoapCore.

Convenience GLASS Projects

Groups

The following groups have been defined for the common load configurations.

As you become familiar with Metacello and the GLASS configurations, you can define your load configuration. although you probably want to become more familiar with Metacello first.

Bootstrapping Instructions

Please comment to this post or send mail to the GLASS Beta Mailing List if you have trouble or the instrcutions are not clear. The bootstrap should work for the appliance or any version of GemStone/S 2.3 or greater.

  1. Start a stone using a virgin extent copied from $GEMSTONE/bin/extent0.dbf into $GEMSTONE/seaside/data. Don’t forget to shut the stone down before copying extents around and don’t forget to make the extent writable using ‘chmod +w extent0.dbf’.
  2. Download and unzip bootstrap_1.0-beta.0.zip.
  3. cd to the bootstrap_1.0-beta.0 directory
  4. Edit the .topazini file to match your stone.
  5. Launch topaz: ‘topaz -l -T50000′
  6. ‘login’ and ‘input installMaster.topaz’
  7. Exit topaz. The ‘installMaster.topaz’ script installs the Dev Group which includes the GemTools.
  8. Launch a GemTools Client 1.0-beta.1 image and login.
  9. [Updated: later that day] Due to some bugs discovered in 1.0-beta.0, it is recommended that you update to 1.0-beta.1 by executing the following expression:
    ConfigurationOfGLASS project updateProject.
    (ConfigurationOfGLASS project version: '1.0-beta.1')
        load: 'Dev'.
    System commitTransaction.
  10. Choose a configuration to load by executing one of the following expressions:
    (ConfigurationOfGLASS project version: '1.0-beta.1')
        load: 'Magritte Dev'.
    (ConfigurationOfGLASS project version: '1.0-beta.1')
        load: 'SOAP Dev'.
    (ConfigurationOfGLASS project version: '1.0-beta.1')
        load: 'Seaside Dev'.
    (ConfigurationOfGLASS project version: '1.0-beta.1')
        load: 'Seaside Testing Dev'.
    (ConfigurationOfGLASS project version: '1.0-beta.1')
        load: 'Scaffolding Dev'.
    (ConfigurationOfGLASS project version: '1.0-beta.1')
        load: 'Pier Dev'.
    (ConfigurationOfGLASS project version: '1.0-beta.1')
        load: 'Pier Testing Dev'.
    (ConfigurationOfGLASS project version: '1.0-beta.1')
        load: 'ALL'.
  11. Make a backup and have fun!

—–
[1]http://www.flickr.com/photos/dawilson/ / CC BY-NC-ND 2.0

gs_share_everything_esug08-poster

I just recently found out that James Robertson had posted a video of my “Share Everything” talk from ESUG 2008 several months ago. I must have missed the announcement:)

An MP4 version of the talk was posted here a month ago.

And here’s a link to the slides.

Andreas Brodbeck published Seaside project is live! a report on his successful use of GLASS and Seaside for a course management tool application.

Andreas shares some of his tips for doing development in Squeak/Pharo and deploying in GemStone/S.

Photo by gorgeoux (Creative Commons).

James Foster has just announced the availability of the Seaside tutorial Learning Web Development with Seaside, that he has been developing for several months. The tutorial is the basis of his popular Weaving a GLASS Web workshop and his SoCal tour.

The tutorial is being made available under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 License.

If you are interested in having a Seaside tutorial/workshop in your area, please contact James at James dot Foster at GemStone dot com.

Photo by Rob Shenk (Creative Commons).

[1]

In the last month, Gerhard Obermann and I have been pretty busy. Between us we’ve made over 80 updates to the GemTools package and over 20 updates to the GLASS package.

At this point in time, I think that the GemTools Launcher (GemStone-dkh.441) and the OmniBrowser tools are stable enough that you no longer need to be Brave and/or Curious to take the new tools and GLASS.230-dkh.209 for a spin. In fact the tools are probably in better shape now than they’ve ever been (I haven’t seen the MNU storms that would periodically appear in the old client for quite awhile). If you’re reluctant to upgrade, check out the new Backup/Restore commands. Being able to backup/restore your repository from the GemTools Client should ease your mind.

I still have between 50 and 100 issues that I want to address (mainly on the server-side) before the next beta release. In the mean time, I am all but done with the UI changes and I would like feedback from folks on the new commands. If you haven’t already, join the beta mailing list and send mail with your comments and suggestions.

If you run into (gasp!) a bug, use the new Bug Report commands to report the bug. Honestly, I would rather have people report 100 duplicate bugs than miss 1 valid bug report – don’t assume that I know about the problem!

GemStone-dkh.441

There have been a significant number of changes to the GemTools Client since the last preview release, so many that I decided to update the old Terse Guide to the GLASS Tools with a new post: Terse Guide to the (new) GLASS Tools. All of the menu items for the GemTools Launcher are documented.

If you haven’t already created a new GemTools client smalltalk image, then follow these instructions.

If you’ve already updated to a preview release, then you’ve already got a new Squeak/Pharo image and all you need to do is to update to the latest version of the GemTools Client, using these instructions.

Take a look at the GemTools change log for a complete history of the changes made between GemStone-dkh.355 and GemStone-dkh.441.

GLASS.230-dkh.209

In addition to the support needed for the GemTools Launcher a number of bugs were fixed:

  • Bug39820 – packages dirtied unnecessarily when recompiling subclasses
  • Bug38105 – HTTPSocketError not correctly loaded
  • Bug38794 – Subclass creation method leaves instance creation disabled
  • Bug39838 – ExceptionA class>>hasFixFor39741 breaks some things
  • Bug38146 – unload class and remove method should clean up undeclared sybmols
  • Bug39798 – UndefinedSymbols is not maintained correctly
  • Bug39850 – MCPackageBrowser doesn’t update when package dirtied
  • Bug39345 – ‘Squeak browser tools need move-to-category button’
  • Bug39578 – ‘”revert to version” in “Versions of” method browser does not autocommit’
  • Bug39303 – sorting of change list in Monticello brower is strange
  • Bug39823 – missing OSkSocketReadStream>>upToEnd
  • Bug39800 – SeasideTesting has probably decayed…
  • Bug39777 – Cannot ‘browse’ ProtoObject without a walkbalk
  • Bug39772 – Class>>allSubInstancesDo: always fails
  • Bug39582 – lots of key-not-found errors using Vocabulary browser
  • Bug38140 – ‘highlight inspect’ feature for debugger
  • Bug38274 – need visual separation between ancestors in MCWorkingCopy>>summary
  • Bug38304 – CTL-i on a String or Smallinteger ends up with Squeak inspector
  • Bug39662 – Inspecting a float in GLASS results in a ‘Float out of Range’ error in Squeak
  • Bug39827 – missing base method for GLASS
  • Bug39795 – MAPriorityContainer>>remove: fails unexpectedly

Other highlights include:

The following packages have bee removed from the GLASS package:

  • MonticelloConfigurations
  • Pier-LightBox
  • Pier-Twitter
  • SqueakSource
  • TinyWiki

These packages are not automatically removed by the update process. If you aren’t using them, then you should manually unload them using the Monitcello Browser. If you don’t remove them you may see test failures for the UndefinedSymbolsTest and SentButNotImplementedTest. After removing the above packages the tests should run clean (4182 run, 4182 passed, 0 failed, 0 errors).

Once you’ve updated to the latest version of the GemTools Client, follow these instructions to update the GLASS server software to GLASS.230-dkh.209.

Take a look at the  GLASS change log for a complete history of the changes made between GLASS.230-dkh.187 and GLASS.230-dkh.209.

—–

[1] Photo by placbo (Creative Commons).

[1]

[Update 3/16/2009: see the post GLASS Beta Update: Cooking with GLASS (Preview) for the latest preview information].

With the latest dev release of Pharo (pharo0.1-10243dev09.02.3), the new GemTools Client has stopped working correctly. From what I can see, a number of updates were made to OmniBrowser which causes the buttons to disappear from the OGLauncher….I stopped looking for additional problems at that point:). I’m not going to complain, though, the Pharo image is pretty cool already and it is still pre-Beta.

As of pharo0.1-10213dev09.01.3 (and probably pharo0.1-10236dev09.02.2.zip) the GemTools Client was working correctly. Until further notice don’t use the latest versions of Pharo.

I have been pretty busy fixing bugs recently and anticipate a refresh of the GemTools Client and the GLASS package in a week or so.

—–
[1] Photo by milomingo via Flickr (Creative Commons).

[1]

Dr. Dave West is putting on a workshop March 30 to April 3 at the Santa Fe Complex in Santa Fe, New Mexico. Our own James Foster will be leading the workshop, but it should be noted that this is not our workshop, Dr. Dave West is the organizer.

Here are the workshop details:

Building sophisticated multi-media, intensely interactive, Web applications is a significant challenge requiring mastery of multiple technologies.  GLASS provides a single environment, and language, for developing desktop-like Web applications.

This workshop will provide a GLASS overview and tutorial followed by a combination of hands-on projects and in-depth coverage of special topics (e.g. the incorporation of Sun’s Lively Kernel technology into GLASS).

James Foster of Gemstone will lead the workshop. You will also have the opportunity to work with prominent members of the Santa Fe Complex on projects.

Dates and Times: Monday, March 30 – Thursday, April 2, 8:30-4:00.  Friday, April 3, 8:30-noon.  Informal discussions, explorations, and hacking likely to take place each evening.

Where:  The Santa Fe Complex – 632 Agua Fria, in Santa Fe (one block from the RailRunner if you are coming up from Albuquerque)

Prerequisites: Some programming background will be helpful. Open to high school students.

Fee: $375 – includes lunch and breaks

Housing:  Discounted rates at hotels (all within walking distance of the Complex) will be available.

For More Information:
E-mail Dr. Dave West at profwest at fastmail dot fm or phone him at 505-231-7233.
Or come by the Santa Fe Complex, 632 Agua Fria in Santa Fe.

According to this message, the fee might be waived for ESUG members willing to travel to Santa Fe.

—–
[1] Photo by jared via Flickr (Creative Commons).

[1]

James has added two more venues to his Southern California GLASS/Seaside/MagLev Roadshow.

Tuesday evening he’ll be at Loma Linda University and Wednesday evening he’ll be in San Diego. Here’s his full itinerary:

If you’re in the Los Angeles or San Diego area next week you should drop by one of James’ presentations.

[1] Photo by enfad via Flickr (Creative Commons).

[1]

SeasideTesting is a package written by David Shaffer for testing Seaside components. David has written a good tutorial on writing tests using SeasideTesting.

I ported SeasideTesting to GLASS last summer. The current version on GemSource is SeasideTesting.g-R1.5-dkh.10 which is based on SeasideTesting-R1.5-mb.5. With a current version of the GLASS package (GLASS.230-dkh.190) a handful of the example tests are failing – there are later versions of the SeasideTesting package on SqueakSource. I will be working on updating to a later version of the package at a later date.

You have two choices when running tests:

  1. web-based test runner
  2. standard SUnit TestRunner

Web-based test runner

newtestrunner2In order to run the web-based test runner, you’ll need to launch a special Hyper server:

SeasideTestingSite launchSeaside: 9765

When you launch Hyper, your vm will block while it is serving Seaside pages. The special version of Hyper is needed, because of the way the web-based TestRunner launches a Hyper session to run the test while processing the original Seaside request.

Once you’ve launched Hyper, you can use your browser to navigate to http://<hostname>:9765/seaside/testRunner, where you can run individual test cases by clicking on the appropriate link.

For errors or failed tests you can click on the ‘Debug’ link to bring up a debugger.

When you are done testing through the web-based interface, you’ll need to interrupt the Hyper process (Alt-.) to get control back to the client.

SUnit TestRunner

seasidetestingtestrunner1You can also run the tests using the standard TestRunner window, just like any other TestCase. I’ve tested this using the OmniBrowser-based TestRunner available with the GemTools Client Preview and it works like a champ (I haven’t tried this technique with the older Morphic-based TestRunner window, so I can’t be sure that it will work correctly).

When you use TestRunner, you don’t have to start a special version of Hyper and you are able to debug the failures and errors like any other test case (without having to invoke the ‘remote debugger’, so I think that this would be the preferred technique.

A note on Albatross

Albatross is another framework for testing Seaside components, but I have yet to port it to GLASS. Since Albatross uses FFI, we may just wait until 3.0 (which has an FFI interrface) before porting Albatross.

——–

[1] Photo by SideLong via Flickr (Creative Commons).

Categories

 

November 2009
M T W T F S S
« Oct    
 1
2345678
9101112131415
16171819202122
23242526272829
30