What do you want to find in Orchard 1.5?

Topics: Announcements, Core
Coordinator
Nov 14, 2011 at 7:09 PM

This is probably as good a time as anything to start compiling a wishlist of sorts for Orchard 1.5 core features. This should not be module requests but preferably really core features that get in the way of your module, theme or site development. Go ahead, go crazy!

Nov 14, 2011 at 7:48 PM
Edited Nov 14, 2011 at 7:49 PM

My #1 request: Enable the Gallery to download and install module dependencies - along with some improvements to the gallery submission UI.

This is my biggest blocker to actually releasing anything; the more dependencies I have, the more gnarly detail I have to write in the descriptions (instead of writing about the features), and people often don't take notice of it anyway. Also, if I release a new module version that has a new dependency, it will bomb the user's Orchard instance when they update. Finally it's a bit of a chore even submitting modules, because the fields on the gallery site don't all match up with fields in Module.txt, and the gallery doesn't even try to populate those fields from previous versions of the module ... resulting in a whole lot of copy/pasting to fill out the form each time. Since I need to update about a dozen modules right now it's a daunting task! - And it puts me off making regular minor updates full stop.

These are reasons why I'm just asking people to get the source from Codeplex instead of using the gallery. Of course, some won't know this and will try to install the module thru Admin and when their site crashes they'll probably assume either that my module or Orchard is broken, and likely give up...

#2: (This ties in with the above) - Making Orchard more robust about handling module errors - there's a workitem for this, but 99% of the time with a released module it's just dependencies that cause this anyway.

#3: User Management Permissions. I made a fork for this ages ago which I'm still using on production sites, it allows you to create "Manager" roles that can modify users (in a safe way that prevents them from messing with or becoming the Site Owner). This is essential for some sites I build for clients and while I have a solution that works for me, it'd be nice to stop having to merge with each Orchard release :) Of course this could technically be a separate module, but the problem with using OrchardSuppressDependency is that it's quite easy to fall behind core changes in whatever systems you're replacing, merging is generally safer and more automated ...

#4: Email Templating. Something else I talked about in a thread a while back, but the email system in core is really basic and involves texts and HTML hard-coded in C#. Rules and Tokens are a good step forward but what I'd like to see is having "email stationery" in a theme and have emails built from shapes (you could then, for instance, render a content item into an email, for an elegant way to distribute newsletters...)

#5: Form Fields. The Forms system has a lot of potential but it seems there are no field-level events or binding mechanisms, so you can't wrap up complex or composite controls as form shapes (unless I'm missing something...)

There are numerous other things I've thought about that'd be nice-to-have but these are the main ones for me.

Nov 14, 2011 at 8:02 PM

1)add IPartWatcher:

http://www.szmyd.com.pl/blog/accessing-currently-displayed-content-parts-in-orchard

2)http://orchard.codeplex.com/discussions/279203

3) use cdn for jquery...and css if possible

Nov 14, 2011 at 8:08 PM

plus one

#3: User Management Permissions

Nov 15, 2011 at 10:24 AM

make possible to search for content in backend. -> under section Content and in lists.

We have almost 10.000 contentitems in a list so we always have to find it in the frontend and then click on edit.

Nov 15, 2011 at 2:42 PM
Edited Nov 15, 2011 at 2:44 PM
  • Allow the same theme to support multilingual apps, by adding culture in the themes files, like xxx.fr-fr.css. Or by supporting direction, as xxx.css VS xxx.ar-rtl.css or something like that.
  • More localization work, as allow content-type name and content-field name to be localizable.
Developer
Nov 15, 2011 at 4:13 PM

Here are some features I'd like to see in core :

Admin
Collapsible menu
Widgets dashboard
Possibility to display a shortcuts top bar on front

Navigation
Breadcrumb
Hierarchical menu (in core)
Drag and drop positioning

Widgets
Edit in place
Drag and drop in zones

Settings
Time zone
Format types (dates) or better localization with current culture

Projector Queries
New Layouts :
Calendar
SlideShow
Accordeon
News Ticker
Infinite Scroll

Filters
Possibility to show them in the front views

Media
Better management of specific file types : Video, Audio, ...

Nov 15, 2011 at 6:13 PM
Znowman wrote:

make possible to search for content in backend. -> under section Content and in lists.

We have almost 10.000 contentitems in a list so we always have to find it in the frontend and then click on edit.

agriffard wrote:

Widgets

Edit in place

...

Filters
Possibility to show them in the front views

I hugely agree with all 3 of these. But let me just make a small proposal:

Right now we actually have three separate systems to search content. There's the front-end Search page (very rudimentary), the Contents list (still fairly rudimentary and lacking a text query), and now we have Projections.

Perhaps it would make sense to reuse functionality instead of improving these systems separately. Something along the lines that we make all the benefits of Projections available in front-end search, and also surface Projections filters in the Contents list.

There's a reason I included "Widgets Edit in place" in that quote. Edit-in-place if it's implemented should extend to all content, not just widgets. That makes the backend Contents list somewhat irrelevant - you can just browse the site or use search (using the powerful and extensible Projections filters!) and when you click Edit you go straight to the front-end editing (of course this should be a separate feature so you can keep backend editing if desired). To me at least this is a smoother user experience - transitioning to the backend can be a bit jarring e.g. for editor-only users that aren't interested in all the other options, and especially for certain types of sites (think of a forum, I'd like to reuse all of ContentManager's goodness when members of the public create a "ForumPost" content item, but I don't want them seeing the backend at all).

Just one proviso: we'd need a way to limit Projections filters by role so we can customise what's available in the front-end search. I can imagine there being a lot of functionality we don't want publicly available. Or is there already a way to do that?

agriffard wrote:

Media
Better management of specific file types : Video, Audio, ...

I know members of the team have talked about this but I'd like to just throw in some ideas.

