December 9, 2008
Filed under: releases — gregturn @ 9:27 am
Spring Python is not a web framework, but instead a library of tools that can empower any python application, whether web-based, desktop, or server side utility. For more details, read the list of features below and visit the website at http://springpython.webfactional.com.
I just released Spring Python 0.9.1. One of our users spotted an error in the IoC container involving constructor arguments, and I was able to reproduce the problem, patch it, and get it released quickly to the user community. You can download it right now.
I cannot emphasize enough how valuable community feedback is to the success of this project. If you are having issues, please post an email to the list, or start a thread at the community forum, and we will examine the situation.
Also note, the web site has been updated, which includes a link to API documentation, generated by pydoc.
==============================
Release Notes – Spring Python – Version 0.9.1
Bug
- [SESPRINGPYTHONPY-86] – XMLConfig doesn’t properly lookup constructor-arg’s, but instead returns ReferenceDef objects
Improvement
===============================
Key Features of Spring Python include:
* Inversion Of Control – wire your application together using a lightweight set of blueprints. You can use several formats including a pure python code-based configuration.
* Aspect-oriented Programming – Spring Python provides great ways to wrap advice around objects, making it easy to write your own aspects. It is also utilized in other parts of Spring Python including security, transactions, and remoting.
* DatabaseTemplate – Reading from the database requires a monotonous cycle of opening cursors, reading rows, and closing cursors, along with proper exception handling. With this template class, all you need is the SQL query and a row-handling function. Spring Python does the rest.
* Database Transactions – Wrapping multiple database calls with transactions can make your code hard to read. This module provides multiple ways to define transactions without making things complicated.
* Security – Plugin security interceptors to lock down access to your methods, utilizing both authentication and domain authorization.
* Remoting – It is easy to convert your local application into a distributed one. If you have already built your client and server pieces using the IoC container, then going from local to distributed is just a configuration change.
* Samples – to help demonstrate various features of Spring Python, some sample applications have been created:
o PetClinic – Everybody’s favorite Spring sample application has been rebuilt from the ground up using various web containers including: CherryPy. Go check it out for an example of how to use this framework.
o Spring Wiki – Wikis are powerful ways to store and manage content, so we created a simple one as a demo!
o Spring Bot – Use Spring Python to build a tiny bot to manage the IRC channel of your open source project.
VN:F [1.8.4_1055]
Rating: 0.0/5 (0 votes cast)
VN:F [1.8.4_1055]
December 5, 2008
Filed under: python — gregturn @ 3:16 am
At the end of my talk yesterday, one of the attendees pointed out that Python 3.0 was released that very same day. In joking fashion, he asked, “Do you support it?” I chuckled and did explain that currently we were supporting 2.4 and 2.5 because essentially, that is what I have personally ran the automated test suite against. I hadn’t been able to run it against 2.6 yet, but intend to do that at some time. I would like to cover as much as possible, but there will definitely be limits to what is possible with a single baseline. Of course this begs the question: what DO you do when you hit that limit?
We need to determine how much interest there is, because it will demand we maintain multiple branches of Spring Python. That gets costly. I discussed this point over lunch with Russ, and he agreed with me that our primary interest is to support production systems. I believe that most people are NOT jumping rapidly to Python 3.0, so…why should we?
This is the same problem Spring Java has to deal with in regard to supporting Java 1.3, 1.4, 5, and 6. Spring 2.5 is currently supporting Java 1.3-1.4 with most classes. They also have additional classes to support Java 5/6. However, Spring 3.0 is going to move up to Java 5 and drop support for the older JVMs. This gives them the space to remove some older code, make other code fully utilize generics, etc. Like always, if you buy a support contract, SpringSource will certainly support you on an older JVM. But, they can’t hold the entire framework up forever, so they are following what the industry is using, any many have moved up to Java 5.
Likewise, Spring Python is following the Python industry, and Python 3.0 is a little too new. Don’t get me wrong. We’ll check it out. Perhaps it works out of the box for us, because we haven’t used too much yet. Still, there are lots of features we want to get implemented that are way more pragmatic and useful than supporting Python 3.0.
VN:F [1.8.4_1055]
Rating: 0.0/5 (0 votes cast)
VN:F [1.8.4_1055]
December 4, 2008
Filed under: spring extensions, springone — gregturn @ 3:14 pm
Day 4
===========================================
Alright! This was great. I had about 10 people show up for my presentation, and I feel like things went smoothly. I also got a kick out of helping Russ with his presentation on Spring Extensions. I also attended Mark Pollack’s two presentations about .NET, just so I could get a feel for other people presenting non-Java technology at a Java conference.
There were good questions during my presentation, and that makes me feel the people were really interested. I polled the group, and they all use java. I think about half indicated they were using python in one form or another.
Things have been great. This is one well run conference, for sure. But, alas, I am worn out from conference fatigue. I am about ready to collapse. Luckily, I’m not checking out until tomorrow.
VN:F [1.8.4_1055]
Rating: 0.0/5 (0 votes cast)
VN:F [1.8.4_1055]
Filed under: plugins, spring extensions, springone — gregturn @ 6:36 am
Day 3 – Writing a Spring Python plugin manager
===================================================
Yesterday, I visited three sessions: RESTful Web Applications with Spring 3.0, Terracotta, and The Dojo Toolkit. I admit that my mind was wandering during the web-based ones. That was because I wanted to work on my command-line, plug-in based tool. So I planted myself in the back of the room for the first and third presentation, plugged into some power, and worked on a plugin.
I managed to get a basic one completed called gen-cherrypy-app. Right now, you can only find it on one of my sandbox branches at https://src.springframework.org/svn/se-springpython-py/sandbox/gregturnquist/sespringpythonpy-83/src/plugins/. In that directory is a command line python tool called coily. If you need help, type:
./coily –help
Currently, it will load plugins found in the current directory. In this case, you can see two in subversion: gen-cherrypy-app as I mentioned before, and noop as a test plugin that takes no arguments. In the future, it would be useful to have official plugins living on SpringSource’s download site, perhaps split into officially supported ones, and others going through the Spring Extensions life cycle.
Back to coily. If you run:
./coily –install-plugin gen-cherrypy-app
…it creates a .springpython folder in your home directory, copies the entire directory of gen-cherrypy-app there, and then next time you run coily –help, it will list it as a viable command-line option.
What does this plugin do? The idea for this plugin was inspired by Graeme’s presentation on Grails where he built a twitter-like site in 40 minutes.
./coily –gen-cherrypy-app twitter
That will generate a directory called twitter, which contains a Spring Python-based CherrypPy skeleton app called twitter.py plus some support files. Several toolsets are proving the value of auto-skeleton apps: RoR, Grails, and Turbogears to name a few. Spring Python can use that too.
Spring Python hasn’t yet made it safe for the fairies, so I think users deserve all the help they can get wiring up spring python security.
But more than anything, this helps set the stage for other useful plugins that the community can identify as useful for adoption of Spring Python. I hope I have whetted your appetite. Now…time to get ready for a couple of presentations!
VN:F [1.8.4_1055]
Rating: 0.0/5 (0 votes cast)
VN:F [1.8.4_1055]
December 3, 2008
Filed under: grails, plugins, spring integration, spring security, springone — gregturn @ 6:38 am
I finally found some time to post updates. Whew! It has been busy!
Day 1
================================
On Monday, I hooked up with the SpringSource guys. It seems everyone had something to work on. I wanted to get 0.9.0 completed and working before giving my demo of PetClinic on Thursday. Just about anyone I spoke to was polishing up their slides. It is truly fantastic to be chatting with the guys at SpringSource.
Rod Johnson gave the keynote addresss, focusing on the target goal of SpringSource in reducing the complexity of application development. Complexity means more development, more risk, and in turn, more cost. SpringSource’s overarching goal of reducing complexity must be working, because he had several metrics showing how much has been adopted in some degree by the industry.
After the keynote, I was finally able to meet up with Keith Donald. We have been playing email tag for some time, and I was surprised to find out his office is probably 10 minutes away from mine. Hopefully we can get together soon after the conference. It was also great to meet Mark Pollack, Chris Beams, Ben Alex, and of course, Rod Johnson himself. While I enjoy reading their blog entries and source code, there is no substitute for meeting the real person.
Day 2
================================
In the morning, I attended the Grail presentation. That was awesome. Graeme demonstrated building a twitter-like site using Grails in 40 minutes. Okay, he promised 40 minutes, and took 45 minutes, but only because he started adding extra functionality not found at the actual twitter site. In the process, I was realizing the value Grails places on plugins. Grails is good at creating a skeleton application, and then letting you flesh it out. I was starting to get the idea that Spring Python could use a command line utility with plugins to generate a skeleton CherryPy app, Django app, or anything else developed by a plugin. Well, I went to the next session, “Intro to Spring Security 2.5″, opened my laptop, and started coding. I managed to write a static skeleton app, and then began working on a command-line utility to dynamically generate this. That is still in progress.
I admit I was only listening with one ear to Ben’s presentation. Sorry Ben! 1) I am already somewhat familiar with Spring Security, 2) most of it is geared towards web apps which I don’t write, and 3) I was really stoked at the idea of a command-line tool that download Spring Python plugins from a network location. I did catch his question, “who here is NOT writing web apps?” I was the only person in the room who raised a hand to that. When asked what I was using, I answered “Swing desktop apps.” That plugged Ben’s point that Spring Security uses the same tactics.
After lunch, I attend two sessions about Spring Integration. This is channel based messaging, which is sort of like JMS on steroids in my book. They interface with JMS, but also with other things like file-based systems, web services, RMI, anything. And it is easy to plug in your non-message based service to a chain of processing. This is wiring your app in a different, more decoupled way. I sure could have used this about five years ago.
Later that evening, Russ and I got together to work on his Spring Extensions presentation. Russ is planning to talk about the process Spring has set up to better manage new code, and wanted to compare the process with real life, and Spring Python is his choice target. If you are at SpringOne and can read this before Thursday, I highly suggest you attend that presentation. It will definitely be entertaining (shameless plug).
VN:F [1.8.4_1055]
Rating: 0.0/5 (0 votes cast)
VN:F [1.8.4_1055]
Next Page »