|
|
|
Alexander Limi
|
(This is a duplicate of my post at
http://limi.net/articles/18-things-i-wish-were-true-about-plone - I'm including the full text here, to make it easier to quote selective parts if you want to add comments or feedback. Thanks! :) In the interest of furthering discussion about the future of Plone, here are some of my personal opinions on things that I'd like to see applied to Plone — both the process and the software. Let me preface this with the obvious disclaimers for the readers that aren't intimately familiar with the Plone community and culture: * This is my personal list, and doesn't necessarily reflect what the Plone Community wants to do. * Even though I work at Google, there's nothing here that constitutes knowledge of any secrets about future products. Any mention of Google here is as an outsider looking in, as I don't work in the below mentioned focus areas — and have no insights into what they are up to next. * Some of these are confrontational, some are not — they are all here to stimulate discussion, and not to imply failure or dissatisfaction in any of the areas. The Plone community is a fantastic community exactly because we can have these sorts of discussions out in the open without people taking it personally. * Make no mistake — we are also a leader in a lot of the areas mentioned — I'm just making sure we keep pushing the curve and continue delivering the best damn content management system on the planet. This list is merely a brain dump meant to inspire and provoke discussion in the days leading up to the Plone Strategic Planning Summit at the Googleplex in February 2008. The discussions there will certainly be a bit more high-level than what I talk about below, but this is a good chance for you to read about some of the baggage I will bring to the summit — as well as add your own views to the discussion so we can make note of them. With that out of the way, get a cup of your favorite beverage, and let's move on to the list! These are in no particular order, but I numbered them to make it easier to keep track of how far along you are in the document. ________________________ #1: Simple development should be possible entirely through the web interface For those of you familiar with Zope, this point can be summarized as “Deliver on the promise of ZClasses”. Yes, I said ZClasses. For those of you unfamiliar with Zope, ZClasses is an old — and now frowned-upon — part of Zope that allows you to construct content types entirely through a web interface. It is what I usually refer to as the “gateway drug” of Zope. Most people that got into Zope in the beginning did so especially based on what ZClasses were supposed to deliver. Of course, history shows that this didn't really work out, as there was no transition path from clicking around and making your own simple type definitions, and then move to more advanced programming later on. With Zope 3 and the tools we now have at our disposal, it's time to revisit this notion, since we can pull it off without any serious drawbacks this time around. The path to get started with Plone should be: 1. Install Plone, change options and settings to your liking, add simple types for the main business processes you want to mimic — all using the web interface. 2. When you have the need for more advanced types — or just want to make sure the setup is repeatable and possible to check in to a code repository or a product: click a button → get a filesystem-based product. 3. Once you are comfortable with the architecture and general approach, you can continue doing the rest using a filesystem-based approach to development. I know Martin Aspeli has done a lot of thinking around this, and has a proposal based on Zope 3 technologies ready, so I think this is already in good hands — but worth exploring and giving feedback on. My major goals to ease the approachability of Plone is to be able to solve the following common tasks using this solution: 1. Create simple types — then serialize (and diff) to an FS product 2. Change setup and configuration — then serialize (and diff) to an FS product 3. Create user properties — then serialize (and diff) to an FS product Zope is one of the few systems that can do this, and we should exploit it for what it's worth. The ultimate step is always filesystem-based development, but the goal is to be able to do all the simple things without programming — and then be able to dump to file system when you are ready to take it to the next level. #2: Themes should not require Plone-specific knowledge There are several reasons why there aren't a lot of high-quality themes available for Plone. Most of it is a reflection of the fact that Plone is a more sophisticated solution that tends to have paying customers and businesses as a core audience. Obviously, this isn't conductive to a lot of themes in the same way that for example blogging software like WordPress — simply because companies and organizations pay a lot of money for their designs, and don't want other web sites looking like their site. The other reason is that it currently requires a lot of CSS knowledge to work with Plone to produce a theme that will be maintainable as well as being future-proof. Separating the theme layer from the main templates in a way that makes it possible to hand a template to a web designer independently of Plone is what we have always wanted to do. This reality is getting closer with the arrival of Deliverance, an approach that makes a separate “theme layer” that is independent of Plone, and can be worked on without having any knowledge about how Plone works. Deliverance is currently being used by several sites, and is maturing rapidly due to the great work of Paul Everitt and the OpenPlans Team. I believe having Deliverance — or something similar — as part of the Plone core would be a sensible and game-changing move, provided it can deliver on its promises. Again, this is something that I believe is in good hands, but needs shepherding, cheer-leading and feedback to make sure we make it as simple as possible to put your own look on Plone. #3: Fantastic searching/grouping/batching operations for content should be accessible to everyone The best way to sum this up for those of you who are familiar with Plone already would be Collections on steroids. There is a real need to organize and group content in Plone in various ways, and the current Collection and search implementations in Plone barely scrapes the surface of what we're capable of in this area. * The first step would be to mimic a slice/dice interface that all Plone developers are intimately familiar with: the Trac search. For those of you unfamiliar with Trac, it looks a lot like the Smart Folders in Mac OS X. The goal would be to offer similar query — and especially grouping — abilities in the core Collection type and also the advanced search form. This alone would make Plone a fantastic tool for content management. * Assigning metadata to items in a collection of content — be it permanent or temporary — should be possible for all content. Construct your collection of content using the search/grouping interface and then apply tags, expiry dates and contributor metadata to it is a necessity. I cannot stress this enough. * Another related quick fix would be to treat CSV as a first-order citizen for export/import of data — especially in Collections and users/groups — as well as wherever else data comes in a tabular format. CSV is the lingua franca of structured data and data manipulation/exchange, and we're not exposing this in Plone at all right now. Since Python has great libraries for handling CSV data, it's time we start using them. * In the same vein, faceted browsing of the search results to make it easy to narrow down the result set. This is essentially the same back-end with a slightly different UI on top. #4: Rich media should be a seamless part of the Plone Experience One of the major growth areas we see in the Ploniverse is the need to handle rich media in a graceful and elegant way. Audio and video data in particular, but also interactive media like Flash. This presents a number of challenges on both the front-end and back-end: * On the back-end: Seamless and efficient storage of large files (aka. “BLOBs”), and performance in serving up these without using too much memory or CPU on the server side * On the front-end: Easy upload of a large number of files, as well as playback and dedicated view modes for audio, video and picture collections. The back-end part of this equation has received a lot of attention lately, with Zope 2.11 shipping with native BLOB support that massively improves the memory and storage requirements as well as the performance of serving up large files. On the Plone side, Andreas Zeidler has done an amazing job and created an implementation that makes this available on the Plone side of things, and this work is scheduled to land in Plone 4.0. On the front-end, projects like Plone4Artists have explored a number of different approaches to handling these types of data in Plone, and there are several important lessons to learn there. #5: Unified install experience (no, really!) Plone already has the best install experience of any content management system — it's really the Gold Standard in how easy you can make it to get started with such a sophisticated framework across all the major platforms. So why do we need to change it? The reason is simple: recent progress towards integration and unification with the Python world — especially eggs (similar to JAR files for those of you from the Java world) — necessitates some improvements here. The current situaton is also that we have three separate cores of the installers, one for each of Windows, Mac OS X and Unix/Linux. The more we can share between these implementations, the easier it becomes to release software as well as troubleshoot problems regardless of what platform people are on. Steve McMahon and Kamal Gill have done great work done on updating the Unified Installer to be egg-based recently, which lays most of the groundwork in getting the Windows and Mac OS X installers to use the same infrastructure. I want to make sure Windows is not left behind, as this is a very common evaluation platform for Plone — even if people end up installing it on Linux/Unix-based platforms when it goes into production. However, I want to take this further, and think about the next steps in both initial install experience, upgrade experience, and how to install add-on products. Going into great detail on this would necessitate an entire document in itself, but I'll list my current brainstorming notes in this area. If you have any feedback on this, please help out, these are loosely joined ideas that may or may not make sense — or even be realistic: 1. Install Plone/Zope in a consistent way that is 100% insulated from other changes to the system Python and other Plone/Zope instances on the system. 2. Install add-on products without having to do the download/unpack/locate directory dance. One way to do this would be to let “known good” projects be installed using the web interface, others might require server access. “Yes, I have a backup” button when installing. 3. Ability to ask questions during install — before the add-on product gets installed. In a lot of cases, this will influence how the add-on is installed and set up. 4. Ability to ask questions during upgrades: “We changed the default policy for X to do Y, but unless you want us to change your default setting, we will leave it the way it was.” 5. Show an indicator on whether we consider it safe to upgrade to the next available version X of Plone, based on the dependency information listed in the currently installed eggs — ie. if all add-on products say they work with the next version of Plone, tell the user this. If not, let him know which ones don't have support yet. 6. Is it possible tocreate a roll-back mechanism to downgrade installs in case add-ons screw something up? Yes, you should always have backups, but it would still be a great addition that would alleviate a lot of nervousness on behalf of the site admin. 7. An easy way to clone your production instance to a development server. 8. Upgrade Plone/Zope using the web interface with just selecting to do so — ask for backup locations, etc. 9. Make the installer more like a "network installer" — ie. comes with the core, and then gets the relevant eggs online. Could even check for newer versions when you run it, and ask if you want the newer version instead. Minimizes the initial download, and makes it easier to handle release files. The role of the installer: set up a sane, insulated environment with Python + easy_install that works! 10. Andy McKay had a great idea of super-simple, standalone ZPT-based (not Zope!) application to replace the Plone Controller — making it cross-platform. Upgrade options, test running and so on could also be added here. #6: Focus on a culture of systematic benchmarking and performance tuning Like in Alcoholics Anonymous, the first step to healing is to realize that you have a problem. Unoptimized Plone sites tend to be quite slow, and while there are numerous ways to make them go faster, they all require additional knowledge from the integrator. We can do a lot with a little investment here, as earlier optimization efforts has shown. We need to get rid of the attitude that “there's not much we can do about performance, Plone is a bit slowe since it does so much for you”. Every single time we have examined this, there are huge wins to be had on a number of levels. The complimentary side of this is to establish a nightly testing framework, in the same manner we already run automated, comprehensive code tests every night. Knowing when something started being slower is just as important as speeding up things — especially since we rely on the combined stacks of CMF, Zope and Python. A small screw-up can have massive consequences for us, and it can be hard to track down what changed. If you have a day-to-day log of some central performance statistics, you can narrow this down to specific changes — both upstream and in Plone itself. Some of the things we can do: 1. Nightly speed benchmarks (we want to know when code was added that made things slower) 2. More analysis on where the CPU time goes — will need Zope gurus here, as it's very opaque to analyze at the moment, we tried this with Mike Solomon (Python performance guru at YouTube), and it's really hard to know what the components are for an outsider — even for our seasoned, battle-scarred Plone veterans. 3. Graph dependencies in an attempt to clean up code and make things simpler. The current inheritance trees in Plone + CMF + Zope are quite convoluted at times, and there's probably a lot of simplification potential here once we see the bigger picture. 4. I want a random content population mechanism! To do proper automated benchmarks, you need a realistic body of content to test it with. Luckily, Tarek Ziade and others at the Snow Sprint 2008 already started work on this. #7: Improve the tabular data story Right now, Plone is a great choice for content-centric applications, and it also have the possibility to integrate with more structured, relational data via the SQL database adapters. However, most of these solutions are old — and while they work, Python has acquired a number of great SQL integration tools in the meantime, SQLAlchemy being the weapon of choice for most relational-thinking Pythonistas. I believe this is an important focus area, but since I'm not an SQL guru, I'll leave it to others to comment on how this can best fit into the Plone experience. I have a related suggestion, though — one that we have been kicking around for quite a while at various sprints and workshops, but never had time to look into: I want us to have a simple “Grid” type as one of the core Plone types. Looking at the average user, they usually reach for a spreadsheet not when they need calculation abilities — but when they need something that looks tabular. Week plans, project planning and overviews — all very structural data. Of course you can do this in a table in a normal HTML page, but that's not how people think. The Grid type wouldn't even have to have any spreadsheet-like properties included — as long as it could deal with text input in tables and do some rudimentary operations — like import/export CSV, and possibly feed other parts of the system with the data. This would be the perfect back-end for things like polls, questionnaires and other similar applications. You could then export the data as CSV for specialised handling and analysis/graphing, if needed. Of course, using the Chart API from Google would be an easy way to provide an optional graphing capability if your data is public. But I assume I'm a bit biased in this area. Whether this would be backed by something like SQLite with the ability to scale up to another SQL database as the storage later — or simply be a basic type — I'll leave for the people with that kind of experience to decide. In any case, a Grid type would fill a real need in the current Plone line-up. #8: Unify similar concepts Programmers often have a tendency to abstract away things until they are almost unrecognizable, to the great frustration of UI designers everywhere, of course. Making things too generic makes it hard for people to recognize patterns and makes it harder for them to let the tool guide them in what they want to do. However, the opposite tendency is also very much prevalent, and leads to a lot of redundant implementations, and confusion in what add-on products to use. Building a unified back-end for some central application structures would make it easier to maintain an infrastructure that is well-tested, performance-audited and maintained. I won't go too far into this, since it's way outside my league, but some suggestions for common applications that could share APIs and implementations — but have different user interfaces to fulfill the specific needs — are: * Ratings, comments, forums, mailing lists * Blogs, feeds, mail-in support, mail-out support, newsletters These could even ship with the core, but be deactivated by default. But I know I'm pushing it here — and I'm also tackling another element of this in a later point — so I'll leave it as an exercise for the reader to help identify clusters of similar functionality. #9: Provide a fantastic page compositing story At the moment, there are several page compositing add-ons available for Plone. None of them make for a fantastic experience in creating pages that are composed of other pages, listings and resources — but it's one of the most important focus areas for Plone 4.0. If I had my way, the user would never have to think about abstract concepts like viewlets, portlets, listings and content — the approach would be the same for everything. Like the unified installation area, this is highly complex and could fill a document by itself — but I wanted to have a placeholder here, so we can discuss the current approaches and where to go in Plone 4.0. Hopefully this will be where I get to spend most of my development time for the 4.0 release. #10: Content re-use is overrated — people like folderish This is a personal pet peeve, but since I said I would include some confrontational issues for discussion… ;-) There are absolutely user stories where content re-use is important, but those tend to be highly specialized cases, not the common case. Example: why isn't an Event folderish? How about a Page? You can always find them later, and Plone's built-in Link Integrity will stop you from doing stupid things like deleting content that is referenced elsewhere. There might be technical reasons why we're not doing this — and if there is, I'd like to hear them. Note: I'm not advocating using File field/widgets, which I agree are an abomination in most cases. I want to be able to add resources inside a content item, though. The simple reason is: that's how people think, and we'll have to build around that notion, at least for the basic functionality. Combined with our powerful search capabilities, this is a problem I'm confident we can provide an elegant solution for. #11: Take project workspaces seriously Plone is an ideal platform for highly collaborative work, and we have been improving this story over the years. Organizations like OpenPlans have also done a lot of great exploratory work in this area. It's time to bring some of that hard-earned knowledge into Plone proper. Using an approach similar to what Martin Aspeli has created with his b-org add-on, it should be possible to offer simple, compelling and efficient project workspaces without adding a lot of complexity or code. #12: Increase efforts on plone.org The situation of plone.org is familiar to anyone that runs a successful company: Who has time to update and improve the company web site when business is doing so well? The same goes for the plone.org web site — most of our developers and integrators are busy and happy working on client projects. However, without a major facelift for our communal property, we aren't doing Plone real justice. Some things I believe we need to tackle are: * Performance tuning — currently, nobody has time to look into tuning the setup so it scales better. Currently, it's a bit painful to use as a logged-in user because of the delays. This is to be expected with our growth, but that doesn't mean we shouldn't fix it. * More functionality for community input — we need ratings on everything, but especially add-on products. * Identify documentation leaders — at the documentation sprint, we put in place the framework and social notion of people having responsibility and oversight of certain areas of the documentation (e.g. LDAP integration). This needs to be put into action, and a consolidation effort for the documentation needs to happen as soon as possible. * OpenID support everywhere — yes, especially in things like the issue tracker. Make it easy for casual observers to comment and interact without creating new accounts. Since Yahoo, Google and others are currently adding OpenID support to various services, everyone will soon be able to use this. * Sell Plone better — The web site needs to sell Plone better, both in prose and design. The marketing committee and the Strategic Planning Summit are gearing up to address these issues. * Make it easy to translate web site content — This is on our more long-term radar, LinguaPlone could be used for this already, but it's important to have a good workflow and process around this, so translations aren't outdated when content changes. Expect it to take a while, but make sure you help out in finding the right balance of convenience and structure. Plone is successful on an international scale, our web site should be too! #13: Lower the Migration barriers from other systems If we can make it easier to upgrade from other systems to Plone, our adoption will increase. Migration is a complex thing, and can never be 100% automated, but there are a number of things we can do to make it possible for people to receive the Plone goodness even if they started out on a different platform: * A robust XML export/import strategy — GSXML seems to be the best option I have seen so far, but figuring out what to standardize on, and have one solution that we recommend will make things much easier. * Share migration scripts — even if what you did was a horrible hack to get that Sharepoint content into Plone, share it! Over time, people can improve and contribute back to these scripts, and people who are considering a migration have some hard-won knowledge to start off with. * Support common markup formats from other systems — The classic case here is people who install MediaWiki, and then discover “you know, having a bit more granular security would be nice”. Having optional markup modules available so people can stick with what they know will increase the chances of them migrating upwards on the food chain. #14: Realize that web publishing isn't our main arena Another slightly controversial idea. I'm not saying that we should ignore simple web publishing — simply that it's not an area we will ever be a dominant player in — and we're not trying to be. A great static deployment story will help tremendously here, but there are several factors that will always make us more of a fringe player in the brochureware corporate web site / blog arena: * PHP systems will always win in pure numbers from pure widespread hosting availability. * Plone is massive overkill for a simple web site. * Software-as-a-Service providers like Google and others will also take on this area — and win. * It's where the volume is, but not where money and talent is. We do money and talent better than volume. ;-) In my opinion, we should focus our efforts in the areas where we are already doing really well: * Intranet deployments for companies and organizations. * Highly collaborative workspaces with sophisticated security requirements. * Document management. * …and numerous other specialized fields. #15: Let Favorites come back — in a big way Early versions of Plone had the notion of “Favorites” — a way to bookmark content that was useful to you in a particular Plone site. This implementation unfortunately was very basic, so it didn't get much use among the power users, and it never got much maintenance or improvement. Later on, it was dropped, since nobody was willing to maintain it, and it really didn't do much anyway. I'm bringing sexy back — uhm, I mean…Favorites back. There are a number of great uses for this feature outside of a simple list of documents, as witnessed by many an inflated web startup over the last few years. I'd like us to bring back new, improved favorite support in Plone. Some ideas for cool things we can do with these: * Use Gmail's “Star” concept to make an efficient, simple UI to mark content for later retrieval. * Dashboard portlets with your favorites. * Let the number of "stars" on a document imply things about its ranking in search results. As del.icio.us shows, this is a great indicator of popularity. * Introduce the "follow" concept from Twitter to Plone — “star” users like content — and be able to follow their updates and additions in the site. Dashboard portlet to list these, with RSS support. * The favorite marker can mark content to be available offline via plugins like Google Gears * …and I'm sure you have other great examples. #16: Improve desktop integration Plone is already far ahead of its competitors in this area, thanks to the tireless efforts of Enfold Systems on the Windows side of things with Enfold Desktop. There's still a lot of challenges here, and some specifics I'd like to discuss are: * Can we extend this kind of functionality to the OS X and Linux desktops? * Can we publish guidelines that show how to write your add-ons so they are friendly to WebDAV and desktop integration? * Can we make the Content Type Registries capable of having local configuration mappings, so they do the right thing depending on context — and make it easy to set up new mappings? * Can we make it easy to batch-apply metadata on upload using some sort of URL mapping? * Can we build a comprehensive test suite to make sure that our assumptions don't break when we do changes in the various underlying implementations? Can we make it a given that a shipping Plone release has working WebDAV integration on all the major implementations — every time? #17: "Recommended apps" tier This is more a pie-in-the-sky discussion item. Looking at other successful open source communities, it strikes me that Plone has a lot in common with how the KDE project manages their platform. They have a core that is useful in itself, but also a lot of add-ons that are more or less recommended — and the best-of-breed even ship with KDE itself. Working out how we can achieve a similar model with cues taken from the earlier point on installation capabilities and upgrade/dependency management would be very interesting. There are a number of add-ons that deserve tighter integration (mostly in a political sense) with Plone — having recommended solutions for certain common add-ons helps the platform in general. We already have some projects that in some ways behave like this — LinguaPlone comes to mind — but having an accepted process and some guidelines around this is something we'll need sooner or later. #18: Stay hungry/foolish Plone has always been great at encouraging experimentation and wild ideas. I want us to continue doing this, and make it clear that we value it — but at the same time let people know that experiments aren't necessarily going to end up in the core. Do more experimentation and stuff that has “fun” PR value — things like iPhone support and social network features are relevant contemporary examples. ________________________ What's on your list? What are the things you'd like to see Plone focus on? Do you have comments or suggestions on any of the above points? Leave a comment on the mailing list, or blog about your own list! Thank you for your attention. It's truly an exciting time in the Plone world. -- Alexander Limi · http://limi.net ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Plone-developers mailing list Plone-developers@... https://lists.sourceforge.net/lists/listinfo/plone-developers |
|||||||||||||||
|
grahamperrin-2
|
Speed-reading #1 to #18 there's nothing with which I disagree. Nice :) One comment, and one suggestion... 1) Ratings by the community > More functionality for community input — we need ratings on everything, but especially add-on products. Agreed, but I would be wary of inviting community rating of add-on products too soon. First, solidify: a) related works in progress e.g. <http://plone.org/documentation/tutorial/third-party-products> b) wishes, such as <http://limi.net/articles/18-things-i-wish-were-true-about-plone> #5 point 2 — so that people better understand (or are shielded from) the whole product installation caboodle, and so that misunderstandings don't lead to inappropriate product ratings. In the meantime: it's great that for most add-ons, there's an issue tracker within the plone.org area. This makes Googling etc. easier. 2) State, sharing, roles, permissions, normal workflows in Plone, plus additional workflows, roles and states for some add-on products I wish for there to be: an easier, more Plone-ish (less ZMI-ish) route for _newcomers_ to learn/discover: a) the effect and importance of workflows b) how state, sharing, permissions, workflow local roles and global roles 'fit' together. Out of the box: Plone's most up-front expressions are * State (menu) * Sharing (tab) but the workflow-related stuff that novice administrators really need to get their heads around is in ZMI, and in various online articles. At <http://plone.org/documentation/how-to/new-workflows-in-plone-3> > The best way to get to know any workflow is to test it with different user profiles, each granted a specific role(s) on the site. When you first install Plone you start by having a single "admin" user profile. I'm very much in favour of learning by doing/testing/experimenting (and that's a great how-to), but I'm not convinced that testing is an ideal introduction to workflows etc. in Plone. If you're already familiar with Zope and Plone, then learning through testing may be ideal; but if you're new to Plone, then there may be a great deal of new learning and un-learning to do. Regards Graham |
|||||||||||||||
|
Tannic
|
Wow... I couldn't agree more with most of this but #1, #6 and #15 really stand out as amazing thoughts that the Plone community should take seriously.
A lot of it looks exactly (although better stated) what I put in the Plone Survey and hopefully others have as well. |
|||||||||||||||
|
Yves Moisan
|
> #7: Improve the tabular data story ... > > I want us to have a simple "Grid" type as one of the core Plone types. ASPX has had a DataGrid control for a long time. People working with relational data in the .NET world use that control all the time. A "grid" type would be useful to folks using Plone in scientific communities. Once upon a time, I made a product deriving from a PrimaGIS class to gather water quality data from in situ sensors. A "grid" type would have been useful. If such a type were made available, it must be easy to order data in ASC/DESC order on *any* column. IMO, it would almost be a must to be able to style table elements as a function of some content value. An example : I have a table in which I have pH values. How can I apply a rule so that values x1 < x < x2 are in a certain font/color/whatever-style-attribute ? The rule should be applicable on the fly (TTW, that means) so that values can be styles according to the rules of organisation A or B, for example. > The Grid type wouldn't even have to have any spreadsheet-like properties > included - At least rudimentary spreadsheet would be welcome. People looking at data *always* want to have basic descriptive stats (sums, max, etc.). I know there are some JS libraries out there. I saw one that is being developed for the XO (OLPC) and I'm sure there are others. It could be just selecting values in a column and a "stats portlet" would fill up ? > ... an easy way to provide an optional graphing capability if your I believe that would be a complement to basic spreadsheet capabilities (Google for my desire to try and hook matplotlib to Plone in the past), though that is probably less common a requirement than basic descriptive stats. Being able to easily spit the data out in CSV format so people can bring the data to appropriate plotting software could be enough but a OOTB minimalistic plotting capability would be a potential cool factor (although it could be come a negative point if it does not work well ...) Thanx for requesting comments and happy summit :-) Yves ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Plone-developers mailing list Plone-developers@... https://lists.sourceforge.net/lists/listinfo/plone-developers |
|||||||||||||||
|
Alexander Limi
|
Thanks for your feedback!
On 1/30/08, Moisan Yves <ymoisan@...> wrote: > > > Alexander Limi a écrit : > > > #7: Improve the tabular data story > ... > > > > I want us to have a simple "Grid" type as one of the core Plone types. > > ASPX has had a DataGrid control for a long time. People working with relational data in the .NET world use that control all the time. A "grid" type would be useful to folks using Plone in scientific communities. Once upon a time, I made a product deriving from a PrimaGIS class to gather water quality data from in situ sensors. A "grid" type would have been useful. > > If such a type were made available, it must be easy to order data in ASC/DESC order on *any* column. IMO, it would almost be a must to be able to style table elements as a function of some content value. An example : I have a table in which I have pH values. How can I apply a rule so that values x1 < x < x2 are in a certain font/color/whatever-style-attribute ? The rule should be applicable on the fly (TTW, that means) so that values can be styles according to the rules of organisation A or B, for example. > > > The Grid type wouldn't even have to have any spreadsheet-like properties > > included - > > At least rudimentary spreadsheet would be welcome. People looking at data *always* want to have basic descriptive stats (sums, max, etc.). I know there are some JS libraries out there. I saw one that is being developed for the XO (OLPC) and I'm sure there are others. It could be just selecting values in a column and a "stats portlet" would fill up ? > > > ... an easy way to provide an optional graphing capability if your > > I believe that would be a complement to basic spreadsheet capabilities (Google for my desire to try and hook matplotlib to Plone in the past), though that is probably less common a requirement than basic descriptive stats. Being able to easily spit the data out in CSV format so people can bring the data to appropriate plotting software could be enough but a OOTB minimalistic plotting capability would be a potential cool factor (although it could be come a negative point if it does not work well ...) > > Thanx for requesting comments and happy summit :-) > > Yves > > > -- Alexander Limi · http://limi.net ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Plone-developers mailing list Plone-developers@... https://lists.sourceforge.net/lists/listinfo/plone-developers |
|||||||||||||||
|
Laurence Rowe
|
Moisan Yves wrote:
> > >> #7: Improve the tabular data story > ... >> I want us to have a simple "Grid" type as one of the core Plone types. > > > ASPX has had a DataGrid control for a long time. People working with > relational data in the .NET world use that control all the time. A > "grid" type would be useful to folks using Plone in scientific > communities. Once upon a time, I made a product deriving from a > PrimaGIS class to gather water quality data from in situ sensors. A > "grid" type would have been useful. > > If such a type were made available, it must be easy to order data in > ASC/DESC order on *any* column. IMO, it would almost be a must to be > able to style table elements as a function of some content value. An > example : I have a table in which I have pH values. How can I apply a > rule so that values x1 < x < x2 are in a certain > font/color/whatever-style-attribute ? The rule should be applicable on > the fly (TTW, that means) so that values can be styles according to the > rules of organisation A or B, for example. > >> The Grid type wouldn't even have to have any spreadsheet-like > properties >> included - > > At least rudimentary spreadsheet would be welcome. People looking at > data *always* want to have basic descriptive stats (sums, max, etc.). I > know there are some JS libraries out there. I saw one that is being > developed for the XO (OLPC) and I'm sure there are others. It could be > just selecting values in a column and a "stats portlet" would fill up ? I wander if the ExtJS grid component could be utilized for this? See http://extjs.com/what-ext-javascript-library-all-about Laurence ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Plone-developers mailing list Plone-developers@... https://lists.sourceforge.net/lists/listinfo/plone-developers |
|||||||||||||||
|
Christian Scholz
|
Limi, great post! :-)
I think I mostly agree with those things, here are some remarks. > #1: Simple development should be possible entirely through the web > interface Indeed we need this as it makes us sorta unique. And of course we shouldn't do the same mistakes as ZClasses did in which you had to start all over in learning once you switched from ZClasses to the FS. The question is of course how to implement it best, as some import/export with merging/rundtrip or simply a view on the filesystem. > #6: Focus on a culture of systematic benchmarking and performance tuning > > Like in Alcoholics Anonymous, the first step to healing is to realize that > you have a problem. Unoptimized Plone sites tend to be quite slow, and > while there are numerous ways to make them go faster, they all require > additional knowledge from the integrator. We can do a lot with a little > investment here, as earlier optimization efforts has shown. We need to get > rid of the attitude that “there's not much we can do about performance, > Plone is a bit slowe since it does so much for you”. Every single time we > have examined this, there are huge wins to be had on a number of levels. I think one of the main problems is also when adding data to the system. On reading you can do caching but the other way round that's no option. > 4. I want a random content population mechanism! To do proper automated > benchmarks, you need a realistic body of content to test it with. Luckily, > Tarek Ziade and others at the Snow Sprint 2008 already started work on > this. bullschit and gibberisch indeed looked very neat :-) > #7: Improve the tabular data story > > Right now, Plone is a great choice for content-centric applications, and > it also have the possibility to integrate with more structured, relational > data via the SQL database adapters. However, most of these solutions are > old — and while they work, Python has acquired a number of great SQL > integration tools in the meantime, SQLAlchemy being the weapon of choice > for most relational-thinking Pythonistas. I wonder if having an SQL story from the ground would also help performance. We recently moved one project which was more DB like from Plone/Zope to Django as we had to import lots of data on a regular basis and Zope was rather slow in doing that (it was an older Zope/Plone though which means a) Catalog might be faster these days but b) more stuff is happening in AT today). I am not sure what Godefroid experienced with collective.rope (an SQL adapter for Zope content) regarding performance but I think he mentioned that it's somewhat faster. Lovely Systems also told us that one of the mistakes from the beginning was to rely on the ZODB (also think of reindexing the Data.fs etc.) esp. with lots of data. So having at least the option to run over SQL would IMHO be a big win. (also politically for some clients who do not like the unknown). Another positive thing about SQL is (as long as you don't simply store pickles in it) that you can access the raw data in simple Python scripts and do not have to start a whole class hierarchy just to add some values inside a cronjob. Downside is of course schema evolution etc. > #8: Unify similar concepts > > Programmers often have a tendency to abstract away things until they are > almost unrecognizable, to the great frustration of UI designers > everywhere, of course. Making things too generic makes it hard for people > to recognize patterns and makes it harder for them to let the tool guide > them in what they want to do. However, the opposite tendency is also very > much prevalent, and leads to a lot of redundant implementations, and > confusion in what add-on products to use. > > Building a unified back-end for some central application structures would > make it easier to maintain an infrastructure that is well-tested, > performance-audited and maintained. I won't go too far into this, since > it's way outside my league, but some suggestions for common applications > that could share APIs and implementations — but have different user > interfaces to fulfill the specific needs — are: > > * Ratings, comments, forums, mailing lists We already discussed doing trackbacks and comments with the same mechanism. This of course should also be useful for forums. Not sure about ratings but maybe this aswell. Depends on how we factor things out I guess. > * Blogs, feeds, mail-in support, mail-out support, newsletters Here it certainly makes sense to have e.g. email subscriptions available not only for one type of thing (e.g. a blog) but as a general solution. I guess events are the key here. > These could even ship with the core, but be deactivated by default. But I > know I'm pushing it here — and I'm also tackling another element of this > in a later point — so I'll leave it as an exercise for the reader to help > identify clusters of similar functionality. I think this will get clearer while implementing it if you have this in mind. > #9: Provide a fantastic page compositing story > > At the moment, there are several page compositing add-ons available for > Plone. None of them make for a fantastic experience in creating pages that > are composed of other pages, listings and resources — but it's one of the > most important focus areas for Plone 4.0. If I had my way, the user would > never have to think about abstract concepts like viewlets, portlets, > listings and content — the approach would be the same for everything. I am actually wondering if we need all those types. Most of the times I guess a user does not really know whether he now wants an event, news or a page. > #10: Content re-use is overrated — people like folderish Actually I am not sure I get this point ;-) > #11: Take project workspaces seriously > > Plone is an ideal platform for highly collaborative work, and we have been > improving this story over the years. Organizations like OpenPlans have > also done a lot of great exploratory work in this area. It's time to bring > some of that hard-earned knowledge into Plone proper. Using an approach > similar to what Martin Aspeli has created with his b-org add-on, it should > be possible to offer simple, compelling and efficient project workspaces > without adding a lot of complexity or code. This would maybe also enable some social networking features as described in the other post. Add relations between users, maybe local groups (friends, family, co-workers) to each user and we'd have a simple social networking layer (or project workspace layer). This might also help with the bookmarking stuff as you can search for bookmarks of your friends etc. > #12: Increase efforts on plone.org > > The situation of plone.org is familiar to anyone that runs a successful > company: Who has time to update and improve the company web site when > business is doing so well? The same goes for the plone.org web site — most > of our developers and integrators are busy and happy working on client > projects. However, without a major facelift for our communal property, we > aren't doing Plone real justice. Some ideas I had: - cleanup the frontpage. It's the landing page and there is no clear call to action. If you look on other sites you usually see 3 main things there: Download, Demo/Screenshots, Features. I think the features could really just be a second page. - move the links from the top to the bottom (a la flickr sitemap). People who want to get involved will find them. People who come there for the first time do not really need them at that stage. - Move news into a more visible area (maybe make it all one list in one sidebar). Just some ideas. Maybe it's also not that clear how people can get involved in working on plone.org. > * OpenID support everywhere — yes, especially in things like the issue > tracker. Make it easy for casual observers to comment and interact without > creating new accounts. Since Yahoo, Google and others are currently adding > OpenID support to various services, everyone will soon be able to use this. Actally I would like to have a new account but one I can login with openid. Maybe being able to add multiple openids to one account is also good. A good story so far has IMHO ma.gnolia.com. So in fact it would create an account on the fly. > #15: Let Favorites come back — in a big way > ... > > * Use Gmail's “Star” concept to make an efficient, simple UI to mark > content for later retrieval. > * Dashboard portlets with your favorites. > * Let the number of "stars" on a document imply things about its > ranking in search results. As del.icio.us shows, this is a great indicator > of popularity. > * Introduce the "follow" concept from Twitter to Plone — “star” users > like content — and be able to follow their updates and additions in the > site. Dashboard portlet to list these, with RSS support. One might also think of a search which takes content rated by your friends with more weight than other content. So in fact we'd need some sort of relationship between users. > * The favorite marker can mark content to be available offline via > plugins like Google Gears > * …and I'm sure you have other great examples. > > > > #17: "Recommended apps" tier > > This is more a pie-in-the-sky discussion item. Looking at other successful > open source communities, it strikes me that Plone has a lot in common with > how the KDE project manages their platform. They have a core that is > useful in itself, but also a lot of add-ons that are more or less > recommended — and the best-of-breed even ship with KDE itself. Working out > how we can achieve a similar model with cues taken from the earlier point > on installation capabilities and upgrade/dependency management would be > very interesting. > > There are a number of add-ons that deserve tighter integration (mostly in > a political sense) with Plone — having recommended solutions for certain > common add-ons helps the platform in general. We already have some > projects that in some ways behave like this — LinguaPlone comes to mind — > but having an accepted process and some guidelines around this is > something we'll need sooner or later. We discussed this a bit during the SnowSprint. We are living in an attention economy and thus "being part of the core" might mean lots more than just being one addon among others. Of course not everything can be in the core though. While we moved in our devel process to some point in which things aren't added without reason (I hope ;-) ) it might make sense to give credits to people in other ways such as being a recommended app. From a user perspective this is of course also needed as it's usually a hard task for user X to find the right add-on for his problem. Experimenting with all the available tools might be a not so fun project. Enuff said ;-) -- Christian -- Christian Scholz video blog: http://comlounge.tv COM.lounge blog: http://mrtopf.de/blog Luetticher Strasse 10 Skype: HerrTopf 52064 Aachen Homepage: http://comlounge.net Tel: +49 241 400 730 0 E-Mail cs@... Fax: +49 241 979 00 850 IRC: MrTopf, Tao_T connect with me: http://mrtopf.de/connect ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Plone-developers mailing list Plone-developers@... https://lists.sourceforge.net/lists/listinfo/plone-developers |
|||||||||||||||
|
ianb
|
One technique that might be applicable here is Transclusion, which we have implemented in the Deliverance stack at openplans. With that you just do include content, and it will fetch /some/other/page and put that in place of the link. You can select a piece of a page with #id. By combining content and composition I think this makes things a bit more unified. Ian |
|||||||||||||||
|
Martin Aspeli-2
|
Laurence Rowe wrote:
> Moisan Yves wrote: >> >>> #7: Improve the tabular data story >> ... >>> I want us to have a simple "Grid" type as one of the core Plone types. >> >> ASPX has had a DataGrid control for a long time. People working with >> relational data in the .NET world use that control all the time. A >> "grid" type would be useful to folks using Plone in scientific >> communities. Once upon a time, I made a product deriving from a >> PrimaGIS class to gather water quality data from in situ sensors. A >> "grid" type would have been useful. >> >> If such a type were made available, it must be easy to order data in >> ASC/DESC order on *any* column. IMO, it would almost be a must to be >> able to style table elements as a function of some content value. An >> example : I have a table in which I have pH values. How can I apply a >> rule so that values x1 < x < x2 are in a certain >> font/color/whatever-style-attribute ? The rule should be applicable on >> the fly (TTW, that means) so that values can be styles according to the >> rules of organisation A or B, for example. >> >>> The Grid type wouldn't even have to have any spreadsheet-like >> properties >>> included - >> At least rudimentary spreadsheet would be welcome. People looking at >> data *always* want to have basic descriptive stats (sums, max, etc.). I >> know there are some JS libraries out there. I saw one that is being >> developed for the XO (OLPC) and I'm sure there are others. It could be >> just selecting values in a column and a "stats portlet" would fill up ? > > I wander if the ExtJS grid component could be utilized for this? See > http://extjs.com/what-ext-javascript-library-all-about We should use this component. It's incredibly good. I know - I've used it. :) Martin -- Author of `Professional Plone Development`, a book for developers who want to work with Plone. See http://martinaspeli.net/plone-book ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Plone-developers mailing list Plone-developers@... https://lists.sourceforge.net/lists/listinfo/plone-developers |
|||||||||||||||
|
Martin Aspeli-2
|
Hi Alex,
Long list. :-) > #1: Simple development should be possible entirely through the web > interface Yep - we want to do this. I'm working on some infrastructure for this, which should also support other tools like UML-to-content type without massive pain. It's tricky, though. ;-) > The path to get started with Plone should be: > > 1. Install Plone, change options and settings to your liking, add > simple types for the main business processes you want to mimic — all using > the web interface. > 2. When you have the need for more advanced types — or just want to > make sure the setup is repeatable and possible to check in to a code > repository or a product: click a button → get a filesystem-based product. > 3. Once you are comfortable with the architecture and general approach, > you can continue doing the rest using a filesystem-based approach to > development. I think this is a good principle, although I envisage a spectrum from completely code-generated (scaffolding/minimal boilerplate) + GUI/TTW editing, to declarative syntax (think XML file or declarative-looking python) to full-on Python, with a few steps in-between. I also think it should be possible to define basic types without being a programmer that give programmers the hooks they need to add additional behaviour (mainly through adapters and event handlers). In the context of Zope 3, that > #2: Themes should not require Plone-specific knowledge I think the answer here will be to use Repoze and Deliverance (Repoze being the natural way to wire Deliverance into our stack). However, we need lots more people using Deliverance - fixing bugs and testing its limits. I used it for a project and we ended up ditching it due to quirks and general lack of support. It's missing some critical mass at the moment, which is problematic, and the development team behind it is busy (and generally not Plone focused). We should step up and own more of this infrastructure directly. > #3: Fantastic searching/grouping/batching operations for content should be > accessible to everyone Yup. For that to happen, we need to ditch the idea that criteria are AT content types and rethink the data model and query API. Actually, that's pretty simple and is something that's already been done elsewhere to an extent (I believe hurry.query has some syntax for this, for example). We also need to come up with the UI metaphors for batch editing. Implementing batch editing is not terribly hard, but the UI is dull so no-one is doing it. > #4: Rich media should be a seamless part of the Plone Experience For this, we need blogs (largely there) and again better front-end UI. Subtyping (ala the P4A audio and video types) is a nice way of supporting different UI and metadata extraction for various types of content. > #5: Unified install experience (no, really!) We definitely need to unify the install layouts. I believe zc.buildout is the platform that enables this, and gives us some flexibility in the future (we can redefine recipes to deal with new conventions and requirements). You mention a lot of other stuff here, some of which is in the hard-to-impossible category. I think it'll take a strong chamption for this to happen, since it's an area that developers care less about than end users (sadly). > #6: Focus on a culture of systematic benchmarking and performance tuning Again, this needs a champion with time to invest in coming up with the right strategies, tools and test suites. There are some radical things we could do (ditch ZPT?), but which are unlikely to happen in the foreseeable future. > #7: Improve the tabular data story I'd keep "tabular" separate from "SQL connections". sqlalchemy (and collective.lead and friends) give us a nice and easy way to talk to SQL databases from custom code. I don't think we need to invent more framework here, just more documentation and examples. We shouldn't really be in this game since the sqlalchemy goes do it so well. > I want us to have a simple “Grid” type as one of the core Plone types. Yes. :) We also talked about a "SQL query viewer" type, where the edit tab lets you type in a query and the view displays the results in a table. For UI, the Ext AJAX library has a *kick-ass* grid implementation that we should use. I think this is imminently doable in a third-party product. It's not even all that hard. I'd eschew out-there ideas like depending on sqlalchemy for now - store it in the ZODB in a list of lists or something. Someone who needs this should build it, and we could integrate it at a later stage. > #8: Unify similar concepts This point is a bit too vague to be useful to me, except as a guiding principle: find commonalities and factor them out into re-usable components. Zope 3 helps a lot here, but it's also quite hard to generalise a lot of things that on the surface seem similar. The devil is in the details! > #9: Provide a fantastic page compositing story Yes, please! This stuff's hard to get right. I'm hoping Malthe's plone.composition (?) work will come to fruition with some nudging. I think the hardest part is to come up with a UI that works. If it's general enough, we can wrap it around existing components (portlets, viewlets) and more targetted page-composition (as opposed so site-layout-composition) components. > #10: Content re-use is overrated — people like folderish Are you talking about a general "attachments" functionality here? I think if you made Page act and work much like a Folder, people would be confused. Logically, they are separate entities, but in Word you can embed a movie and so you should be able to (via a kupu but also in a more direct way) add additional binary or text data to various content types. Once again, the UI's ha | |||||||||||||||