Repository came back to life!
A repository received new code changes after 6 months of inactivity.
In commit 9dad9031 by garbas (Using name ‘Rok Garbas’) on 2012-05-11 (12 days ago)
Plone is a ready-to-run content management system that is built on Python and the Zope application server. Plone is easy, flexible, and gives you a system for web content that is ideal for projects, communities, websites and intranets.
This project is managed by Alexander Limi, Hanno Schlichting, Eric Steele, and robgietema.
A repository received new code changes after 2 months of inactivity.
In commit f7110cc9 by Kai Lautaportti on 2012-05-11 (12 days ago)
A repository received new code changes after 4 months of inactivity.
In commit 3e83c8e7 by David Glick on 2012-05-10 (13 days ago)
A repository received new code changes after 3 months of inactivity.
In commit 5aa4b11b by alan runyan on 2012-05-07 (16 days ago)
A repository received new code changes after 5 months of inactivity.
In commit a9c51685 by Johannes Raggam on 2012-04-30 (23 days ago)
Posted about 17 hours ago
Please don't get me wrong, I hate Microsoft and Windows as much as the
next OSS or Python web developer. I just feel it's important to be
honest with ourselves about why they're bad. I grow a little tired
of all the griping sessions
... [More]
whenever the sorry state of Plone's Windows installer support is discussed. I think
there's plenty to gripe about and there's plenty that Microsoft does
poorly but lets also be honest with ourselves. If Microsoft didn't do
some things really well they wouldn't be a problem for us and we
wouldn't even be discussing whether to support them as a platform.
At any rate, the discussions about the Windows installer at the 2012
Cioppino Sprint were as
frustrating and disappointing as ever. When everyone was through
griping, however, I couldn't find anyone who at the end of that
discussion thought we could afford strategically to drop the Windows
installer or leave it to a 3rd party.
I've started putting Microsoft's Web Platform Installer, Web Matrix, and IIS Express together for Plone 4.2 and Python 2.7
and have a proof-of-concept working on my Windows VM that actually
gives us Open Source all the way up to IIS, see the screenshot above.
Plone is actually really snappy running this way even on my very slow
Windows VM.
Below I document what I've learned as I proceeded and my final
findings. If you read nothing else please read the Help Needed!
section and let me know if you or anyone else can help me get this to
a place where others can try it out. I'll be sprinting on this at the
post-PSE sprints so anyone
who has IIS or Windows installer experience, I'd love to sprint with
you on this.
Contents
Help Needed!
Supporting Windows
Notes and Findings
Hosting
Packaging
Installing
Miscellaneous Links and References
Help Needed!
Primarily, I need help with things that I can't do with just Web
Deploy and WebPI. For example, the way IIS does FastCGI means that a
configuration change has to be made to the global IIS config for
each FastCGI app. IOW, it can't be done in the app/deployment-local
web.config file. I know the shell command to run to make the
change, but I don't know how to package that properly so that it runs
with escalated privileges when necessary.
Similarly, we need to figure out how to handle ZEO in the way that is
closest to "correct" for IIS. Should we just install an autostart
service? IIS have a database provisioning and control framework. Can
that be adapted to also manage ZODB databases and control running ZEO
processes? Or should we just wrap it up in such a way that ZEO is
started the first, and only the first time, IIS launches the IIS
process and shuts it down when stopping the app? If so, how?
Since we're using WSGI via FastCGI using Flup, we're dependent on
Zope's WSGI server. Unfortunately it lacks the publication hooks used
by things like plone.app.theming and
plone.app.caching.
This is really a bug in the Zope2 WSGI publisher and as such affects
all WSGI deployments, not just Windows. @Hanno and @davisagli
think they'll be able to get to this on in the next few days.
Finally, if I'm wrong about any of the technical stuff in here, I'd love
to hear about it. The documentation is crap for all this stuff and it
has been way too hard to figure it all out, so I'd love any leg up I
can get.
Supporting Windows
One thing that came out of the discussion, that I thought was
interesting, was the sentiment that if we were going to support
Windows we shouldn't do it while telling Windows users to take a leap
at the same time. IOW, we say we support windows out of one side of
our mouths, and blame users for choosing windows out the other side of
our mouths when they encounter fundamental problems or find them
selves encountering an unfamiliar learning curve. I see two things
behind such problems: lack of integration with typical Windows tool
chains, and differences in the documentation.
The differences in the documentation largely come from the fact that
the current windows installer isn't based off the unified installer so the
buildout/package layout is different than what's in most of our docs.
To that end, I started looking into what it would take to build a
Windows installer from the unified installer.
The lack of integration with typical Windows tool chains is a much
bigger issue and much of that issue is a problem for most Python web
applications, not just Plone. My research did, however, turn up some
very promising new tools from Microsoft that we may be able to use to
provide a better experience for Windows Plone developers and Windows
Plone deployments.
There are also two major audiences that tend to make use of Plone's
Windows support: developers and deployments. Steve McMahon believes that most of the Windows
downloads are by developers looking to get started doing Plone
integrations or custom Plone development. Another target the
installer has been used for, and this is more of what I've seen in my
experience as a developer, is as a basis for production Plone
deployments running on Windows servers. I definitely trust Steve's
sense more than my own, but the good news is that this new Windows
tool chain seeks to provide a nicely integrated experience from web
app development through to web app deployment.
So for the latter half of the sprint and ever since then, I've been
obsessed with the Web Platform Installer (WebPI or WPI), IISExpress,
and Web Matrix tool chain. The WebPI is actually a fairly open
framework
for describing web frameworks and web apps including dependencies and
arbitrary installation commands in an extended atom feed. Helicon
uses this to provide a Django install story nicely integrated with this Windows
tool chain. Using IISExpress and Web Matrix also allows developers
to work in a local environment isolated to their user directory
without needing to have the full IIS ($$$) installed.
Notes and Findings
Below is a loosely organized grab-bag of notes and findings I recorded
while working on this. I publish it here only for reference.
Hosting
ISAPI-WSGI doesn't support IISExpress
The ISAPI-WSGI OSS project is used by a number of Python WSGI
projects to
support IIS. ISAPI-WSGI depends on py2win32 which in turn depends
on IIS 6 or
the IIS 7 plugin providing IIS 6 compatibility. The IIS 6
compatibility plugin isn't supported on IISExpress.
IIS only supports FastCGI
This is how the WebPI and Web Matrix tool chain support PHP apps
or other apps, such as plone, that need to have long running
separate processes to run efficiently. This FCGI support is
also restricted to using Windows named pipes. IOW, no TCP sockets
to a separately running FCGI server process.
No current FCGI to WSGI gateway works with Windows
The FastCGI spec calls for
the STDIN_FILENO to refer to a socket which is then used for
two-way communication between the server and the process handling
requests. Naturally, Microsoft has embraced and extended this
standard in IIS such that instead of a single socket it uses two
Windows Named Pipes one each for receiving and sending. IIS may
also support TCP sockets behind the scenes. This means that
anything that expects to use normal sockets for FCGI, like flup won't work with IIS. I can find no
other OSS FCGI to WSGI gateway that supports Windows named pipes.
IIRF doesn't support IISExpress
We might be able to use Ionic's Isapi Rewrite Filter to
proxy IIS requests through to a separately running Python process.
This is less then ideal since it may make the Web Matrix
experience less integrated and requiring more un-Windows-like
knowledge. IIRF doesn't support IISExpress, at any rate, though
it may be possible to manually install it into IISExpress.
Helicon Zoo Module
I suppose the lack of other working options is exactly why Helicon
Tech built it's own solution for this. I prefer to have OSS all the
way up to IIS itself, but that's difficult when you play in the
Microsoft sandbox. At least it looks like Helicon has paid some
attention to performance.
Furthermore, having company support may yield better long term
maintenance for IIS support than an OSS project in the Microsoft
universe. That still doesn't mean I like it.
Part of the Helicon Zoo Module is a zoofcgi.py script which is
their own FCGI-WSGI gateway that seems to use STDIN_FILENO
instead of sockets to do the FCGI communication. IOW, Helicon has
written a totally new FCGI-WSGI gateway that works with IIS's broken
FCGI implementation. In their implementation I see a lot that looks
familiar from flup.
Modifying zoofcgi.py to run Plone
Unfortunately, Helicon's zoofcgi.py only supports a Django WSGI
app or a example wsgi app, with no way that I saw to use it to run
an arbitrary WSGI app. Replace the run_example_app() function
with the following to enable loading of an arbitrary WSGI app
from a Paste
*.ini file:
from paste.script.util.logging_config import fileConfig
from paste.deploy import loadapp
def run_example_app():
config = os.environ.get('WSGI_CONFIG_FILE')
if config:
config = os.path.abspath( config )
fileConfig(config)
application = loadapp('config:%s'%(config,))
else:
application = example_application
if __debug__: logging.info('run_fcgi: STARTED')
FCGIServer(application).run()
if __debug__: logging.info('run_fcgi: EXITED')
In ~My DocumentsIISExpressconfigapplicationhost.config change
<engine name="python.2.7.pipe"... to:
<engine name="python.2.7.pipe"
fullPath="%SystemDrive%\Plone42\zeocluster\bin\zopeskelpy.exe"
arguments="%SystemDrive%\ZooExpress\Workers\python\zoofcgi.py"
transport="NamedPipe"
protocol="fastcgi" />
web.config in the site root:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<heliconZoo>
<application name="wsgi.project" >
<environmentVariables>
<add name="WSGI_CONFIG_FILE" value="%APPL_PHYSICAL_PATH%\wsgi.ini" />
</environmentVariables>
</application>
</heliconZoo>
<handlers>
<add name="wsgi.project"
scriptProcessor="python.2.7.pipe"
path="*"
verb="*"
modules="HeliconZoo_x86" />
</handlers>
</system.webServer>
</configuration>
It should be possible to re-use zoofcgi.py without modifying it by
making it importable, IOW putting it's dir on sys.path. Ideally,
I'd like to see instead is a library that can wrap the named pipes
provided by IIS such that they emulate a normal socket.
iisfcgi and filesocket
I implemented a crude socket-like implementation called filesocket
that wraps two open files and acts like a socket. Then I copied and
pasted all the bits from flup that
depend too rigidly on actual socket or on things not available in
windows and adapted them as needed.
Finally, I wrapped all that up with the necessary paste.deploy bits so that IIS can launch Plone
as a WSGI app, after adding bits from the WSGI buildout to the
unified installer, from a Paste ini file, using the paster config
without a server
since we're interfacing directly with IIS. Finally, add the
following to configuration/system.webServer/fastCgi in ~\My
Documents\IISExpress\config\applicationhost.config:
<application fullPath="C:\Python27\python.exe"
arguments="-u C:\Plone42\zeocluster\bin\iisfcgi-script.py -c C:\Plone42\zeocluster\production.ini"
monitorChangesTo="C:\Plone42\zeocluster\production.ini"
maxInstances="1">
</application>
This is one of the things I need help with. This can be done using
the IIS appcmd.exe
program but I need to know how to do this during the Web PI install
process.
It works and now we have Open Source all the way up to IIS!
Zope namespace URLs
Zope has a lot of special URL structures like ++resource++foo.css
but IIS chokes on these. Add
the following to
web.config:
<system.webServer>
<security>
<requestFiltering
allowDoubleEscaping="true">
</requestFiltering>
</security>
...
WebMatrix not launching instance until it's been run in the foreground
I'm noticing that the Plone instance keeps restarting. Before I
fixed the pluses in URL issue, it at least eventually got running
stably after several restarts, but now it's restarting much more
frequently. I thought it was caused by putting the resource
registries in development mode because it means more requests and
the number of requests that IIS lets build up before restarting the
FCGI process is reached. When Plone is warming up, almost all of
these request pile up. But I've also seen it be perfectly stable
with the resource registries development mode on so I'll need to
catch this in the act again to debug.
Since then, I think the problem is that for some reason it needs to
be started in foreground mode before WebMatrix/IISExpress can
successfully start it.
How to restart in debug-mode? Logging?
What is the best way to make debugging information accessible to the
MS toolchain? What's the best way give WebMatrix developers and IIS
admins to restart the instance in foreground-mode and/or debug-mode?
What about giving them more integrated access to the logs? Should
the default buildout configuration of the unified installer for
Windows use event log handlers?
Currently, the error reporting out of WebMatrix/IISExpress when
launching the instance or anything else fails is miserable. Is
there something we can do to better integrate with it's trace logs
such that more Zope/Plone/Console/*NIXy specific output is reflected
somewhere?
System Message: WARNING/2 (<string>, line 339); backlink
Inline emphasis start-string without end-string.
Packaging
Creating a Web Deploy Package
Microsoft provides some docs
for creating Web Deploy packages. It may also be possible to use
the msdeploy
tool to make a package in a more automated way.
Bootstrapping the Unified Installer
The first time building the Web Deploy package based on the Unified
Installer, some things need to be installed and configured that can't
really be automated. Some of these steps shouldn't be necessary in
the long run, since it should be possible to use the existing Web PI
feed to install the dependencies now that the feed is working. Much
of this should also be added to the Unified Installer in some sort of
platform specific way. But if the Web PI feed ever needs to be
created anew, or maybe when switching Python versions, it may be
necessary to do the same things I had to do on my Windows VM to begin
creating the Web PI feed and Plone Web Deploy package. I'm
documenting all that in a README in the Unified Installer.
Non-buildout root Web Deploy Package?
For my proof-of-concept, I manually created a web.config file in
the zeocluster folder of the buildout created by the Unified
Installer and then manually added that as a "site" in WebMatrix.
Eventually, we need to figure out how to make the Unified Installer
buildout root also be the root of the site for
WebMatrix/IISExpress/IIS or how to have a web deploy package where
the root of the installed site is a subdirectory of the web deploy
package.
Installing
Writing the Web Platform Installer Atom Feed
Microsoft provides a reference
to what elements and attributes it adds to the ATOM namespace.
bdist_wininst Python Installers aren't silent
Windows MSI installers seem to support a /verysilent flag.
Unfortunatley, the Python distutils support for building Windows
installers has no silent option.
A workaround
may be to use Web PI's support for arbitrary installer commands to
extract the installer without running it. It may also work to
convert the wininst packages into MSI packages.
Get the SHA1 Hash of the Web Deploy Package
Microsoft provides a tool for generating this hash. I'm not sure
if using this tool is strictly necessary or if there may be a way
to get the msdeploy tool to do this as a part of a more
automated packaging process.
Web App Gallery
Microsoft actually has a web application gallery
that they say applications can submit
their application to. If approved, these applications would be
available in Web PI without requiring the user to enter a custom
feed.
Miscellaneous Links and References
Paster/INI flup FCGI-WSGI config
launching CGI/FCGI processes
IIS Configuration Reference
So called IISExpress docs [Less]
Posted about 19 hours ago by nore...@blogger.com (Izhar Firdaus)
Fedora User Developer Conference (FUDCon) Kuala Lumpur 2012 - which I was the event owner - ended successfully on Sunday, 20th May 2012. With only around 3 months of planning (1 month for the bid, and 8 weeks for the organizing process), FUDCon Kuala
... [More]
Lumpur might have been one of the shortest FUDCon planning ever, if not the shortest!!.
With roughly a total of 34 crew and volunteers, we managed to pull it off successfully. To some of the crews, our experience pulling off a crazy stunt of organizing FOSS.My 2008 in 30 days might have helped us in getting prepared for the worst.
We were hit by the Murphy's Law several times before and during the conference, and one of it was Harish unfortunate tennis calf injury made him unable to come to FUDCon KL. This created a challenge for us in the monetary stuff related to on-site payments, but thanks to Harish's swift action sending us some cash through Western Union , we managed to cover a number of them.
Pre-conference
With only 8 weeks to the event after winning the FUDCon APAC bid, the team scrambled to start shooting down tasks for the event. As usual for Fedora Malaysia events, we simply pick UCTI as our venue, primarily because there is Gurdip who will almost always get us what we need from the college.
We also hacked together a conference management system on Plone in less than a day worth of effective hours for the event site. Code is available here: https://github.com/inigoconsulting/collective.conference. The system served its purpose ok, though during the conference we discovered that certain things can still be done better, namely in session organizing and listing. For example, the agenda should display who is the speaker of a session and the listing of attendees need to be filterable easily.
The funding request approval was one of the tough stages during the organizing process. We wanted to bring as many contributors as possible to FUDCon Kuala Lumpur, however, we also need to keep it within our budget limit. Deciding on the seection fairly was tough and for those who did not manage to get the funding, please no hard feelings, we hope you do try again.
We also created several artworks for swags and banners for the FUDCon. We produced 170 T-shirts, 1000 Fedora 1.5" buttons (500 for the event, 500 for distributing across APAC), 10 banners (2 roll up generic fedora/fedora-my, 6 x-stand generic, 1 x-stand FUDCon-specific, 1 big gate banner), and 350 FUDCon stickers. We chose to focus on creating generic swags so that we can reuse in the future, especially the banners.
Nearing the event, OSCC-MAMPU contacted us for a meeting, and from the meeting, they offered 2 Samsung Galaxy Tabs for lucky draw , in exchange for us getting attendees to fill in a survey form regarding to FOSS. We however, could not announce this early as we only get the final confirmation on the tablets on Saturday, 19th May.
Murphy's law does not leave us alone however. A few days before the event, around the final 2 weeks, we received some sad news from Heherson, David Ramsey and Harish that they could not make it to the event. The news about the absence of Harish created a challenge for us related to monetary stuff as we need petty cash for a number of stuff during preparation, and the FUDCon days. As a temporary measure, I put aside my own money, and cut off some items from our things-to-buy list and try to get some items - like lunch and tea - to be paid later. Harish also sent some cash to us on Saturday. Fortunately, it kindof works out.
Day 0 : Thursday, May 17 2012
Ankur (ankursinha), Praveen (kumarpraveen), Aditya (adimania), Kushal (kushal) and Soumya (soumyac) arrived early on this morning and I was in charge of picking them up. Ankur, Praveen and Aditya arrived roughly on time on 12:30am, however, Kushal and Soumya's arrival were delayed for almost 3 hours, and we only manage to leave the airport around 3:30am.
We arrived at the hotel around 5am and after check-in, I left the hotel to home to switch the van which I was driving, to my car, and return back to the hotel. Managed to get a short nap. Afterwards, I took the group to the LRT station for a short tour around KL. We dropped by Low Yat plaza and grabbed some simcards for the group. After briefing the group how to take the train lines and places which they might want to visit, at noon, I left them on their own and head to UCTI for the preparation for FUDCon KL.
When I arrived at UCTI, I was surprised to notice that Tuan (tuanta) was already there. After giving instructions to the volunteers on the tasks that need to be done, I drove tuanta to the hotel to check-in his room. At the hotel lobby, we met with Christoph (cwickert) who apparently already arrived and was hanging out at the lobby. After tuanta left his belongings in his room, we head back to the venue, this time, with cwickert.
Preparation ended at around 10:00pm as the venue was closing. There were however, some more tasks left , which some of the team then later continued them at the crew hotel room.
Mahay (mak), Buddhike (bckurera), Danishka (snavin), Kalpa (callkalpa) and Uditha (udinnet) arrived some time on this day too, and they checked into their rooms themselves.
Day 1: Friday, May 17 2012
Caius (kaio) and Ratnadeep (rtnpro) arrived early this morning around 1am, and they were picked up by Meng (seatux86) from the airport.
The crew started our day very early at around 6:00am and head to the venue at 7:00am. Registration desk finished setup at around 8:20am but we already had a few people coming at around 8:00am. At around 9:00am, the rate of people coming started increasing.
The opening keynote started on time on 10:00am. Harish was supposed to give the opening keynote, however, as he could not make it, we had cwickert to do it. Cwickert gave a talk on "Leadership in Leaderless Organization" which, in my opinion, fits very well to what we will be having right after the keynote, a Fedora BarCamp!.
After the keynote, I gave the attendees a short briefing on what is a BarCamp and how the BarCamp voting process will flow. We then had quite a number (15++?) of talks submitted, that we shortened our 1 hour slots to 30 minutes. Plenty of the topics were really interesting, which made me somewhat regretted setting Day 2 and Day 3 to fixed schedule. I never been in a BarCamp which had more than 20 geeks who are able to give talks before, and was not expecting such interesting outcomes. If we had made all 3 days a BarCamp, we might be able to go into deeper stuff, depending on what the audience interested in.
After the day ended we head back to the hotel. I then went out to a Western Union agent to cash out some money Harish sent to us for petty cash for the event. At around 10pm, the APAC Ambassadors met up in the crew hotel room to discuss future activities for APAC. We had a very interesting discussion and sharing session which lasted until 1am. If I remember correctly Yogi (jurank_dankkal) was typing down the notes from the meeting, not exactly sure whether it has been uploaded somewhere or not.
Day 2 : Saturday, May 17, 2012
Like yesterday, the crew started our day at around 6am and head to the venue on 7am. Registration desk open at 8:30am, and at around 9am we had a bus full of students from the German Malaysian Institute registering and attending the event.
The day started without any incident with Joshua Wulf (jwulf) giving the opening keynote for Day 2 where he introduced his project - a crowdsourced Fedora book. The day then continues according to schedule.
After lunch we had a little hiccup as there were some confusion about some sessions that was actually meant to be a discussion session, but was submitted as a talk. We simply cancel out the session and proceed the day as scheduled.
After the final session, we then did a lightning talk session. Afterwards, there were a lucky draw for a Red Hat keyboard which was sent by Harish through Alan Ho earlier in the day before. Swee Meng (sweester), one of our local FOSS community geek, won the keyboard.
Afterwards, we then head to the hotel. FUDPub / FUDCon Dinner then starts at 8pm in a function room at the hotel. Cwickert brought his Beefy Miracle costume and surprised us in the middle of the FUDPub!. After everyone finished enjoying the food there, we took out the cakes for an early celebration for Fedora 17 and also for FUDCon KL. When cwickert was cutting the cake, I noticed kushal whispering something to cwickert. I was then caked by kushal!!. I should have remembered what he did during FUDCon Pune to Rahul (rahulsundaram) !!. That inevitably initiated a cake war where everybody cake each other!!.
Dinner ends at around 10pm, and we all head back to our rooms and houses, full with food, and exhausted running around from being caked.
Day 3 : Sunday, May 18, 2012
Final day of FUDCon Kuala Lumpur. Unlike the days earlier, the crew started the day late today, at around 7:00am and only head to the venue at 8:00am. Attendee count on this day was also lower than the attendee count on the earlier days.
The day started slow, where people only started to come in at around 10am. Due to the low attendee count, and a very slow day, at lunchtime, we decided to scrap whatever that have been planned, and run a BarCamp instead. All sessions which were submitted was put up for voting again, shortened, and we reorganized the schedule. This turned to be a good decision as it injected back some life into the event.
At the end of the day, Abu Mansur, a well respected local FOSS community person, which also an employee of Red Hat Malaysia, gave the closing keynote. Right after the keynote, I took some time to thank everyone who have been contributing to the event and have made FUDCon Kuala Lumpur a success. Following that, we then draw 2 more lucky draw for 2 Galaxy Tabs which was sponsored by OSCC-MAMPU and the day ended with a final group photo in front of UCTI.
Post conference
Some of the Fedora contributors left early (jwulf on Saturday afternoon, kaio on Sunday morning). While the rest left after the event with cwickert is one of the earliest which is right after the group photo session, followed by Mahay around 1.5 hours later.
Those who yet to leave, met up for a dinner at a nearby Old Town kopitiam. When we were having our dinner, we was contacted with an emergency call from Mahay that he had took the wrong train and is in danger of missing his flight. Fortunately, he managed to reach the airport barely in time before the boarding closes.
After dinner, I asked Fedora Ambassadors who still around to come to the crew room to pick up one generic Fedora x-stand banner and some swags for their place and future events.
At around 2am, kushal, bckurera, snavin, udinnet, soumya, tuanta and callkalpa then checks out and left the hotel on a van to the airport as their flights are on 6am~7am.
rtnpro was the only one left out of the sponsored attendee list as his flight was on Tuesday. All rooms were checked out on Monday morning, so rtnpro had to stay at Yee Myat (MavJS)'s place for a night.
After checking out all of the rooms on Monday, I then went around to drop swags at OSCC-MAMPU thanking them for the sponsorship of the Galaxy Tabs, and also met up with Siva of Red Hat Singapore which Harish sent over to settle some payment issues we had with the hotel. Passed some swags to him and a t-shirt for Harish.
There are still some post-conference work left for me for FUDCon KL, primarily sorting out the receipts, some final invoices which still need to be paid, and claim back the money me and Eric used for FUDCon due to Harish could not attend. Hopefully all these will be done by end of this week or early next week.
Remarks/Notes
Things we learned, discovered, and some advises/suggestions for future FUDCon - or even for other events.
A free-to-participate event is much much much easier to run and less stressful than a paid event. Primarily due to the lack of overhead related to registration and less obligation related to swags and food - removing a lot of headaches and stress we once had during FOSS.My 2008/2009.In an event where there are plenty of attendees who are willing to talk or run sessions, a BarCamp format rocks. I kindof regretted not running the whole conference using a BarCamp format considering we had almost 20 Fedora contributors attended. BarCamp format also helps in adding more session which might be of more interest to the audience, and dropping sessions which are of less interest.Keynotes helps in getting everyone in the same room. Try to have keynotes on each start and end of each day. This is useful for announcements, or for ensuring everyone are in the same room before BarCamp pitches+voting start, or for the closing of the event.Walkie talkies are essential for large events. Ensure several handy for the core crew members.Generic swags rocks - anything extra, use it for future local eventsFUDCon is one of the few times where we are able to gather a lot of contributors at the same place. Make use of it fully for discussions, meeting, hacking and for distributing swags across the region. Sponsoring attendees who can contribute to the event is a GoodIdea(TM). Close the registration before printing the registrant list. So that there are no people asking - "Oh I have registered, but my name is not on it"Tags and food coupons should be printed earlier - we printed them late, almost screwed ourselves up.Give food coupons to volunteers before the event, not during the event. Giving them during event can cause confusion.Have a crew room in the hotel, regardless whether the crews are staying nearby or not. The crew room can be used for meetings and preparation stuff.Always have a whiteboard for the schedule. Do not rearrange sessions in the schedule after they have been assigned, and the event have started. Cancel the session and move it to later on the day or to the next day. Do not shift up sessions as that causes confusion.Be flexible with the event. If you think something can be done better through changing some stuff, change it.Getting the cafe to be open is easier than to provide food for attendees.As usual, 50% no-show rule applies for free event in Malaysia. We had almost 500 registrants on site, but only about 260-80 attended throughout the 3 days.Coffee - meh .. Red Bull - win .. Managing coffee and water heater is difficult. Just provide cans of Red Bulls. If there are cakes nearby, and Kushal Das is in the event, be EXTREMELY careful.Thanks to everyone who have contributed to FUDCon Kuala Lumpur 2012 and made this event a success. See you guys later in other events. Kuala Lumpur wont be bidding for at least the next FUDCon APAC, so whoever going to bid for the next FUDCon APAC, we wish you all the best and hope to see you there.
- Izhar Firdaus - [Less]
Posted 1 day ago
Only 10 days left and the Early bird tickets are no longer available for the Plone Conference 2012. Buy your ticket now at the reduced rate of 275,- euro. From the 1st of June the rate will go up to the regular rate of 325,- euro. Save yourself 50,-
... [More]
euro.
For only 275,- euro you get 3 day's of Plone related talks about integration, development, marketing and use cases about projects done in Plone. The conference ticket includes: Conference entrance fee, lunch and coffee breaks during conference days, goodie-bag, VAT, a big splashing Party including free drinks! Dinner before the party and maybe best of all, two sprint days to work with all your favorite Plone people to make Plone even better.
Time and tickets are ticking
Not only there are just 10 days left, but you can buy your ticket now, before the early bird limit of 200 tickets is reached! Yes, join people from all over the world. Meet with the people from our Gold sponsors like the 10 people from GW20e, or Zest Software who submitted there talk already and are giving a training!
Want to be a speaker at the Plone Conf 2012? Submit your talk! Want to know everything about Plone? How about following a training first and then meet at the conference days. In both cases, buy a ticket, book your hotel, sit back and relax as you know you will be at the Plone Conf 2012. [Less]
Posted 4 days ago by nore...@blogger.com (keul)
Times ago I write down some notes about how to release Plone products. I think I can add some other information to that article, mainly about documentation.
The "documentation argument" is already in the old post (section "Deprecated README") but
... [More]
I want to talk about something different.
One time again: all those minor issues are what I find difficult to explain when I give training to customers that want to learn Plone development.
Let's talk about how documentation change when you release a new version of a Plone product!
HISTORY.txt / CHANGES.txt
Sometimes I surf the Cheeseshop because I need some non-Plone-Zope library and the first thing I miss of the Zope world is the lack of a changes history directly given on the Pypi page.
I've not a bad behavior warning about this obviously! I think that every other framework in the universe must follow the Zope and Plone community example (what I mean is: the history file being also part of the long_description egg option)!
Commonly when history file is well done can also help you to find new features or dependency version changes... this great (but: keep reading)!
README: uncomplete
There are good products (often, sadly, developer targeted product) that can give you great things but have very poor documentation. What I can say about them? This is wrong for me... nothing new. I never liked a simple description of the product, maybe with a sentence like "look at the code and tests".
One example: http://pypi.python.org/pypi/Products.contentmigration. A really good product with a poor documentation.
README: good at the first release, deprecated later
Another bad attitude is to create a good (great) README file at the first release, then never changing it again later (yeah, I know... I've already touched this argument but let's going deep).
One of the thing I don't like is when the HISTORY.txt file also became the source of documentation. Sometimes reading the HISTORY/CHANGES section of a product you can find additional information or features.
I mean: this is good, but not only in the HISTORY section!
When you learn this about Plone, you'll start to read also at the history section of the product you like, but this is sad. Why don't update also the README?
Why this happen? I don't know. Maybe for laziness, maybe because you think that this new little feature is not important... who knows?
Sometime I think that the problem is also consequence of the work of multiple developer. Maybe the Guru Plone Developer did the product first, the another Little Plone Developer added a tiny feature and he someway fear to update also the README file.
So: if you are a product developer, please update the documentation. If you like to use 3rd party products: look at the HISTORY.txt: you could find good news there.
Example: did you know that, when using LinguaPlone you can rely onto a Plone site root view (@@language-switcher) that will redirect you to the proper language folder? This can be found in the history of version 3.1a1.
Package numeration changes
Have you ever experienced this? You installed a product version x.y.z, and it worked. Then a x.y.z+1 is released. No documentation changes, few lines of code in the history, that simple says "we fixed this issue..."... but your upgrade was not so easy, or probably failed.
Looking at the source, you discovered that this release is really different from the one before.
You will suffer of this problems commonly only when you need to keep compatibility with older Plone releases. Another example (still related to Products.contentmigration): what is the last version you could use on Plone 3?
For what I know is the 2.0.1 version. The is also a 2.0.2 or 2.0.3 version (and you can think: this is only a minor release, it's better to keep it) but this will not work on Plone 3 anymore.
This is only a problem of how numbers are used in the release version: given x.y.z I like to:
keep x for a deep technological change (for example: now your product will require PostgreSQL to work)keep y for a feature change or additionkeep z only for bugfixYou see it? It's the same logic that Plone use!
What about a version that drop support of an old version of Plone?
Probably the most user friendly choice is to change the x number (Like LinguaPlone did: starting from version 4 and above you are warned that is only a Plone 4 compatible version... unluckily you need to go to the history section to read this! ), maybe changing only y can be acceptable... but in my opinion not z!
Please, keep it for bugfix only! [Less]
Posted 4 days ago
Quick notes from the sprinters as we get started on our first full day of sprinting. The Pre-PSE12-Strategicesque-Sprintacular is focused on deprecating or removing old code from the Plone core.
Hanno Schlichting: Removing zope.app
... [More]
dependencies. Today: fix some dependencies on zope.app.testing. Should remove around 15 packages as dependencies.
David Glick: Working to make Archetypes optional in preparation for adding in Dexterity and plone.app.contenttypes. Currently running Plone without any content types. Helping Hanno with zope.app dependencies. Running the core.cfg, we’ve gone from 220 eggs to 208. Today: make Archetypes not be a test dependency of CMFPlone by isolating those tests and moving to the Archetypes packages.
Ross Patterson: Converting existing tests to plone.app.testing. Creating wrappers for older testing frameworks to ease the move.
Michael Mulich: Working with Ross. Transforming plonetestcase in CMFPlone to use plone.app.testing. One down, working on a functional doctest now.
Ed Manlove: Helping Ross and Michael, getting started.
Eric Steele: Working on KSS deprecation. Finding what we’ve already moved out of KSS and removing the unused KSS rules.
Craig Haynal: Migrating all KSS used by the folder contents view to jQuery.
Nathan van Gheem: Moving KSS rules used by portlets to jQuery, moving related views to plone.app.portlets.
Joel Kleier: Removing unused imports throughout Plone core [Less]