Entries For: 2007
- October (3)
- September (1)
- April (1)
- March (1)
2007-10-27
kss.base first alpha released
We are happy to inform you that we have released the first alpha of kss.base. This new library will be the base library for all pythonic web frameworks that choose to support KSS.
The predecessor of kss.base is the kss.core package, which depends heavily on the Zope 3 component architecture. Our new library only depends on Python and setuptools. This will widen our support for integration with other frameworks. We have already seen some fruits of the new approach in experimental support for both Pylons and Django.
kss.base is alpha, and at the moment not compatible with Zope or Plone. For those platforms, kss.core is still needed, as previously. Later, we will improve kss.base to also support Zope and Plone: we will introduce the kss.zope package. kss.base and kss.zope together will replace kss.core, which will be phased out in the end (with keeping complete backwards compatibility).
We suggest to test kss.base to anyone interested in KSS integration on Pylons, Django, or any other pythonic platform.
2007-10-20
plone.app.kss sprint in Naples: one step further
We were sprinting on applying KSS in Plone after the Naples conference. During this sprint we made a lot of progress which will further establish the KSS project.
One main focus was making it easier for people to write KSS plugins. We arrived with the new kss.templates component that eases the creation of custom plugins. Thanks to Godefroid Chapelle we also have FireKiss that will bring a revolution to debugging KSS.
During the sprint we also started to use new technologies such as bazaar for version management and we also created the kissbooth project area on Launchpad. Launchpad offers repository storage for bazaar branches and a web interface for project management.
Sprinters were working on various topics:
- Jan Murre was working on enabling drag-and-drop in Plone, together with Jeroen Vloothuis and Balazs Ree. We failed to finish this: after realizing that more Javascript work is needed than the time available for us, we turned our focus to other subjects.
- Jan Murre started to integrate jQuery effects with KSS. He also made a working demo of it in Plone.
- Massimo Azzolini was working on code to KSS that will enable the correct handling of browser history through AJAX operations.
- Daniel Greenfeld and Carsten Rebbien were creating a new KSS tutorial that is based solely on Zope3 technologies on the contrary of the existing ones that present using KSS TTW (through the web).
-
Jean-Paul Ladage and the XM team were working on the KSS application part of the eXtremeManagement tool and plonehrm.
We also made a big step forward with our platform support. Before the sprint we had KSS integration for the following platforms:
-
Zope 2 & 3
- Grok (Godefroid Chapelle)
- and the pythonic platform Pylons (Jeroen Vloothuis)
and by the end of the sprint we were proud to present that
- Manuel Saelices has integrated KSS with Django!
There was also experimental work going on with a large potential impact on the future of KSS:
-
Georg Gogo. Bernhard continued the work he started on the last SnowSprint on the eventPush project. His demonstration spoke for itself: we have seen a proof-of-concept application pushing KSS commands from the server to the client (as opposed to the traditional poll-style AJAX).
2007-10-15
New website skin for kssproject.org
We now have a new theme for KSS project website. This finally gives KSS a specific style.
The design started with a new logo designed by Thijs Jonkman.
After this was approved, Linda Verhagen designed a draft theme for the website.
Jola Hyjek helped to choose the main color of the site.
At Plone Conf 2007, Jarno de Wit and Thijs pulled together to finish the theme.
Balazs Ree and Jeroen Vloothuis have put it in production.
We want to thank everyone who helped, especially all the nice people at Pareto for having worked for the project.
2007-09-03
Louvain-la-Neuve sprint
There was a KSS sprint in Louvain-la-Neuve. Developers produced speed improvements, new syntax for KSS style sheets and refactorings for easier development with both client-side Javascript and server-side Python code.
The focus of the sprint was threefold :
- Changes of KSS stylesheets syntax,
- Refactorings in client-side engine,
- Refactorings of server-side support in Python.
Four developers joined me to work on KSS project :
- Balazs Ree (from Greenfinity - Hungary),
- Jeroen Vloothuis (from Pareto - Netherlands),
- Jean-François Roche (from Pyxel - Belgium),
- Laurent Lasudry (from Netitbe - Belgium).
Let's get a bit more into the details of the work done during the sprint.
Changes of KSS style sheets syntax
We discussed and agreed on the following changes for the KSS syntax.
1) Declarations like the following were previously forbidden :
input.blurrable:blur, select.blurrable:blur {
action-server: kssValidateField;
kssValidateField-fieldname: kssAttr('atfieldname', true);
kssValidateField-value: currentFormVar();
kssValidateField-uid: kssAttr('atuid', true);
}
Multiple CSS selectors are now allowed, both when events that should be bound are similar like above or different like below.
form.inlineForm input[name=kss-cancel]:click,2) Value providers are now recursive. In other words, parameters of value providers can now be other value providers.
form.inlineForm input.blurrable:keypress(inlineescape) {
evt-keypress-keycodes: '27'
evt-click-preventdefault: true;
action-server: replaceWithView;
replaceWithView-fieldname: kssAttr('atfieldname', true);
replaceWithView-macro: kssAttr('macro', true);
replaceWithView-templateId: kssAttr('templateId', true);
replaceWithView-uid: kssAttr('atuid', true);
replaceWithView-edit: true;
}
... {3) Value providers will be allowed in event binder ids. In other words, value providers will also be used for the selectors.
...
saveField-value: currentForm(kssAttr('variableName', true));
...
}
form.inlineForm input.blurrable:keypress(kssAttr('binderId', true)) {4) kssParameters (action parameters which have a name starting with 'kss') will be allowed in the action name declaration. They will be space separated. In other words,
...
}
... {will be equivalent and will coexist with
...
action-server: replaceWithView url(http://host/object/replaceWithView);
...
}
... {that works currently.
...
action-server: replaceWithView;
replaceWithView-kssUrl: url(http://host/object/replaceWithView);
...
}
Changes 1) and 2) have been developed during the sprint and are NOW in the trunk and tested.
Change 3) is available in a branch developed before the sprint by Balazs : it will be merged as soon as possible.
Change 4) will be developed later.
We are very happy that Jean-François and Laurent could join Balazs and myself in developing those features : they have made their first steps in the knowledge of the Javascript code of the KSS engine. This implies that the number of developers able of supporting the engine is growing !
Refactorings in client-side engine
1) KSS is now 4 to 5 times quicker !
This is the result of integrating base2 (new library from Dean Edwards of cssQuery fame). Selection of nodes with base2 is much quicker than cssQuery because a native XPath engine is used when available in the browser instead of only slow Javascript code.
The work was started in May by Balazs and Jeroen during a week-end in Rotterdam. Balazs and Alec Mitchell spent another few days in June to benchmark and test the integration. Finally, Balazs and Jeroen made the last needed refactorings during the sprint.
2) Exception infrastructure does not swallow anymore the place where exceptions have been throwed.
Thanks to Jeroen and Balazs that did the refactoring, debugging of exceptions will be easier.
3) The KSS parser code has been refactored.
This allow for better readability and thus better extensibility or maintenability. (We need ...abilities.)
4) The Javascript unit tests page in kss.demo has also been improved. The parser code unit tests still run in IE, Firefox, Safari, Opera and Konqueror.
Thanks to Jean-François and Laurent that did 3) and 4) with me.
Refactorings in server-side Python code
1) kss.base allow us to distribute Javascript plugins as Python eggs !
Jeroen had written Python code for server-side integration of KSS : he presented his integration of KSS in Pylons at EuroPython in July 2007.
During the sprint, Jeroen refactored his code into the new kss.base module. It will serve as the base implementation for server-side integration of KSS in Python frameworks. One of the features of kss.base is the registration of KSS Javascript plugins by extracting metadata from Python eggs.
kss.pylons has already been refactored to use kss.base. In the future, we will build also build kss.zope above kss.base; it will replace kss.core that is now distributed in Plone 3.0.
2) Distribution of Javascript engine is now a step further !
As Laurent had worked with Jeroen on kss.base, he could also use it to develop kssconcatjs command-line utility. This will allow to easily produce the various flavours of KSS engine in a single Javascript file : development or production, with or without concatenated plugins.
Developers from frameworks built on Java or PHP will integrate the whole engine by integrating a single Javascript file.
All in all, a lot of work was achieved. Long life KSS !
--
Godefroid Chapelle
2007-04-04
Report from the Sorrento sprint
We spent a nice week in the beautiful region of Sorrento, Italy. For KSS, the sprint was a great success, even more than we had anticipated.
We arrived with a lot of to-do tasks and open bugs to the location. Since we recently realized that we are fixing the same bugs over and over again, the motto of this sprint was "tests, tests, tests". This means that we extend the selenium tests to cover the entire Plone application part of KSS and soon we will be able to run these tests in an automated manner with our kissbot.
We introduced KSS to a lot of developers, most of whom encountered the technology for the first time. After a one day tutorial, they were immediately able to start fixing issues and developing new functionality themselves. In addition, this time we also required that for each fix the corresponding tests must be written as well.
Writing selenium tests was a lot of fun and sometimes we encountered difficulties. It seems that we will soon need to make our life easier and improve this process. But we do not even stop here. We will make the creation of selenium tests as mandatory developer policy, accompanied with tests on different levels:
- functional doctests to test if a given html class or id, that is needed to activate kss, is present in a template,
- unittests that simulate the client's call to a kss server action, and check the command response that would be marshalled to the client.
A lot of issues were fixed or had a good progress, including the following ones:
- Enter and Escape works correctly for in-line editing, including Safari! (Simone Deponti, congratulations.)
- The zope3 event handling to refresh screen regions if content is edited, is fixed to work with the portlets engine again. (Rosario Di Somma, Simone Deponti)
- Fixed issues with the links in the body view of content. For this a new option created that can be used to prevent the bubbling of events. (Fabrizio Reale, Davide Moro)
- Fixed issues with the content menus to change the review state and the default display view (Massimo Azzolini, Rosario Di Somma). This involved improving the refresh of the content menu. (Jean-François Roche)
- Improved our test infrastructure which now use layers correctly (Daniel Nouri)
- Made the first functional doctest to check html ids and classes (Fabrizio Reale, Daniel Nouri)
- Kss-ify Contentrules; this involved using macros from a Zope 3 view (David Convent, Daniel Nouri)
- Kss-ify locking support (Jean-François Roche)
- Refreshing screen regions with viewlets (Jean-François Roche)
In addition, many more developers helped checking bugfixes and writing more tests. We also had a bugday fully dedicated to Internet Explorer, and we also discovered a code clash with kupu concerning the usage of the sarissa javascript library. This is yet to be solved later.
I believe this sprint was a milestone for this year and its success comparable with last year's BubbleNet sprint. I would like to thank to everyone for the great work we could achieve together for KSS and Plone.
2007-03-02
Report from Snowsprint 2007 and the Baarn UI sprint
Work done on KSS framework during Plone community coding sprints.
We have worked on the following areas during Snowsprint 2007:
- Godefroid was improving the testing framework, and built the kissbot with help of Andreas Zeidler and Thierry Benita. It is based on buildbot and buildout components. We can now test automatically our Selenium functional tests on a farm of servers.
- Balazs and Godefroid made some refactoring on the framework in order to support the drag-and-drop plugin better. The drag-and-drop plugin is still under development.
- Jean-Nicolas Bes and Balazs worked on eventPush with the help of Thierry Benita. This is an experiment based on Twisted and with technology borrowed from the "Comet" library. We tried to enable the server to send asynchronous commands to the clients. With this, we want to demonstrate, for example, that changing the title in one client would simultaneously change the title in all clients viewing the same page. The goal of this experiment was to show a proof of concept and proceed with the exploration of this area. This is NOT targetted for Plone 3.0 or any close release.
- After the sprint, Phillipp von Weitershausen refactored the server side event handling, fixed the pending issues and reported that he successfully used KSS with Grok, on Zope 3.
During the Plone 3.0 Baarn UI sprint, some progress was done in the following fields:
- Refactoring done to get rid of the "executeCommand" workaround. We can now use a selector with any client action to express on which nodes the action will be executed.
- Several bugs were fixed in Plone 3.0 integration, including kupu related ones and the issues about the "Do you want to leave this page ?" query. Most issues were caused by other components that had changed and unwillingly broke KSS. The importance of testing is proven again.
- More progress was done on the testing infrastructure. The demo tests are now exercised on Firefox-Linux and IE-Windows platforms. Jeroen Vloothuis worked on a script that generates Python modules (that run the Selenium test cases) from the Selenium HTML recorded with Selenium-IDE.
We would like to thank everyone for providing great work for Plone and KSS, and hope more will join in the future too.
We would like to mention that KSS has a FreeNode IRC channel (#kss).
There is a new mailing list on codeSpeak.net : kss-devel. It is dedicated to KSS development issues and generic use cases. There is also a mailing list that monitors the KSS subversion repository : kukit-checkins. Both lists have been subscribed to gmane.org : news:gmane.comp.web.kss.devel and news:gmane.comp.web.kss.scm .