Weblog
Keynote Michael Johnson: Kickstarting the Personal Space Age
Keynote by Michael Johnson at the Plone Conference 2014 in Bristol.
I am the founder of http://pocketspacecraft.com
I am a physicist. Working in meteorology and ocean ventilation models and tools. Voyager and ROSAT analysis. Att Imperial College. Software developer, computer scientist. Aerospace. Co created the KickSat project.
Founded in 2010, operations in China, Isle of Man, UK, US.
Space is bug and relatively unexplored. Missions are expensive and infrequent, funding is tight, missions are risk averse, it is scary to try really new ideas, processors are often ten years old because we know all the bugs there.
Goal: before I retire (say in the next 25 years) I want to send a spacecraft to orbit and/or land on the surface of 'every' body in the solar system. Every is too much, but maybe one million objects?
We need a pocket space craft, that individuals can buy. Personal space age: everyone can get involved.
We want to explore. Consumer projects: how are you going to support that, on that scale? We want instant gratification for people, but it normally takes years to get something up in the air. Work together.
Help different communities involved. If you do something good for the science community, your project may be able to get on board a mission to Mars. Lots of legal hurdles, insurance. Small space crafts, but big problems.
Video games are a good metric for this. People are prepared to pay 50 dollars for that. Lots of challenges there.
What helps, is open source. An Open Source Space System is being worked on. This is done by individuals in their spare time, but also by big names in space. Bring the International CubeSat Consortium in the mix.
Using open source actually helps against some of the legal hurdles, making you exempt from them.
The CubeSat standard defines a standard space craft. One unit is en by ten by ten centimeter, using 1 Watt, 1 kilogram. You can combine a few. About 50k dollar to launch one. That was started ten years ago. About 70 made in that time, and about 70 in the last six months. So it is being picked up. Much much more planned for next year. Launched from the international space station.
How is it possible? Moore's law. A KickSat, much smaller than CubeSat, already has more computer power than Voyager had, so don't knock it.
Standard 3 unit CubeSat launch is available today. Not tied to any launch vehicle or nation. We need to get it close to where we want to get (moon, planet). Then we deploy and do whatever we want (except introducing bacteria, so there are rules).
Pocket Spacecraft prototype, 32-96 millimeter diameter, less than 50 micrometer thick, 10-100 milligram, 5-100 MIPS, up to 100 GB storage, optical communications. Can be manually produced.
Long term goal: print space craft in space. Design your space craft, send the instructions in the direction of the printer in orbit around Mars, wait 20 to 40 minutes depending on time of year, and you can launch your space craft.
There is now Open Mission Control software, and Pocket Mission Control for your Android.
You need to be able to talk to these space craft, via ground stations. We can do that amateur radio based. See http://mygroundstations.com
But with a credit card and some convincing you can rent NASA communications by the hour and use the same stuff that still talks to Voyager, at 80 light hours distance.
But there also is the LOFAR network, for radio astronomy, which you could use to pinpoint your space craft. Lots of data, several Peta byte for 15 minutes. Expensive, but prices will drop: Moore's law again. There is an awful lot to do, but that is fine.
Where do you want to explore today?
Standards and info:
Spacecraft parts:
Questions?
50 percent of CubeSats fail. But 50 percent of large space projects fail as well. Interesting, isn't it?
Space junk? We are responsible about that, making sure we do no harm, otherwise we may no longer be allowed in space.
Watch the video of this talk.
Calvin Hendryx-Parker: Hands on with Multisite Management using Lineage
Talk by Calvin Hendryx-Parker at the Plone Conference 2014 in Bristol.
I am CTO at Six Feet Up. Doing Plone since 2003. Lineage was one of my first contributions.
Lineage is an add-on for Plone. Enabled by the pieces that are built into Plone, like INavigationRoot, IPossibleSite, together as IChildSite. So we are using the ZCA (Zope Component Architecture).
With Lineage you create one site and lots of sub sites for departments. Advantages compared to having lots of Plone sites:
- You only need to upgrade Plone once.
- You can share content among the sites. You can link to it in the TinyMCE editor.
- Performance is better: you get a smaller footprint for all sites combined.
Disadvantages:
- Want to split them up into different Plone sites? That is a bit more difficult.
- Add-ons and configuration are global, not per sub site, so your sites need to be really alike.
There are various add-ons/extensions that build on Lineage, for example lineage.themeselection for giving sub sites a different theme.
Add collective.lineage to the eggs in your buildout. Activate it in the add-ons control panel. Go to a folder, to the actions drop down and enable this folder as a sub site. Within this folder, the home will be this folder. You can add sub sites within sub sites if you want. You can exclude a sub site from navigation if you want to.
I want to show you some cool tricks you can do.
You can use custom site types. As long as they are IFolderish types, you can enable a sub site on it. At Penn State we used that to ease creating a new course.
Some add-ons:
- lineage.registry, for storing some config per site
- lineage.index: adds a separate index to the catalog per site.
- Resonate is new and does moving and syndicating to sub sites.
With Resonate it is possible to move content between sub sites, via the workflow, giving control to the content managers of the sub sites.
With Resonate you can syndicate content to various sub sites, still using standard Plone workflow machinery. A teaser of a news item can then be shown on the other sub sites, where they point to the original item, so that one remains the canonical one, which is good for SEO. The editor can see which sub sites accepted and rejected the share.
How does it perform? I set up two Zope instances, one with 100 Plone Sites, one with 1 Plone Site and 100 sub sites. Advantage of Lineage, with blank sites: about 9 MB against about 130 MB. Startup memory did not differ much, slightly better for Lineage. (Audience: may be influenced by the ZODB cache size too.)
Lineage is actually Plone 5 compatible. Version 2.0 released last night.
Code: https://pypi.python.org/pypi/collective.lineage
Example usage: http://www.la.psu.edu
For migration from the old separate sites to sub sites we used transmogrifier.
Watch the video of this talk.
Franco Pellegrini and Johannes Raggam: Ready, set... Mockup!
Talk by Franco Pellegrini and Johannes Raggam at the Plone Conference 2014 in Bristol.
This is about Plone's new front-end library. Mockup is a framework for adding Javascript functionality from other libraries to Plone. Will be part of Plone 5.
For example the 'moment' pattern:
some date
That will output a nicer date using the client browser language.
Currently, on Plone 4.3, we are still developing js as if it were 2004. 41 Javascripts registered in a default site. The resource registries have a packer functionality, with last commit from 2009. Maybe not so good anymore. No tests.
History of mockup. Based on Patternslib, created by Cornelis Kolbach and Wichert Akkerman and others in 2011. Forked by Rok Garbas in 2012, split up in Mockup and Mockup core in December 2013. plone.widgets and plone.app.widgets by Nathan van Gheem in November 2011, an attempt to bring more modern UI to Plone.
Build environment:
- Yo: used to generate base skeleton
- Grunt: comparable to buildout for js
- NPM: node package manager
- Front end: RequireJS.
- Testing: Karma, Mocha, ExpectJS/CHAI
[Showing some code.]
We made a generator for mockup:
npm install -g generator-plonemockup yo plonemockup
Then you answer a few questions and you get a base pattern.
Now do some coding and call make and it will minify, create a bundle, etc.
There is a training that you can follow online:
http://mockup-training.readthedocs.org
Alternatives:
- Patternslib is still being developed and is of course similar to Mockup due to the shared history.
- Web components, w3c draft. Some experimental projects, Google Polymer, Mozilla X-Tags. Limited browser compatibility. Status: html templates is completed, shadow dom and html imports are in draft.
- AngularJS directives are similar to Mockup. Angular is full stack framework. It will switch to Web Components once it is ready. Hard to migrate Mockup to using AngularJS of course.
Our opinion about Mockup: great framework, big improvement to current situation, nice workflow, but uncertainty about future, maybe Angular could be better. Open space tomorrow at 11:00.
Audience: mockup (or patternslib) is an abstraction layer, Angular is something really different. Don't use Angular as base for the Plone JS. We have to get the whole community into thinking 'Javascriptish', really push it into the head of more developers. It is actually pretty easy to change a Mockup pattern into a Patternslib pattern or the other way around. Changing a date picker pattern into a different one? Not so difficult either. Not enough people are currently feeling secure developing with Mockup, but that will come.
Watch the video of this talk.
Érico Andrei: The case for Plone Distributions
Talk by Érico Andrei at the Plone Conference 2014 in Bristol.
In some cases there are many sites that are almost the same, for example universities using Plone EDU. Different look and feel, different content, same base.
At Simples Consultoria we have been successful in dealing with this market.
Marketing Plone is very hard. It can do so much, is so flexible, how are you going to market that to a specific audience.
Marketing a solution is easier. If a client wants an intranet, I am not going to tell him that we made a portal for the Brazilian government.
Customizing Plone should not be hard. Distributions should be first class citizens. Offer a download specifically for educations or for an intranet on plone.org. The code we use to make the standard installers, VMs, packages, should be there for distributions too.
We need documentation, tests. We would love to have help with Jenkins and stuff.
Talk the customer's language, know their needs. For example PloneGov and local initiatives.
Something like the Plone Intranet Consortium is the very best thing that happened to Plone in a long time. We need to work like this. Companies should act together. Plone and Intranet are a perfect match. Bring new people to Plone. Companies will save Plone. We love Plone, but Plone needs customers and companies.
Watch the video of this talk.
Eric Bréhault: Running a Plone product on Substance D
Talk by Eric Bréhault at the Plone Conference 2014 in Bristol.
Why should you want to create or run a Plone product on Substance D? Because it is fun. It might be a good experience for the future of Plone.
Substance D has all the good things from Pyramid. Plus stores data in a ZODB. It is a CMS.
Rapido is the next Plomino version. Plomino started in 2006, still based on Archetypes, stores data into CMF objects. Uses extensively ZCatalog and PythonScript.
I turned it into Rapido. Plone 5. Based on dexterity.
- rapido.core, totally independent of Plone.
- Storage service: rapido.souper provides a storage service based on Souper. Souper works on Plone and Pyramid, so I chose it.
- rapido.plone, standard dexterity content types, adapts them using rapido.core, ideally uses nothing but plone.api.
- rapido.substanced, standard substanced.content classes, uses nothing but Substance D api.
[Demo of Plone part and Substance D part.]
So how is this done?
- TTW scripting is what Rapido is about. I could not use PythonScript, but I used zope.untrustedpython.
- Catalog: repozo.catalog is just fine, working on both systems.
- Content persistence: souper, created by Blue Dynamics, designed to work on both pyramid and Plone.
- settings persistence: using annotations. Very basic, but just works. Both contents can be IAttributeAnnotatable.
- Forms and widgets. Substance D has Deform, but it is not rich enough. Porting z3c.form to Substance D... maybe not. So: client side rendering with Angular Schema Form.
- Access control. Both systems have a granular ACL service. Probably possible to support them both transparently, but for now I created a custom security implementation.
My experience with Substance D. Pros:
- Fun.
- Happy to find all the good ingredients.
- Fast testing.
Cons:
- Not 100 percent ZCA ready, need to call config.hook_zca(), it works fine, no problem, I am just not comfortable with the 'hook' term here. Also, we would probably need a local registry.
Conclusions for me about Plone future:
- ZCA plus buildout plus ZODB make our identity, and we must preserve it. It sets us apart, it is something strong.
- We can find clever approaches to avoid a full rewrite. For example do more in plone.api instead of relying on what Zope does for us.
- Can we easily migrate to Substance D? No.
- Should we migrate to something else? No.