Zinc HTTP Components is an open-source Smalltalk framework to deal with the HTTP networking protocol. Pharo is our reference platform. Zn is reasonably mature and complete. It has been in development and in production use since 2010 and is a standard part for Pharo versions 1.3, 1.4 and 2.0.
The main documentation for Zinc is the paper and draft chapter for the Pharo By Example 2 book. This is an HTML version based on a Markdown source, styled for readability. Here is a version not using fancy syntax highlighting.
At the Pharo Conference in May 2012, I presented both Zn and Zdc. Here are the slides of the Zinc presentation. This is a 750Kb PDF.
You have several options to install Zinc HTTP Components. To load the framework as an addon to your current image Pharo 2.0, or to update to the very lastest development version, execute the following script:
Gofer it squeaksource: 'ZincHTTPComponents'; package: 'Zinc-Character-Encoding-Core'; package: 'Zinc-Resource-Meta-Core'; package: 'Zinc-HTTP'; package: 'Zinc-FileSystem'; package: 'Zinc-Character-Encoding-Tests'; package: 'Zinc-Resource-Meta-Tests'; package: 'Zinc-Tests'; load
On non-Pharo 2.0 platforms that do not use FileSystem, use the following script:
Gofer it squeaksource: 'ZincHTTPComponents'; package: 'Zinc-Pharo-Forward-Compatibility'; package: 'Zinc-Character-Encoding-Core'; package: 'Zinc-Resource-Meta-Core'; package: 'Zinc-HTTP'; package: 'Zinc-FileSystem-Legacy'; package: 'Zinc-Character-Encoding-Tests'; package: 'Zinc-Resource-Meta-Tests'; package: 'Zinc-Tests'; load
Compatibility with Pharo 1.3, 1.4 and 2.0 should be 100%. Older Pharo versions might still work. Compatibility with Squeak 4.2+ is not 100%, some cryptographic and encoding stuff is not working, without Announcements logging won't work, but overall the most used client and server features are functioning. A port to Gemstone is also available.
You can also use the Metacello configuration, ConfigurationOfZincHTTPComponents, from one of two locations, like this:
Gofer it squeaksource: 'ZincHTTPComponents'; package: 'ConfigurationOfZincHTTPComponents'; load Gofer it squeaksource: 'MetacelloRepository'; package: 'ConfigurationOfZincHTTPComponents'; load ConfigurationOfZincHTTPComponents load.
The web pages you are currently looking at are served by the Zinc HTTP Components standard web server, more specifically ZnManagingMultiThreadedServer with the ZnDefaultServerDelegate handler. The default / (slash) handler you would be seeing when you are running ZnServer locally (ZnServer startDefaultOn: 8080) is the /welcome page. This live demo setup is configured slightly differently to serve some HTML pages instead, under /zn by way of ZnStaticFileServerDelegate.
http://zn.stfx.eu is a cloud based virtual GNU/Linux server, more specifically an Amamzon AWS EC2 Micro Instance running Ubuntu 11.10 Server Edition using an Elastic IP address pointing to the http://stfx.eu - Smalltalk is the Red Pill website. Apache 2 was configured to statelessly load balance requests over 4 Smalltalk instances. Each Smalltalk instance is a Pharo 1.4 Smalltalk Image with Zinc HTTP Components run by a Pharo Cog VM. Monit is making sure that all 4 Smalltalk instances keep on running.
The source code for Zinc HTTP Components lives in several places, like on SqueakSource at ZincHTTPComponents where you will find some standard information to get you started.
We use an open development model. If you plan on making important changes that you would like to be integrated in the main development branch, it would be best if you discussed your plans with the authors. We like clean, elegant, self-documenting code. We like single purpose classes and small methods. We like tests, small commits and useful checkin messages.
Zinc HTTP Components is part of various targets of Pharo's Continous Integration Server, a Jenkins server.
Hosting of this website is provided by the stfx - Smalltalk is the Red Pill website. See also the information about the live demo.
Zinc HTTP Components is open-source software licensed under the MIT License. All contributions should be licensed under the same terms.
We kept a copy of our previous homepage online for historical accuracy.
Any project needs a name. We also needed a namespace prefix for our Smalltalk classes. We choose 'Zinc' and 'Zn' respectively.
zinc |zi ng k| noun the chemical element of atomic number 30, a silvery-white metal that is a constituent of brass and is used for coating (galvanizing) iron and steel to protect against corrosion. (Symbol: Zn) ORIGIN mid 17th cent.: from German Zink, of unknown origin.
Here is the Wikipedia entry: Zinc. Apart from the fact that this is a nice name, don't go searching for a hidden meaning: there is none.