I built this ridiculously complicated module suite (Media Garden) for exactly this reason - I wanted a consistent and extensible way to handle all different kinds of media; and Orchard's current Media system is designed to handle only images, and it has no extension points to support anything else.

What I'd like to see if Orchard's core media support is improved is some kind of pipeline similar to what I developed already. Of course one option would be to modify what I've done into something suitable for core but I have a feeling that a) it's overcomplicated for a core feature, b) with hindsight, some parts of it could be done in a more elegant way, and c) it's massively dependent on features from my Science Project modules, although I could argue for some of those features themselves being incredibly useful in core :) ... but those dependencies can be removed without losing much.

So I'll just summarise what I'd like to see in an improved core Media system, and what extension points I'd be looking for so I could implement my requirements modularly:

1. Ability to import media either from an external Url or a file provider

2. Ability to programmatically inspect those files to determine the media format, and extensibility to plug in new media formats and inspectors. This gets very complicated when dealing with audio and video files because sometimes the same extension can be a container for different types of media, the example I hit most often are mp4 files which hold audio or video. You have to start inspecting "magic numbers" (usually in the first few bytes of data) to determine a proper MIME type. You can't generally rely on the MIME type reported by an external server, because often they're badly configured. You can't rely on Windows registry because it requires full trust. Even then, the same container can hold many different types of codec, not all of which will be playable by the same media players or clients. Basically, it's a minefield. Note: Media Garden does not currently inspect magic numbers - instead it relies on user input when there's any ambiguity, and it allows you to override the media player in the case where you have the wrong codec.

3. Automatically pick an appropriate media player based on the media format and browser client. The user should be able to override this list, since there might be multiple players that support the same format. We want different players per media type (audio, video, image, Word doc) as well as per format. There are further nuances, such as if the client is an iPhone or iPad you will need a different player since Flash isn't supported; and possibly to direct the player to a completely different Url where you have a HLS (Http Live Streaming) handler (this is getting into fairly advanced territory). There's another example here where you might want a "Youtube" format - if the user pastes in a Youtube Url, you can scrape an Id and other details from the Youtube page and display an embedded Youtube player (think how Facebook handles links)...

4. Extensible UI. Examples of this: an "Advanced Upload" module that gives you a Silverlight uploader with a progress bar, or a "Thumbnail Marquee" so you can select a cropping region for an image (combined with ImageResizer).

5. Feeds. A media feed is essentially a playlist. Combined with WebAPI that Sebastien mentioned in relation to Projector, you could map to all different kinds of playlist format.

The above requirements are why I settled on the "media is content" design for Media Garden - when you import media, content items are created for you from that media, so media becomes a first class citizen, and you can extend it with the whole range of content parts - body, tags, voting, etc. Whether such a design would be appropriate for a core system I'm not so sure. Anyway: Media Garden currently allows all the above scenarios except as stated, the big problem I have is there's no good way for me to integrate with Media or Media Picker. To look at this another way, if Media / Media Picker were made more extensible so I could push different kinds of media into them, there would still be a place for Media Garden's capabilities whilst providing a better core media experience. I'm certainly not suggesting that all of the above would be in the remit of a core module, just that these are the kind of ways I would want to extend the system...

Developer
Nov 15, 2011 at 8:26 PM

I hope core developers are not already binding the knot to hang themselves seeing these massive walls of texts :-).

I'd second the better management of dependencies. IMHO this should be definitely be in the 1.5 release, since bulletproof handling of extensions is one key ingredient to the flourishing of the platform. I.e. developers will more likely be happy and happily develop new modules if they can be sure that what works on their dev installation won't cause a YSOD on somebody else's and the management of the surrounding environment (dependency handling, but also publishing: randompete mentioned some important points about that and the Gallery) is less work.

The only additional point I'd add actually contains several big chunk of tasks: refactoring older modules to use the currently advised techniques (shapes, drivers, maybe Forms...). Modernizing old modules would bring two benefits:

  1. Module developers would produce modules that employ the latest, best techniques, since they would see such examples (today looking through the modules, even through the built-in ones, is confusing, since various approaches are implemented for the same problems side by side). Another thing to make developers, contributors happy!
  2. Interacting with all modules would work as expected, e.g. Placement.info would always have the desired effect or attaching a part to a type would actually behave like it's attached (not now with comments).
Developer
Nov 16, 2011 at 2:15 PM

Concerning the themes, here are some possible improvements or contributions :

Sample of a configurable theme (Like Wordpress : TwentyEleven)
Banner
Logo
CSS
Settings

HTML5
Modernizr integration
Input types & attributes

CSS3
Media queries
Viewport 

Mobile
Sample theme
Jquery Mobile integration
User agent detection (as ASP.NET vnext will do) => theme switcher

Numeric pager 
Samples

Migration procedure tutorial 
From Wordpress, Drupal themes, ...

Resource Minifier 
Recently done with Piedone.Combinator

Editor 
Recently done with http://orchardproject.net/Gallery/List/Modules/Orchard.Module.M33.SystemEditor

 

Nov 16, 2011 at 2:49 PM

I just picked up Orchard yesterday to see if I can use it for documenting our REST service.

Desired:-

#1  Much better support for hierarchical menus, with theme support (I got nowhere combining the Advanced Menu widget with the Contoso theme).  The Dashboard has a nice side menu; this sort of thing should be available as standard in many themes.  Orchard should have support for hierarchical menus out of the box.

#2  Web.config should include

  <system.net>
    <defaultProxy useDefaultCredentials="true" />
  </system.net>

by default so that those of us behind proxy services can access the galleries etc.  It's a pain to have to add it to every new test site.

#3  Do you see how I inserted the XML in #2 above?  I used the "Insert Code Snippet" button.  This should definitely be made available in Orchard.  This is an absolute must have for those of us wishing to insert loads of XML and JSON etc. into web pages.

#4  In general, anything you can add (e.g. more themes) to support those writing API / SDK documentation in website form.

Thanks.

Nov 16, 2011 at 9:04 PM

Automapper? -

A colleague of mine recently picked up Automapper (http://automapper.org/) to refactor a project he was working on and get rid of a several bloated data transfer objects. I have not familiarized myself with the tool yet, but I understand some of its potential use. If we could integrate Automapper into the core, we might be able to reduce the overhead of creating complex viewmodels to represent composite types.

Currently, I might create a service to implement caching and fill a view model with data from various adhoc fields (like the media picker field) and return that viewmodel from my driver. Automapper may offer more succinct, convention-based way to describe these models.

I'm just brainstorming here and don't really have a clear vision of how to apply this yet. I'll have to work with the possibilities more myself. However, if anyone sees any obvious pitfalls or otherwise, any reason not to use Automapper in Orchard or if you're already using it, let me know.

Beautification -

Aside from this; the other ideas here sound great. I'm a little concerned some may be more appropriate as modules. Packaging a better module for navigation or email templates would be great for the default recipe, however, the most wonderful thing about Orchard so far is how much room it leaves for creative minds to think. Community competition to make a better widget will eventually iron out a lot of those items that are currently functional, but not yet beautiful. Case in point, the drag n' drop interface in the Better Menus module.

Localization - 

I struggle with this concept the most, I believe. At first I was disappointed that the search module returns results from all translations, but then I realized there are some cases where this is appropriate. Again, I battle with how much I'd like for Orchard to do for me and how much I want the freedom to customize. I do believe that there should be a clearer picture of how to localize a site in Orchard.

We face two fronts:

1. Translating content of a page into various languages (which we already have a solution for) 

2. Switching between different cultures which may each have different content and separate sets of translations (partially possible with the Culture Layer module, but this becomes less and less maintainable)

We could clone or culturize a site with a simple way to automatically direct an incoming user to the correct default "tenant" (for lack of a better comparison, I'm not suggesting using tenant sites for this because logically we're talking about one site, one context, but with several target audiences for content) based on their default browser settings. Each culturization could then also be translated in various languages.

The true goal that is served here is that we're displaying content relevant to a culture and in an available translation at the discretion of the user. The culture picker serves some of these concerns, but this module is really switching translations, but doesn't offer enough separation to truly target a different culture. The term "localization" has always seemed misleading to me as "location" does not necessarily infer language nor does language necessarily infer the appropriate culture. A user represent any combination of language, cultural background or geographic location and we should be able to target those combinations in a straightforward manner. 

If Orchard had an obvious and ubiquitous way to culturize content that did not require the misuse the tenant feature, I think that would be superb. 

That's it from me for now, thanks.

Coordinator
Nov 16, 2011 at 10:12 PM

Thanks for all the great suggestions. I just wanted to insert a small piece of advice, which is to check the gallery when you are looking for a feature. A good percentage of the suggestions made in this thread already exist as modules.

Nov 17, 2011 at 1:24 PM

make it possible to couple domainnames to cultures. so that example.nl result in Dutch and example.de in German and example.com in English. I understand that county and language is not the same but customers often want this as default. Unfortunately this is not yet possible as far i know.

Coordinator
Nov 17, 2011 at 5:32 PM

@Znowman: actually it is. Implement ICultureSelector.

Nov 18, 2011 at 6:37 AM

ok thanks. that's cool! An addition to that: make it possible to do this in backend like they do that in Umbraco. Or do you think this better be a module?

Nov 19, 2011 at 8:24 AM
Edited Nov 19, 2011 at 8:25 AM

make it possible to query for users of a specific role type without manually create a sql query with CreateSQLQuery. As far as i know you can't do this with the contentmanager. see http://orchard.codeplex.com/discussions/267481

so make it possible to do such queries.

Nov 23, 2011 at 7:29 AM
agriffard wrote:

Here are some features I'd like to see in core :

...

Settings
 Time zone
 Format types (dates) or better localization with current culture

...

I would also like Orchard to be timezone-aware.

Developer
Nov 27, 2011 at 5:17 PM

It appears that there are quite alot of ideas being thrown in to here.

If you think that an idea is going to be a large piece of functionality, concider how it could be split up in to managable chunks... think sprints.

1 ideas from me might be a stronger security model.

Dec 17, 2011 at 11:25 PM
Business/End User Functionality
  • Better support for in-place editing of existing pages and creation of new pages. (Make page creation business or end user friendly). A good example of this is editing HTML within a page (several sections)

 

Development Functionality

  • Module Dependency and downloads need to be fixed.
  • MVC4 and async controller support (for more enterprise adoption)
Dec 18, 2011 at 3:50 AM
venkat_krk wrote:
Business/End User Functionality
  • Better support for in-place editing of existing pages and creation of new pages. (Make page creation business or end user friendly). A good example of this is editing HTML within a page (several sections)

 

Development Functionality

  • Module Dependency and downloads need to be fixed.
  • MVC4 and async controller support (for more enterprise adoption)

Wanted to add 2 samples on how an other cms (telerik) implements template/page authoring..

 

https://www.youtube.com/embed/gg_Rh51Py2w

http://www.youtube.com/embed/Qn8XZKZA6lk

 

Dec 20, 2011 at 6:59 AM

It already possible to create a new tab/menu item for a controller and action but this is not yet possible for parts/fields as far i know. I would be nice if you can create tabs in the backend and split the content item parts and fields over these created tabs. I know content editors love this.

Dec 20, 2011 at 7:11 AM
Znowman wrote:

It already possible to create a new tab/menu item for a controller and action but this is not yet possible for parts/fields as far i know. I would be nice if you can create tabs in the backend and split the content item parts and fields over these created tabs. I know content editors love this.

Actually, it already happens for the "Site" content type. This is how the Settings menu is generated - using the groupId to split the parts/fields of the Site object onto different pages.

I thought of a way to write a module to do this for regular content types too, but it's a bit tricky, as the groupIds are hard-coded for Site settings, rather than coming thru placement. However it'd be fairly straightforward to let groupIds be specified in placement, which would allow this (and it's something I'll enable with my Placement enhancements in Origami, but it'd be nice to have available in core).

Dec 21, 2011 at 4:00 PM

Performance Performance Performance

This is huge for anyone looking to adopt Orchard at Enterprise level. We ran performance test on Orchard Vanilla instance hitting "Welcome to Orchard!" page to measure throughput and maximum Request/sec we saw is 60 req/sec. Test was done w/o any additional feature enabled. We also notice CPU pegging to 85%+ running under 10 concurrent user. This is a huge concern for anyone looking to use Orchard.

I am more than happy to share baseline performance test results (including HW configuration).

Coordinator
Dec 21, 2011 at 5:04 PM

@Kamin, can you push some information on the Performance thread here: http://orchard.codeplex.com/discussions/274921

Also, would you mind doing the same test using the current latest source code version of the 1.x branch, I pushed some very efficient changes yesterday.

Dec 22, 2011 at 7:59 AM

Thank you to all project participants Orchard.

Allow me to express some wishes for a future release of Orchard.

In my opinion, it would be nice to do an independent part of the contents of the menu, but integrated with the module «Navigation». The idea is to expand the module «Navigation», create a constructor that allows you to generate a configuration file SiteMap, in place of records in the database. Next, place a menu template in any area where it is needed.

Developer
Dec 27, 2011 at 5:37 PM

I would also very much appreciate generic dependency resolving.

Jan 2, 2012 at 11:23 AM

Could be very nice if it was easy to add database types, like if i whant to use MySQL as database instead of SQL server etc.

Jan 3, 2012 at 8:12 PM
RickardP wrote:

Could be very nice if it was easy to add database types, like if i whant to use MySQL as database instead of SQL server etc.

Second this. Wanted to use pgSQL but didn't have time to explore that for my current project. 

Coordinator
Jan 3, 2012 at 11:03 PM

We all agree that it would be very nice. Whoever wants it bad enough to spend time on it is welcome to write support for it.

Jan 4, 2012 at 8:54 AM

MySQL implementation are done in my fork now: http://orchard.codeplex.com/SourceControl/network/Forks/RickardP/rickardporchard

I have done a pull request.

pgSQL handling boolean values differents then SQL and MySQL so i didnt implement it but i think its should not be a big thing todo now after check the MySQL implementation. 

Jan 5, 2012 at 10:55 AM

Importing/Exporting of users and roles as part of the recipe (I may work on this one myself) - too often sites require a set of users to be "presetup" anjd it is currently impossible to do so.

Shape Tracing in Admin - self explanatory

Recipe expansion - Ability to upload zip that represents the media folder at time of recipe creation.  I use a custom recipe as a way to give a client a binary+ some site content prepopulated.  This works for content/content types/html but doesn't cover images and other items found in the media folder.  I'd love a "upload initial media" option on the recipe creation that would expand the folder into your Media/site/ directory.  Now I'm covered for my initial content + any company logos or other items that would be commonly used in the creation of new content saving everyone time. 

Jan 5, 2012 at 6:12 PM
corecomps wrote:

Importing/Exporting of users and roles as part of the recipe (I may work on this one myself) - too often sites require a set of users to be "presetup" anjd it is currently impossible to do so.

This was very recently fixed by Sebastien, I believe.

Coordinator
Jan 5, 2012 at 6:15 PM

@randompete: yes. Still need the roles I think, forgot this one.

Jan 5, 2012 at 6:30 PM

I'll take a look at the code for users unless you are really close to having roles done.

How dfferent is current 1.x vs 1.3.10?

--------
John
Sent from a mobile phone

On Jan 5, 2012 1:12 PM, "randompete" <notifications@codeplex.com> wrote:

From: randompete

corecomps wrote:

Importing/Exporting of users and roles as part of the recipe (I may work on this one myself) - too often sites require a set of users to be "presetup" anjd it is currently impossible to do so.

This was very recently fixed by Sebastien, I believe.

Read the full discussion online.

To add a post to this discussion, reply to this email (orchard@discussions.codeplex.com)

To start a new discussion for this project, email orchard@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe on CodePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at CodePlex.com

Developer
Feb 15, 2012 at 7:40 PM

One additional point for proper module dependency handling (I think this was mentioned by someone somewhere before): version-constraint on dependencies, i.e. the Module.txt could tell with which version (specific version or [open] interval) it functions with properly and tested. Now this could cause problems if two modules would require different versions of the same dependency, but I think with the ability of using intervals or even open intervals (e.g. > v1.5) would give enough flexibility to overcome this.

Feb 16, 2012 at 11:32 AM

So just MinVersion/MaxVersion, both being optional, would cover this scenario. This way the Gallery can pick the correct version for your current Orchard installation, which would help massively with future Orchard upgrades that might have breaking changes.

Developer
Feb 16, 2012 at 2:50 PM

Yeah, I would imagine a Module.txt like this:

...

OrchardVersion: minVersion:maxVersion (both optional; only minVersion: "minVersion:" or just "minVersion" like it's today; only maxVersion: ":maxVersion")

Dependencies: Some.Module minVersion:maxVersion, Some.OtherModule minVersion:maxVersion

Feb 16, 2012 at 3:34 PM

It would be nice to have a more automatic way to deal with updates to child items in N:N relationships. In the N:N example from the documentation there is a lot of manual code to manage records for the child table (see UpdateRewardsForContentItem() method; http://docs.orchardproject.net/Documentation/Creating-1-n-and-n-n-relations). 

Feb 18, 2012 at 9:26 AM

Add an abstraction for volatile storage. Some IVolatileFileSystem implementation, for temp or short lived content en local HD. Some external caching libraries need to be configured with a path, and depending if you are running Orchard on a classic server or on a farm (Azure for instance) you want to use different base paths.

Use cases:

  • Temporary files generated locally before download (for instance: image processing, zip generation or module package generation ) 
  • local cache (for instance: thumbnail generation with image resizer, warmup files...)

I can provide an implementation as a module, but I think its place would be in core.

 

 

 

Developer
Feb 19, 2012 at 10:49 PM
randompete wrote:

So just MinVersion/MaxVersion, both being optional, would cover this scenario. This way the Gallery can pick the correct version for your current Orchard installation, which would help massively with future Orchard upgrades that might have breaking changes.

I totally agree with Pete on this. What's more, next version(s) should feature more "bulletproof" ("idiotproof" too, although I dislike this term) custom module handling. Basically:

  • Allowing to optionally specify more compatibility-related parameters in Module.txt, eg:
    • min/max Orchard version
    • min/max version of dependent modules (eg. Orchard.Widgets:1.3:1.4, Contrib.CulturePicker:0.8:* ...)
  • Application stability comes first at all costs.
    • Automatically turn off/suppress modules that throw unhandled exceptions. First - this would enforce developers to keep up with the best practice of handling exceptions in their code (such an easy thing and so hard to practice, though). Second - too many times I've ran into situation where some custom module prevented me to go to admin to turn it off by simply bombing the whole instance. Me and lot of you guys can easily handle that, but imagine it's a user first-experience with Orchard. In most cases it's guaranteed that he (or she) would not try for the second time and try something else, not Orchard. Nobody would care it it's the module's developer fault - it will leave a bad taste and sometimes bad press (worse) about the platform as a whole. 
    • Enforce unit tests on modules and checking those on module submission to the Gallery (on various Orchard releases). It'd be quite hard to do, though.
    • Allow users to completely remove a given module without leaving a trace of it - just like it was never installed. Also, if there would be an issue that bombs the instance - there should always be a back door (eg. button to remove/disable the erroneous module on the error screen).
  • Ability to automatically download missing dependencies from the Gallery when installing or enabling a module.
  • Better data layer abstraction, not so tightly bound to NHibernate. Replacing the data layer is possible, but it's currently a rather difficult task, especially when the storage engine is not handled by NHibernate. Developers should be able to provide 'drivers' for custom storage engines (either SQL-based or not)
Developer
Feb 19, 2012 at 10:51 PM
Piedone wrote:

I would also very much appreciate generic dependency resolving.

+1 for this one too!

Feb 20, 2012 at 5:54 AM
Edited Feb 20, 2012 at 5:55 AM

Whilst I strongly agree with some of Piotr's points, I think certain ones of them go too far:

  • It would become annoying extremely quickly if modules automatically deactivated after an exception. Exceptions are sometimes unavoidable and even expected. (For instance, your database server is inaccessible for a microsecond. Suddenly, every module is throwing an exception so all are deactivated?) I'm not sure exactly which modules are even causing this problem - usually the Admin page still works even if the front end is broken. Wrapping every single bit of code you write in a try/catch block is not remotely a best practise. Also in 1.x branch a compilation error will no longer bomb the whole instance and most things are proofed against YSOD.
  • You can't enforce unit tests. Some modules don't even need them (e.g. a module that overrides a single template and therefore has no code to test, for instance a body editor replacement module...) And good tests can be really hard to write. Ensuring a module has tests is not the same as ensuring those tests are actually relevant!
  • There's a workitem somewhere about completely removing modules. My conclusion is you can't do it. A good parallel is uninstalling a program in Windows. Do you want the uninstallation routine to also delete every document you ever created with that program? No ... for a very good reason it will delete the program files but not touch your documents folder. Orchard content / content types are effectively the same thing.
  • I'm not sure how you can abstract the data layer any further. Actually, the binding to NHibernate is almost non-existent; can you give examples?
Feb 20, 2012 at 1:00 PM

r there any idea to integrate to mvc4(now beta)?

Developer
Feb 20, 2012 at 1:55 PM

Right, Pete - I probably went too far with couple of suggestions. What I wanted to say, that in next versions we should focus on platform stability, user experience, enforcing best practices and so on. That's the big picture. How to exactly do that - it's to be discussed, of course.

  • I wrote only about unhandled exceptions - those, that can be avoided by the developer and that could possibly bomb the instance. In most cases we know when this may happen. Simple things like eg. checking method params for nulls, using .FirstOrDefault() instead of .First() when we know that the collection can be empty etc. 
  • Yes, we cannot ensure that unit tests are actually well-written, so this would possibly be a dead-end. But I was rather thinking about a way to validate a module against best-practices/some list of common mistakes (which do not exist yet, so it's a purely academic discussion) before it's actually published in the Gallery. It won't ensure that every module is ok, but can help. On the other hand this doesn't have to be automatic - we can have a community-based acceptance process.
  • It doesn't have to (and shouldn't!) delete the things you've created using your module during application lifetime after the installation. These have to be backed-up / automatically exported for further import. But being able to remove the tables, migrations state, content parts and types created by the module and so on would be very nice to have, though. That's not bad. 
  • I will, no problem. Look eg. how Content Manager queries are being translated to NHibernate criteria... Will post more on that later today.
Developer
Feb 20, 2012 at 2:11 PM
Edited Feb 21, 2012 at 12:08 PM

There is actually a kind of "community validation" of module, that would be the ability to rate modules. The problem is, this feature is rarely used and this is the user's (our) fault: by rating modules in the gallery the author as well the other users would get an important feedback, which eventually would produce trusted and tested modules.

+1 For the feature of being able to remove a module from the UI, no matter what happens.

Feb 21, 2012 at 12:27 PM

@Piotr - I totally agree with the main thrust of your points of course. However I'm wondering something - have you really tried the 1.x branch? It's way more proof against pretty much all forms of exception and module incompatibility. So actually I think the situation right now is pretty good.

I still think that deleting tables, content types and content parts is the kind of destructive non-reversible operation that needs a lot of thought. What's worse - a user having a few redundant tables / types in their database, which they can still easily remove; or a user losing a whole load of data because they uninstalled a module (perhaps intending to reinstall it later) not realising what it would affect. I know which support request I'd rather deal with! I guess I'm just saying that cleaning up after a module isn't really a hassle, compared to the technical difficulty of implementing a system that automatically cleaned up safely. For me it's not a priority and there are other features I'd much rather see implemented or improved on first!

The problem with validating modules for best practises is that it's really really hard ;) Especially when there is so much going on that uses dynamic types, it's nigh on impossible to determine if a module's code is even valid.

What could definitely be good is encouraging better peer review of modules. Elsewhere I've commented that the whole gallery system could be improved a lot, making it easier to publish packages, and automatic dependency installation is a must-have for the future. But maybe this can be extended to support end users better. Some ideas:

- Integrate some new gallery features and in the Orchard back-end; e.g. comments/discussions for modules, and allow users to do this directly from Orchard admin instead of having to go through the gallery website.

- Provide issue tracking within the gallery. Currently some modules have a link to their Codeplex or whatever project site, but it's only one small link and users frequently miss this; they'll post workitems on Orchard itself or just not know where to go. If they could post issues directly from admin this would be much easier. In fact, maybe there could be a degree of automation. Orchard is now catching exceptions very well. Maybe we could determine which module/feature caused the error, and automatically submit an error report to the module author, along with full exception details / stack trace (obviously the user has to confirm this for security reasons!)

- There's a bit of a problem with the reviews/ratings feature on the gallery, in that it's tied to a specific version of the module. There are arguments for and against this - a bad rating or review which applies to an older version might no longer be relevant. On the other hand, relevant information and good reviews are also hidden away where most users won't ever see it. Personally I think the data should just carry over. And again, if this was doable from the Orchard back-end it would encourage people to make more use of it!

Finally, just some words on my experiences with that other CMS, Wordpress. I actually never once chose to build a site in it myself. But a web designer colleague was for a long time using it for every site he built. Frequently I had to rescue him from some mess he'd gotten himself into by installing a badly-written third party module, and I can tell you that these messes were horrible. Some of them were even paid-for modules. So ... my point is just that this will is an issue with any CMS, and users should always thoroughly test out a module on a dev instance (and preferably have a look through the code as a sanity check!) before putting it anywhere near a production box. There's no way we can ultimately protect the community against this kind of issue without some process where each and every module release is personally validated by a dev. And that would be counter-productive as well as hugely putting off newcomers.

Developer
Mar 1, 2012 at 11:54 AM

interesting inline editing toolkit..  http://wiki.fluidproject.org/display/fluid/Rich+Text+Inline+Edit+API#RichTextInlineEditAPI-Dependencies

Developer
Mar 1, 2012 at 5:03 PM
Edited Mar 1, 2012 at 5:06 PM

One thing I'd love to see is enhanced content part drivers. Enhanced in such a way that we can render content types that have HTML forms in the front end, which get submitted to the drivers, instead of to some controller. Because as it is now, whenever a validation error occurs and the controller returns the view, the end user ends up on a different url (the url of the controller/action). And in the case of Widgets that display forms, they should be able to validate the postback, and return to the exact same page that the user is currently on. Right now, the only way (that I know of) to do it is by leveraging AJAX, or storing the model validation errors in TempData, redirect to the originating url, and have the driver check this TempData for validation errors.

I think it would work in a similar way as it works for the backend: Drivers have two versions of the Editor method: one for displaying and one for handling postback.

I imagine a driver having an overloaded version of Display:

DriverResult Display(TPart part, IUpdateModel updater, dynamic shapeHelper);

If a validation error occurs, it just gets added to the model state. Also see this discussion on the subject: http://orchard.codeplex.com/discussions/346580

One other enhancement might be to change the signature of the driver's methods, so that it perhaps takes a single DriverArgs<TPart> instance. This DiverArgs class will contain the part to be rendered (or updated), the IUpdateModel object, the shapeHelper, but also a user defined context object. This is handy in certain situations, as discussed in this thread: http://orchard.codeplex.com/discussions/346582
Mar 5, 2012 at 8:39 PM

+1 Shape Tracing in Admin.

 

Please, Please, Please

Mar 7, 2012 at 7:40 AM

1-Styles and Scripts could be in a ResourceManifest and force to  not use include but use require,because it is the same function.

and "require" has many advantage for ex, for child theme.

2-could we  release next version in shorter time(1 month?), and use something like 1.41 or 1,45...

Coordinator
Mar 7, 2012 at 7:52 AM
Edited Mar 7, 2012 at 7:52 AM

1. No, they are not the same, and both have their usefulness.

2. No, releasing is a lot of work. If you want more frequent updates, clone the repo and sync to 1.x.

Thanks for the feedback though.

Coordinator
Mar 7, 2012 at 4:38 PM

Why do people want Shape Tracing in the admin ?

Developer
Mar 7, 2012 at 4:50 PM
Edited Mar 7, 2012 at 4:51 PM

It's sometimes useful whenever some content item is being rendered in the Content Items list view, and you want to know where something came from (e.g. content items displaying entire images and other shapes) which you want to hide using Placement.info.

That said, it's not too hard to determine where the shapes came from, since you can see what parts and fields are attached to any content type. So perhaps, instead of enabling Shape Tracing in the admin, it should be left as an excercise to the developer to figure out where the shapes came from :)

Coordinator
Mar 7, 2012 at 9:41 PM

Thanks all for your participation and suggestions. I'll open a new thread with a summary of this so we can start prioritizing and forming feature teams.

Mar 7, 2012 at 10:05 PM

Looks like this is a bit late, but I know Content Type specific front-end viewing permissions have been asked for several times.

Developer
Mar 7, 2012 at 11:29 PM

Yes, currently there are per-type permissions for performing CRUD operations, but not for viewing. It's surely something that needs to be added.

I've built a module for that a while ago, although it doesn't have a GUI. It adds authorization events to content item CRUD and display operations on Content Manager what lets you build a custom authorization scheme on top. Adding a GUI that would allow to choose an arbitrary permission necessary for viewing a given item shouldn't be hard.

http://gallery.orchardproject.net/List/Modules/Orchard.Module.Szmyd.ContentAuthorization

Mar 7, 2012 at 11:36 PM

Is there a target frequency for releases? Every XX months?

Coordinator
Mar 8, 2012 at 12:02 AM

the item permissions are in the list that I put on the new thread.

We've been following roughly a pattern of one release every three months, more or less one month. We'd like to continue with this frequency. 1.5 would be around June.

Mar 13, 2012 at 5:14 PM

Something I would really like to see in one of the future iterations of Orchard is CMIS-support.

Mar 22, 2012 at 9:40 PM
  1. Menus - More sophisticated menu management. Drag-n-drop capabilities w/ visual nested trees.
  2. Content - Tighten up the content section. Too much wasted white space for each record. Each row really needs to be condensed, no more than 30-40 pixels. 
  3. Content - Additional filtering / sorting capabilities in content section. Sort by name, date created, filter by tags, etc.
  4. Content - Unpublish date.
  5. Pages - make the tags limited to the existing predefined tags. More tightly defined to limit typos.
  6. Pages - meta data
  7. Modules - Uninstall feature. Not a big deal to use command line, just a little bit of a learning curve. 
  8. Users - Authentication with Active Directory.
  9. Media - More sophisticated web based asset management such as  sorting, rearrangement. I did see that changes performed using Windows Explorer reflected in the GUI, which is nice. Would not be an easy option in a hosted environment though.
Developer
Mar 22, 2012 at 9:50 PM

Hey RobC and McZosch,

Feature teams have been created, check the forums... join in and help out :) everyone welcome.

Nick

May 24, 2012 at 9:40 AM

Wasn't sure whether to post this here or on the misc features page.

I'm with robc on the content section.

Could you add additional sort functionality, by name would be the minimum.  Currently working on a site with 40+ pages and having to display > all, then search is a pain.

Loving Orchard by the way, after trying a few ASP based CMS, orchard wins hands down.

Jul 5, 2012 at 1:32 PM

Bulk E-mail Module, with Template, and option to link to Query of Distribution List, Monitoring of Fail and Successful Mails and Scheduling would be great.

Also access to the report section. There is hardly any info on the Report section and all clients are requesting, Thanks :)

Jul 6, 2012 at 2:31 PM

1. Performance.

We hope to see big improvement on performance, it is always a concern of using of Orchard.

2. Active Directory authentication.

We are using AD for authentication inside the company. So it is critical for us for Orchard to have this feature.

Jul 9, 2012 at 7:42 AM

I'd like to see "real" permalinks. Currently, we can change the permalink, which kind of defeats the purpose.

Maybe implement a GUID for every page created that can be accessed at ~/{guid}. This should redirect to the page but with the regular route in the address bar, if possible.

Jul 9, 2012 at 12:09 PM

Performance as well, as in make sure that all 'core' (and core-ish features like the Taxonomy module) can work with 30k+ users.

Coordinator
Jul 11, 2012 at 2:40 PM

@noctain: this should be a module, not a core feature.

Jul 11, 2012 at 4:43 PM

Been putting off upgrading to 1.4.2 from 1.4.0. I saw that 1.5RC is available. Is there a "soft" target date for release for 1.5? If it's nearby I'd probably hold off on upgrading. Thanks.

Coordinator
Jul 11, 2012 at 5:12 PM

We need as many people as possible trying out 1.5RC so we can know ASAP if it's ready to be released, or fix last minute bugs if necessary.

Developer
Jul 11, 2012 at 5:21 PM

There is a bug with WCF service routes taking priority over the normal routes. Can this be fixed please? I believe there is already a pull request - though seb may have a better way to tackle it.

On Jul 11, 2012 6:12 PM, "bertrandleroy" <notifications@codeplex.com> wrote:

From: bertrandleroy

We need as many people as possible trying out 1.5RC so we can know ASAP if it's ready to be released, or fix last minute bugs if necessary.

Read the full discussion online.

To add a post to this discussion, reply to this email (orchard@discussions.codeplex.com)

To start a new discussion for this project, email orchard@discussions.codeplex.com

You are receiving this email because you subscribed to this discussion on CodePlex. You can unsubscribe on CodePlex.com.

Please note: Images and attachments will be removed from emails. Any posts to this discussion will also be available online at CodePlex.com

Jul 12, 2012 at 3:19 PM

if someone hasn't already said it I would like to see more Documentation inside the Orchard code.... for example i use sandcastle to generate all my documentations. Would like to see a way to generate documentation for orchard rather than guessing with things... Thanks Anthony

Coordinator
Jul 12, 2012 at 5:34 PM

Sure, it would be great, we are eagerly waiting for your pull request ;) Seriously, like everything else in open source, it won't happen until someone needs it enough to go and do it...

Jul 16, 2012 at 2:08 PM

Problem is that it is hard to document something that you did not write.

Coordinator
Jul 16, 2012 at 11:05 PM

I do it all the time...

Developer
Jul 16, 2012 at 11:05 PM

@AimOrchard Depends on how long and hard you cope with it. Staring at the same code pieces every day for months gives a feeling you've written it by yourself;)

Jul 18, 2012 at 12:52 PM

According to this post there should be a Admin Content Search. I did a clean install of 1.5 RC2, enabled all mentioned dependencies, even upgraded to latest changeset and still can't find that feature anywhere..

It would also be great to have "Localization tokens" mentioned here: https://orchard.codeplex.com/SourceControl/network/forks/Dunross/OrchardLocalizationMajorUpdate/contribution/3063#!/tab/comments

Coordinator
Jul 23, 2012 at 12:42 PM

You need to enable search, indexing, lucene, and admin search. It's then under the Content screen in admin, as a tab.

Jul 23, 2012 at 1:36 PM
Edited Jul 23, 2012 at 1:36 PM

My blog post should help:

http://www.davidhayden.me/blog/admin-content-search-in-orchard-cms

 

Regards,

Dave

Jul 23, 2012 at 2:42 PM
Edited Jul 23, 2012 at 2:42 PM

I would like to see better visual design features. drag n drop of modules and widgets on a layout... possibly designing even the layouts using "layout widgets, see sitefinity for this, it's a great feature). and this should be possible for each newly created page:

1 - Create page:

2 - specify existing layout

3 - add layout zones with drag n drop

4 - add modules and widgets using drag n drop

 

thank you.

Coordinator
Jul 23, 2012 at 7:18 PM

The beginning of inline editing has been started for 1.5 but it wasn't finished so it didn't make the release. It wasn't anywhere near what Sitefinity is offering though and may never be, as the philosophy of both CMS are quite different. Maybe you should actually consider Sitefinity if it offers what you need already?

Jul 24, 2012 at 8:10 AM
bertrandleroy wrote:

You need to enable search, indexing, lucene, and admin search. It's then under the Content screen in admin, as a tab.

Thank you betrand, it was my bad, i somehow missed the module from the "Modules" directory. Last couple of weeks i'm digging into orchard and every day i learn something new. Currently i'm playing with some module development and i gotta say i love the code.

However, Orchard has some way to go with localization. I think there should be some guideline for module developers to support localization correctly, because i'd say that architecture already pretty much provides the means...

Jul 24, 2012 at 9:04 AM
davidhayden wrote:

My blog post should help:

http://www.davidhayden.me/blog/admin-content-search-in-orchard-cms

 

Regards,

Dave

Actually, i found about about this great feature thanks to your blog, which i have bookmarked along with sarasota.me ;) Great job you guys are doing. I'd be happy to contribute once i gain enough knowledge.

Jul 24, 2012 at 3:33 PM

I have a general understanding of the complexities of putting together this project and the open-source nature of it. As a user of Orchard, and not someone capable of contributing code, I would respectfully ask for some items which, in the grand scope of things, may not be at the top of the list.  However, I feel it adds to the experience of using Orchard in a positive way - the end user experience (from someone who manages sites using Orchard).

1) I see a few modules on culture/translations. I see one has more to do with the backend of Orchard (Admin links in a different language, etc.). What I would hope to see is something more streamlined into Orchard for users to easily translate content. There is something else out there on this, I believe. Essentially, this is something that should be natural to Orchard. A simple scenario is a page with different widgets and the page content itself where the user can simply click "Translate" and Orchard would create a clone of that item. I am not asking that Orchard do the translating, just something more streamlined to make it real easy to perform the translation myself but without the added extra steps that currently are required.

2) This is just the OCD in me, but I think in some instances it's warranted: Is there a way to make it so the Admin menu on the left hand side of the screen is automatically put in alphabetical order? Or is there some way to do this in the code that's not difficult? The problem becomes exacerbated when you add modules that utilize the menu, then everything is just out of order. This is small, I know. But again, I think it enhances the user experience.

Just my two cents. Thanks for letting me rant. :)

Coordinator
Jul 24, 2012 at 4:52 PM

mmh, I'm confused: #1 seems covered by the Localizable part exactly how you describe (except for the widget thing, which I don't understand as widgets are not attached to a page but to a layer).

For #2, no, modules specify where they want to appear. CTRL+F comes to mind.

Jul 24, 2012 at 6:48 PM

Is it possible this discussion has reasonably reached it's end of life? Perhaps a new one called "What did you wish had become a core feature in Orchard 1.5?" would be more appropriate?

Or perhaps, "What do you want to find in Orchard 1.6?"

Orchard 1.5 is a great release with significant progress made. Also, it's already happened. Let's get back to the future! Congrats to the entire Orchard team!

Coordinator
Jul 24, 2012 at 6:51 PM

By the way, I hope you want to find 1.6 what we already decided to ship ;)
By I am sure it will be a yes as those are the most voted requests on the issue tracker ...

http://docs.orchardproject.net/Documentation/Feature-roadmap

 

Jul 24, 2012 at 9:00 PM

Dinostar has a point about streamling. Localization possibilities on the admin part are great. Frontend is another story. I assume that the module developers would have to implement the localization business logic, but maybe there is a solution that would not require a module to be "localization aware".

Some practical example is blogs. I'd have to override the BlogPostService to make it work.

Another example may be the content slider module. Of course i can add localization content part to the slides, but i'd have to do some coding to show only slides for currently selected culture...

Jul 24, 2012 at 10:31 PM

@xOr:

I'm not sure I understand why the BlogPostService would need to be overidden. Open a new discussion and explain the scenario. I'm sure you'll get better feedback that way.

Open an issue and formalize how you think it should work: give examples, reference similar issues and describe how this would fix those too. Hopefully, others will understand, agree, up vote it and eventually address it. Otherwise, you've thrown your idea away.

 

Jul 26, 2012 at 9:34 AM
Edited Jul 26, 2012 at 9:35 AM

Morgma, actually it is the only way i've seen it work (in Ljosland.Localization.Services)

    [OrchardSuppressDependency("Orchard.Blogs.Services.BlogPostService")]
    public class LocalizedBlogPostService : IBlogPostService

Maybe there is some other way to do this, but i can't tell since my knowledge of the Orchard architecture is not thorough. Yet. Once it will be, i'll probably proceed the way you suggested. Thank you

Coordinator
Jul 26, 2012 at 1:56 PM

Morgma's suggestion to open a specific thread is the right one. This is way off-topic. I'm also not sure why you think blog posts are not localizable as they are made of parts that are.