Steering Committee Meeting Notes

I'm going to post here the meeting notes and the video of the Steering Committee meeting every week, starting with this week retrospectively. You can subscribe to this discussion so you'll receive updates (almost) immediately.

Notes

We moved to Git and got our first pull request.

New branching strategy: to work on a feature, create a feature/nameoffeature branch off of 1.x. To work on a non-trivial bug, create a branch with issue/issueid as the name, off of 1.x. We'll then merge or rebase when taking the pull request or integrating.
The slash is a Git convention that GitFlow for example can use. See
this,
this and
this article with variations as we can rebase.

Sipke demo: buckets. Reproducing the blog/post relationship for arbitrary types, but more easily than you can today. Containable/Container should be what we work on, adding features such as promoting to the admin menu.

But I don't want to receive the continous flow from all comitee meetings, I only interested in some points and would prefer to subscribe only to the dates where I am interested. Don't want to be overflowed it could bring a lot of work doing seelction.

I was speaking of the 'send me an email' facility.
If there is only one discussion with all meetings merged into, you get an emails melting for all meetings, on the other side is there i a 'Steering Committee Meeting Notes' Topic and not a simple discussion, each meeting becoming a discussion in itself, yous
simply get emails for the meetings date/subject you have checked. Very easy to manage.
The other interesting point is that it would give you a measure of the interest of each meeting.
May be you are afraid that other discussions could appear her, just a matter of policy: do not authorize new discussions in this topic.

We were all talking about the send me an email feature. You cannot get notified of the new meetings with separate threads unless you subscribed to the whole discussions forum, which is too much to ask to most people. You cannot subscribe to only one topic,
unless I missed the option. If I missed the option, please point me to it. Otherwise, I think we can stop here.

I don't agree, but as often you try to limit discussion, I am sorry for this.
you take as main postulat that people request to be informed of new meeting themes by an email.
I am not sure this is important, if they are interested by meetings they assist live or look at the video.
and if they have a comment they go to corresponding meeting discussion and add it, subscribing to emails notifs.
other option, they are interested by the discussion opened by meeting and go directly to codeplex, read, comment, subscribe.

if you put everything on a sole discussion, the flow will necessitate spending time to filter and receiving number of emails which don't interest you.

To be informed of new videos there is always YouTube subscrbing to orchard's videos.

What don't you agree with? With the fact that you cannot subscribe to just one topic on CodePlex? I honestly have no idea at this point about what you are asking. Do you or do you not want to get notifications when the meeting notes have been posted? Do
you agree at least that it's something people will want to do?
YouTube would be a good idea, and the RSS feed of the home page works too, but this was created because somebody asked
explicitly for the meeting notes to be published on this forum.
Feel free to open a thread every week for each meeting. It's a public forum.
I don't try to limit discussion, but I have no patience for pointless ones. I'm sure anyone who genuinely wanted to subscribe to this thread to get notified of the new notes is gone by now. Gee.

Notes

Documentation: Adrian can't continue handling it. We do thank him for his work over the last few months, and
we call out for a new owner.

We moved to Git. There have been a few pull requests.

Advice: don't force push unless you really want to create a remote head, and when using a private repo for your private forks, don't set Codeplex as the default remote.

AzureBlobStorage now available for any site, including azure web sites.

Content created event in workflows now happens when the contents actually exist, making the activity usable.

UrlHelper now usable from background tasks, using settings instead of context.

Discussion about buckets: will revive lists, simplified and improved. Custom properties will die. Will be able to be limited to a content type. Will handle hierarchies. An explicit goal is to be able to reproduce exactly the blog module with it, with no
weirdness. That doesn't mean we would replace the blog module with it (maybe that will happen in 2.0).

Sébastien showed a nice lightweight way to store part properties using xml storage if you want to store but know you never will want to query.

Using GitExtensions, if I want to push with changes for a 4.5 target version from a clone I have made and where I have made and committed the necessary changes what should I do.
My clone has codeplex as it origin remote.
If I use push, should I barely select 1.x ?

2) Concerning AzureBlobStorage I vote to have it included but not activated

What should be the origin remote ? I pull from codeplex 1.x ?
when I try to push my changes, gitextension propose to select in a list of branches(?) amongst them there is 1.x, the source I am pulling from.
should I select it to push ?

Sorry but it's totally unclear, I have no private fork ??? should I create one?
If starting point is a Clone I have made from codeplex 1.x and locally named 1.x, and if I do a push, GitExtension ask to select where to push it and proposes a list of branches amongst them 1.x.
Sebastien in his video ask to not create new branches, should I push to 1.x ? This is the question.

Yes, create a private fork to which you can push. Or clone and push to any repo you want that you own.
If you clone from the "main fork" if you will, you won't be able to push, unless you have commit rights.

Notes

There are pull request and accepted changes for the migration to 4.5 (now in a branch, yay Git!), Azure SDK 2.1, import/export for permissions and roles, TrimEnd token, decoupling Workflow from other modules (no migration issue), can and must now provide
css with activities, XMLRPC/Livewriter support for the media library.

Maybe there should be a module for localizing dynamic values from the admin, as doing it in the po is a workaround at best (but if you do it, do it from the theme's po file).

Vote on Lombiq: pros and cons to having a company in the steering committee. Cons: me toos could arise: why just them? Who will vote effectively? Pros: it's good that companies get involved. Committee Vote: 3 against, 1 no opinion.

Remove from gallery modules that are now built-in. Designer tools are getting several questions a week from users who installed the gallery version on top of their 1.7. We'll upgrade the version that is available on the gallery (Sébastien will do it).

8th of October

Sorry, but no video this time, because something went wrong during recording and the video is completely useless. :(
Here's an other one instead.

Notes

Sébastien's first act as a dictator: silence Brett. :)

Lombiq is auditing the SSL module.

Lots of perf work this week.

Eager fetch filter for Projections enables you to specify what part records to load up front to avoid "select n+1" problems.

New indexes on core content type and content item records

SSL module was pushed in feature/ssl branch on the main repo.

And now... The Shift! Orchard will start, in the next version, to store part data into the infoset that is already on the content item record (used for field storage), in addition to the records that can still be used for querying. This way, if all you
need is the data, you have only one table to query. This is like using a document DB, but with minimal changes and migration. Migration will be provided for the core Orchard parts, but what about module developers? Sébastien and Bertrand to work together on
exploring this and publishing a blog post on it. Next, how to apply the technique on aggregate properties. Another great thing is that those changes can be done module by module. It's not a huge breaking change at all. It's actually not breaking at all. Will
be in 1.8.

Good quote from Sébastien: no-cache requests should always be fast. The cache is only there to handle the load.

Notes

Sipke has been working on messaging activities and a {Template.Execute:SampleShape} token, as well as a template content type to edit those templates. Suggestion made to take this out of the list of creatable types. Old email activity will be deprecated.
Coming in 1.8.

Sébastien showed Edward's work in implementing SideWaffle for Orchard, called
Orchard Seeds and available from the VS extension gallery. Those are templates for VS and Orchard.

Sébastien showed his work for the internal Azure hack-a-thon, a Contents as a Service solution based on Orchard. It creates new tenants on an Orchard instance hosted on Azure, from a front-end subscription screen, then you get a naked Orchard admin, that
can provide contents from an API. He then showed a PHP application consuming the contents, as well as a Knockout SPA, and a Windows 8 modern application. Orchard.RestApi implements those services. Has a new event to expose parts and fields to those new apis.
It's not using export, but a base implementation could use export by default (to be discussed). There is the beginning of an OData implementation as well. Permissions will be implemented through API keys. Will also work with caching.

Brett announced that
Onestop.Layouts is open source. This is a dynamic layout module, that can be thought of as an admin replacement for placement: you create layouts and templates using rows, columns, and then insert elements such as images, videos, parts and fields into those
templates. An example of a site using this module is
http://www.johnvarvatos.com/.

Will there be meeting notes/recordings for 29th of October? I think many Europeans have missed that meeting due to end of DST. As far as I remember a presentation of OneStop.Layouts was scheduled for last week’s meeting, thus it's probably quite interesting
for many Orchard users/devs.

29th of October, 2013 - Video

Notes

Wrappers are now shapes, and thus can have alternates. No code is currently adding alternates to those shapes yet however. Would be nice to create the same alternates we create from core or from url and widget alternates to wrappers.

The shift is advancing. Easiest are settings: records have been removed as they are no longer necessary. Lots of tables are disappearing.
Blog post explaining the shift. A vanilla site's home page now has 6 queries, and those are also simpler, with fewer joins.

Third party modules can, but don't have to apply the shift techniques. Nwazet.Commerce has already shifted. If you don't want to change your module, you don't have to, but if you want to, you can just change your part getters and setters to use Store and
Retrieve. This way, they will just migrate smoothly as you use them.

Harvest: the next one will be in the Seattle area, but the dates are not known yet. Maybe in the winter so we can go skiing.

Just read the blogpost explaining the shift. I definitely see the advantage in both performance and flexibility. Has JSON been looked into for the infoset storage instead of XML? Not only for performance and flexibility, but also for persistence and retrieval
issues with XML encoding for example...

Just a thought, why don't have non tech video meetings each month concerning all the subjects around Orchard CMS as an open source ?
May be in different languages ?
Cheapper than real meetings and Harvests...

Notes

New requirement for multi-tenancy: if using several host names for tenants, if you expect "example.com" to work for all subdomains, you need to replace with "*.example.com".

Wrappers as shapes reverted.

SSL lets you enter settings before it kicks in (and asks you to).

1.7.x merged into 1.x and master.

1.7.2 will be released today or tomorrow.

Next will be 1.8 (will include TheShift, Lists, Messaging, etc.).

Demo by Zoltán (Lombiq.Abstractions): quick parts implement a part using dynamic proxies where properties are simply virtual Foo {get;set;}. Introduces simpler replacements for driver
and placement (suggestions were made to make that more consistent with existing stuff). See the examples on how to use it:
Lombiq.Abstractions.Examples.

Notes

Demo from Sébastien: performance improvements on multi-tenancy. 500 tenants now run faster than it used to with one tenant. A blog with 20 entries displayed takes under 200ms, post pages take 40ms, over 60 rps, on a machine that is simultaneously running
Lync. 1.6GB memory, 1:30min to start.

Demo from Zoltán: redirecting from Content/Item/17 routes to canonical ones from Autoroute if they exist, to prevent search engines from referencing those URLs that are both unfriendly and duplicates. Zoltán to file bug so we can integrate that into core.

Notes

Lots of pull requests were pulled, including tenant info in logs, new role commands. Perf improvements to large file imports.

Changes in config for directories containing static resources cause problems potentially for all module and theme authors. Sébastien will look into it, but that may lead to not shipping an Orchard 1.8 before there is a new gallery, and that gallery might
have to start empty, because many or most modules won't work.

Projection RSS: there are two issues. One is that some projections shouldn't have RSS. The other is that the rss associated with projections is inflexible, which is especially visible in the case of external posts where the url should not be the url of
the local content item, but the url of the external post. Ultimate solution will be to have RSS as projections.

"Redoing config of static file folders" meant that the Web.config files in the Scripts and Styles folder also had to be modified, because of an unwanted modification in the Orchard.Web Web.config, which in the end caused the static resources
to be invisible to the server.
If you take the latest Orchard.Web Web.config from the 1.x branch, you don't have to modify the static resource Web.configs and they will work as before. The fix is basically adding back the following lines to the beginning of the <system.webServer> section:

As far as I can see 1.8 will be a huge impacting change for already running and 'complex sites', wouldn't it be interesting to concentrate migration experieces in an 'Orchard 1.8 migration' new discussion ?

Notes

A few changes/fixes in the past week: suspending a tenant disposes all of its resources, added a new DisplayType for listing items related to a Taxonomy term, CommentsCount in Orchard.Comments is "Shifted" to InfoSet storage (perf. improvement
for any content with comments) + new indexes added, Orchard.Caching (ICacheService) added to the core, update to ASP.NET MVC 5.1 (including WebApi 2.1, Razor 3.1).

Sébastien is working on a private, "intentionally obscure" feature called "TBM". :)

Bertrand's proposal for Orchard 2.0: move some of the core modules that actually behave as core functionalities to the Core/Framework projects to reduce the complexity and the number of projects in the solution.

Notes

Discussion about whether CommonPartRecord should be merged into ContentItemRecord (for 2.0).

Proposal by Sébastien for 2.0: remove the abstraction above NHibernate (provided by the DefaultContentManager) to surface its capabilites. Not a breaking change, just marking some functionalities obsolete.

Notes

Status: several small additions and changes in the last week: e.g. feature selector list for tenants made nicer, blogpost and blog archives count fixed/improved.

Daniel Stolt's demo on culture-specific calendars and datepickers. You can select a default calendar pattern (e.g. Japanese, Persian) for your site to adapt the behaviour of dates according to the request's culture. Besides, Daniel refactored how Orchard
handles dates in various places (removed the duplications and created one, consistent implementation called IDateManager). These changes are not yet pulled into the source at the moment.

Discussion about the possibility to setup an Orchard instance only to serve as an API-endpoint without UI. Separate module in the gallery or core module? Recipe-based setup and multi-tenancy integration mentioned.

Bertrand's demo: CustomSortAdmin (added to the
Vandelay.Industries module): a projection query sort criteria provider that enables you to add custom ordering to the items in the query.

Notes

Sorry for not having a meeting last week, we'll make up for it for sure!

Status: several smaller and some bigger changes and fixes in the last 2 weeks. The biggest one is that Daniel's non-gregorian calendar support changes and refactorings (demoed a few weeks ago) are pulled into source on the 1.x branch. Castle libraries are
upgraded 3.2.0.

Demos by Sébastien:

RssPart (1.x): a new content part that enables you to customize what data is shown in the RSS feeds for content items using Tokens.

Added a small feature to close comments automatically on a content item after X days without using a workflow.

Bertrand's Tag Cloud (widget that computes and displays a cloud of tags) and Feedburner (related to the RssPart) features are pulled into the source (and they are removed from
Vandelay.Industries).

Demo by IDeliverable:
Ajax Widget module. AjaxifyPart is useful for loading dynamic content into parts of a page asynchronously, especially if the page is cached (caching should be disabled for the route used by module). After the loading is finished, the markup is completely
identical to what it would be without async loading. Possible improvement discussed for handling static resources.

Demo by Lombiq: "something about MultiTenancy" -
DotNest, the first software-as-a-service solution for Orchard, driven by completely stateless servers on Azure. The product is in preview, but works completely: after signing up, you can create and set up tenants for yourself, though there are some technical
limitations. Some of the modules behind DotNest are / will be open-sourced. See the
DotNest knowledge base for more information.

The upcoming Orchard version will be 1.8 - to be released soon.

Orchard Harvest: current plan for date is 2nd and 3rd of June (Mon-Tue, but still a subject of change). The number of attendees may be limited (maybe at 100 or 150) for the sake of flexibility regarding choosing the conference room.

Microsoft Open Technologies will have a demo next week: a module developed by IDeliverable for MS OpenTech, that is a good candidate for integration to the Core!

Notes

Demo by Roopali Kaujalgi (MS Open Tech) in collaboration with IDeliverable: WAMS (Windows Azure Media Services) integration to MediaLibrary! You can manage your videos stored using WAMS in your Orchard instance, then convert it to different enconding formats
and resolutions. Supports live and on-demand streaming (Flash and HTML5), DRM and access policies, subtitles. MS Open Tech is ready to transfer ownership to Outercurve so it can be integrated to the core (including future updates).

Demo by Benjamin:
a pull request to MediaLibrary with changes that solve the problem of loading the folder structure from e.g. Azure taking too long by loading the subfolder structures asynchronously (when they are needed).

Announcement by Brett: Brett left Onestop to work in a new startup (in music industry), his position is taken Jorge Agraz. Welcome Jorge and good luck Brett on your adventure!

Harvest: current plan is to extend the conference to 3 days, probably 9-10-11 of June!

Status: PRs reviewed and pulled in by Sébastien, including Daniel's non-gregorian calendar support (see last week's notes). Also, a few small changes, Orchard.Azure changes for better configuration of settings (including the possibility to use a custom
public host name for storage), SMTP settings can be set in the Web.config and a custom NHibernate configuration is applied to enhance performance.

Sébastien is working on an internal project called MSC (what does it mean?). Also, what about TBM? :)

Notes

Harvest: 9-10-11 of June (almost 100% fixed). Hotel room discount possible for attendees. You'll soon be able submit your presentation ideas and besides that, you can apply to be a presenter too if you'd like to adopt a topic (e.g. Localization, SignalR
and more).

Status: a whole bunch of small fixes coming from direct contributions and pull requests. Benjamin's pull request (with the async loading of Media Library folders - see the demo from last week) also pulled in. There's now a setting for maximum page size.

Notes

Status: few changes since the 1.8 release. One of them is a small one that improves performance when having a huge amount (millions) of content items. MaxPagedCount property added as a site setting to prevent users from displaying huge amount of content
items at once, which could cause a major disruption in performance.

Orchard Pros: a platform to connect the members of the Orchard community to exchange knowledge and help each other by solving problems, answer tickets and hunt "bounties" in a gamified manner.

Notes

Status: just a few changes since last week, one bug fixed and the 1.8.x branch was merged into 1.x. Database Output Cache feature added (to Orchard.OutputCache). SQLite support is implemented by Eric and is under testing.

Notes

Status: small changes, fixed tests. Cross-browser cache eviction fixed (huge performance impact). AzureOutputCache fixed and is now reliable under heavy load. TimerActivity is now in it's own feature in the Orchard.Workflows module (you need to enable this
feature if you use it for your workflows). Blog Archives fixed (it was causing performance problems).

New feature: Comments Notifications (part of the Comments module).

New feature: Alias Updater (to update aliases across nodes).

Demo by Lombiq:
User Notifications module developed for
RealtyShares is open-source! Allows the site admins to send notifications to individual users and groups of users in various ways.

Notes

Status: added the ability to limit the number of items returned in an RSS-feed, PageSize property added to Blogs (so it can be different from the dashboard setting), IIS OutputCache taking priority over Orchard.OutputCache fixed.

Plans for 1.8.1: a lot of improvements in performance and bugfixes to be released.

Notes

The Orchard Jabber channel is getting quite popular!

Status: ASP.NET output cache module disabled, POST redirects in Orchard.OutputCache are now handled and relevant cache entries will be evicted before the page reloads, added missing DLLs to the Azure Media Services module, __r query string parameter is
back, and many-many other small changes in the last two weeks.

TBM revealed! The ASP.NET blogs website has been migrated to Orchard and is available for preview at
http://beta.asp.net. TBM = The Bootstrap Machine (which is the default theme). Currently 723 blogs (tenants) are hosted there, divided into 4 Orchard instances (each has its own SQL Azure DB) on a Large Azure
VM with a reverse proxy.

Demo by Zoltán: the reverse proxy that controls the cache for
DotNest is now capable of evicting corresponding cache entries when some content is updated.

Spring Harvest Challenge: a module competition where you can submit a new or an already existing (but updated) module that is compatible with Orchard 1.8. Winners will be announced at Harvest. For more information, technical details, prizes and rules please
visit the website of the contest.

Demo by Antoine: updates on the responsive Admin theme (based on Bootstrap).

Listening to all this, I think that MS should provide more financing to Orchard, Sebastien should be able to hire some helpers for managing the project: working on bugs , on pull requests and on bugs. Still a community but going more stable with its processes.

Notes

TBM revealed! The ASP.NET blogs website has been migrated to Orchard and is available for preview at
http://beta.asp.net. TBM = The Bootstrap Machine (which is the default theme). Currently 723 blogs (tenants) are hosted there, divided into 4 Orchard instances (each has its own SQL Azure DB) on a Large Azure
VM with a reverse proxy.

Has anyone else noticed the beta for the asp.net blogs site has CMS by Umbraco at the bottom. A lift a shift word for word?

@alanevery, not sure I have explained that. The websites are handled by Neudesic LLC, and I worked with them on this one too. They needed a front page to show some aggregated data, like latest posts and tags, but because they had no prior experience with
Orchard and already had the previous theme on Umbraco they preferred to stay on this solution to limit the amount of work. They used the right tool for their need.

Notes

Status: Sipke is working on the extension of the Templates module and in the feature branch for the AuditTrail module, the OutputCache module has been improved by Sébastien, new feature branch by Sébastien for Shape Widgets.

Demo by Sipke: Orchard.AuditTrail module, the work of IDeliverable for MS Open Tech. Exposes API that content parts can communicate with to log events related to them, e.g. content changed, role assigned to user, comment moderated and much more. Developers
will be able to write their own providers. Discussed some possible features, e.g. restoring an older version of a content item.

Idea for a new feature on DotNest: setting up a few test websites with a nice theme and default content so newcomers can play with Orchard without any registration or commitment. They will be periodically reinstalled (~1 hour).

Notes

There's a lot of work done lately in the feature branches for the Content Deployment, Audit Trail and Dynamic Layouts modules.

Zoltán's demo of a new feature of Combinator: sharing static resources between tenants in a multi-tenant environment. The typical use-case is that the static resources in the Dashboard are usually the same across tenants, so it makes sense to generate it
once and then share it through the Default tenant's Media folder.

Shaun's demo of the "The Theme Machine Designer": a theme that displays the structure of themes on the front end (including a theme
picker) that let's you discover how the Layout is build up. Great tool for theme authors to learn the ins and outs of theme development.

Notes

We only had a short meeting due to Sébastien not being present.

Demo by Benedek: Musqle.com, a website with a lot of features built for bodybuilders by Softival. Lombiq built a Training Manager module for Musqle, which allows administrators (and users) to create training
plans, then users can browse, copy and customize them. Plans can be used to log your trainings in the Training Diary and it's also possible to see your training progression in the Training Statistics Widget that can display graphs in various ways.

Nick updated the Owin branch with the latest assemblies and fixed the related unit tests. Owin should be working fine, so it's ready for testing! See
Nick's blog for more info.

Discussion about changing the workflow of how pull requests are managed with the aim of processing them faster.

I missed my part in the meeting cause I got lost in the Lync channel changes and getting pulled away by my coworkers for other things.

I'm happy to hear talk of dedicated work on the pull requests. It's a two fold problem indeed, code review as well as the actual pull.
If there were more than one person to prod to review a pull request, then at least the vetting process could be quicker.
As was stated, after a pull request is validated, the actually "pulling" would be quick and easy. But just someone to prod other than Sebastien would be great.

Notes

There have been some upgrades/changes on the feature branches and in 1.x/1.8.x as well, e.g. Sipke added Admin search filter, TinyMCE updated to 4.1.2, MarkDown is also updated to latest version.

Thanks to Nick, the OWIN feature branch is ready for testing!

Zoltán reviewed all the pending pull requests, so to come to conclusion regarding those, a separate meeting dedicated to bug triage and pull request reviews is scheduled,
visit the forums for more information.

Bertrand's demo: Bertrand fixed an issue with Projections - if you want to filter on a field that was newly added to a content type, your projections using that content type will not return any results, because the field that was added is undefined on the
already existing content items.

Discussion about the translations on Crowdin: should the Gallery modules be moved to a different Crowdin project? The conclusion is that yes, they should be so they don't interfere with the translations of the source distribution, since most of the Gallery
module translations are outdated and much less frequently used.

Notes

Status: a lot of work has been done in the AuditTrail, Layouts and DateLocalization feature branches. Sébastien was working on performance and usability upgrades for Indexing and Lists.

It's now possible to define different indexing settings for the Dashboard and front-end search! There's also a new setting to select what versions of the items should be included in the indices.

A new property called "Listable" has been added to ContentTypeSettings, which defines whether the items of that type can be listed on the Contents page or not. Before that only the items of "Creatable" types could be listed, now those
two are separated. ".Listable()" extension method has been added too for applying it to content types using data migrations. After upgrading your source, all "Creatable" types will be automatically set to "Listable" as well.

Demo by Zoltán - TryOrchard: 5 test tenants have been set up on
DotNest purely for testing and trying out Orchard. They are reinstalled every hour, so you can just play with Orchard without any registration or setup. There's also a walk-through for newcomers that displays
tips about how to use the basic funtions.

Before the next weekly meeting there will be a special meeting to triage bugs and review the currently active pull requests: join us on Thursday (31st of July) at the same time (12PM PST)
and place and see
the dedicated topic for more information and updates!

Notes

Some of the changes made since last week in the source: AuditTrail is merged into 1.x, Daniel is finishing up the DateLocalization feature branch, Sébastien fixed a security issue regarding the default access level for Azure blob containers, Password shape
added, all of Stanley's PRs that we reviewed last week are pulled in, fixed Control Wrapper permissions (edit links are not displayed if you don't have permission to edit), Redis libraries updated, jQuery Upload plugin updated, Nick fixed a StackoverFlowException
in WebAPI.

Starting with last week, we have an other meeting too on Thursdays in the same time (12PM PST (7PM UTC)) and
place to triage bugs and review pull requests. Those meeting are also recorded and uploaded in this channel.

Sébastien updated the documentation page "Contributing patches" with information and guidelines regarding PRs. The "Feature
roadmap" is also updated with the feature list for Orchard 1.9, estimated release date is October.

We also discussed the possibility to move Orchard's source to GitHub. The only downside is that GitHub doesn't have a forum or discussion board, but it could be solved by integrating Nick's Forums module with the Orchard website.

Should we move to .NET 4.5.1? There wouldn't be any problems, but before that we have to make sure that the important hosting services support it.

Notes

Status: several small changes and bugfixes since last week. FirstMediaUrl property has been added to MediaLibraryPickerField. "None" as a build action is allowed in projects for the following types: LESS, SCSS, SASS, TypeScript, CoffeeScript,
MarkDown, so you can opt-out from deploying them. Daniel made further development on the DateLocalization feature and then it was merged into 1.x. AuditTrail and Layouts are also under development by Daniel and Sipke. Several PRs have been pulled in (significant
portion of them coming from Stanley). Sébastien fixed a bug in the OWIN feature branch so it's working nicely (but the SpecFlow tests all fail yet). Nick is working hard on the RTL-support.

The title of today's meeting: "The day of many demos".

Demo by Nick - RTL support for the Dashboard: users with access to the Dashboard now have the ability to select a different culture setting for editing content (from the list of cultures added to the site settings). When the selected culture is an RTL one,
the whole Dashboard's layout and localization is transformed into RTL.

Demo by Zoltán - Orchard as a NuGet package: the "lib" folder containing all the dependency DLLs and Orchard.Framework can be complied into NuGet packages, see the work done in the "feature/nuget" branch. This is a great supplementary
solution for developers to use Orchard in different ways, like the Orchard Application Host. We've also discussed the possibility for self-upgrading Orchard.
See the discussion about this feature.

Demo by Piotr - keyboard shortcuts for the Dashboard: Ctrl+F will show you a ContentPicker with Search where you can select a content item, clicking on it will navigate you to its editor. Ctrl+S saves the content item, Ctrl+Shift+S toggles Published state.
Correlates with Sipke's changes in the Admin search filter: toggling its visibility with Ctrl+M.

Demo by Sipke - latest changes in the Layouts module: child Layouts are updated when their Master is modified. The grid has a fixed 12-column (maximum) span. Layouts can be converted into a Layout template. Templates can contain arbitrary elements and those
can be inline-edited and customized/styled. When changing the layout with elements already added, the elements will be retained and positioned to the best available space.

Localization contributors on Crowdin will be mentioned in the release notes alongside with the source code contributors.

Notes

Status: fixed a memory leak when creating LifetimeScopes, Sébastien will push a feature branch he's working on for REST API, fixed a bug in searching for content types, RTL support for Workflows and MediaLibrary added by Nick, AuditTrail now supports logging
IP-addresses.

Sébastien did some testing regarding Eric's work with SQLite support, it works and looks promising performance-wise, but needs some tweaking.

Demo by Sébastien - Securable: a new content type setting has been added (based on the discussions in the previous meetings). Enabling "Securable" for a content type will display all its items in the Role editors, so you can edit the permissions
for each content item of that type. Make sure you only use it for content types with a small number of items, e.g. Lists, Menus. An other content type setting will be added later to do the same thing for content type level.

Demo by Stanley - HtmlCodeMirror flavor: adding syntax highlighting and tag/attribute/JS auto-completion when editing HTML for widgets and also in the TinyMCE HTML editor popup.

Discussion about moving static resources (JQuery, CodeMirror, etc.) to a common module so that any other module can reuse them.

Nick showed us the latest changes and upgrades he made for RTL support. Most of the important Dashboard pages (Widgets, Workflows, Navigation, etc.) now support RTL. Stanley suggested using a transliteration library for generating URLs with latin letters
even if the content is edited in a language that doesn't use latin letters.

Notes

Status: shortcut extension methods for reading and writing files through IStorageProvider added by Lombiq, feature branches (Layouts by Sipke and Localization by Nick) are updated with new features, project Web.config files updated for each module for Razor
IntelliSense to work, "Securable" Content Type metadata for adding type-level permissions when editing Roles and "Securable content items" Content Type metadata for adding content item-level permissions when editing Roles added by Sébastien.
Stanley's PR fixing that titles with only special characters were generating empty slugs (and overriding the home page) was pulled in. MediaLibrary folder contents are loaded on-demand, increasing performance for huge amount of media items (also a PR by Stanley).

NHibernate is updated to 4.0. It's a new major version with a lot of bugfixes and it's built upon .NET 4.0.

Demo by Nick - Localization updates: the Localization feature branch was updated to support transliteration settings. This enables the generation of slugs with Latin characters from titles that contain non-Latin characters. When creating localizable content
items, you can now select a culture (instead of it being the site culture automatically). When selecting a RTL culture, the editors will immediately switch to RTL editing mode. A culture selector is displayed on the content listing page if you have more than
one culture.

Demo by Piotr and Marek -
PowerShell console in the Dashboard: a virtual file system based on Orchard, where you can use the tools provided by PS to manage your Orchard site, like browsing and editing settings and features, running commands and use PS commandlets. It's possible
to use it to manage your server from inside Orchard. The PowerShell.exe was basically re-implemented to fit into Orchard and runs inside Orchard's app domain.

Demo by Sipke - Dynamic Forms: based on the Layouts module and enhancing the Custom Forms module, you can now create Forms with a dynamic layout and a huge range of customization options. Input validation is a feature to be added soon.

Sébastien rimmed widget layers

Notes

Status: feature branches are still under development and feedback/testing/bugfixing is welcome!

Performance improvements: sessions management (background tasks work with smaller batches of content); the background task updating the indices now works as a job (JobsQueue) and processes all the items in one go (but divided into multiple transactions
of 50 items); Navigation, Projection and Layer queries optimized for performance.

Jay-Z and Kanye joined the meeting (in spirit) too.

Discussion about using a translation API (e.g. Bing) for localizing content, but they are still unreliable for keeping the context for more than a few sentences.

Discussion about a new Gallery: it should be a "directory" pointing to the repositories and it should create the NuGet packages for the modules/themes based on specific tags in their repositories. It should also have a feature for displaying user-driven
compatibility information for modules/themes with specific Orchard versions (and maybe with other modules/themes too).

Discussion about Orchard's future and ASP.NET vNext: Orchard will support the Desktop-CLR, not the Cloud-optimized one, since some of Orchard's dependencies (Lucene, AutoFac, NHibernate) need it and the Cloud-CLR is only a subset of the Desktop-CLR, so
e.g. System.Drawing would not be available. The ASP.NET vNext version of Orchard would be Orchard 2.0, but we can have 1.9 or even 1.10, etc. before that too.

Document DB for Orchard 2.0? The problem is that it only works on Azure, so you couldn't set up a development environment locally.

Would you like to see the Orchard documentation in your native language? Actually Antoine already solved this problem (see the French translation): just fork the
Documentation project. It contains an ASP.NET Web Pages application, which you can just deploy to after you translated the documentation (which are stored in the form of MarkDown files in
the Documentation folder).

Notes

Status: not much happened during the week, due to an Azure hackathon in Microsoft. Owin branch is updated, Nick is working on the Localization branch, TinyMCE updated to 4.1.4 and all available plugins were added in a separate feature.

A bit of live troubleshooting on Sébastien's machine to solve an issue where running 1.x fails with an YSOD after updating from the Owin branch with the help of Nick. Temporary ASP.NET files should be cleaned (x86 and x64 too).

Notes

Status: Alias lookup performance issue fixed, fixed a possible NRE during setup, fixed a possible OoME when using Shape Tracing, the command line tool now supports empty strings as parameters, ReliableSqlConnection removed (since auto-retry happens by default),
Sipke and Nick are working continuously on their respective feature branches, TinyMCE updated to 4.1.5.

Sébastien is working on the issue with DateTime-type CommonPart properties saved with different precision in infoset and records.

Demo by Nick - Localization updates: huge clean-up and refactoring in the AdminController of Orchard.Localization (handling the localization of content items) and improved/added other features of this module.

Demo by Sipke - Layouts - Element Blueprints: it adds the ability to create reusable content of any kind on different parts of your website.

Abhishek, the most active contributor to the documentations has now write access to the documentation repository!

Shaun is working on extension methods for the ContentDefinionManager to ease the creation of content fields.

Notes

Status: feature branches under development, a few bugfixes since last week.

Sébastien fixed an issue where the infoset and the records were storing UTC dates differently, since SQL CE doesn't support millisecond-precision. This caused problems in a few places, e.g. Publish Later.

Demo by Shaun about the plans for the new community website: design and look&feel updated (Orchard-y colour scheme), updated (and much more) content.

Announcement by Zoltán - Lombiq open-sourced
Lombiq.Hosting.Azure.Indexing: this module allows you to store indices in Azure Blob Storage so when running your site on multiple server nodes, indices are shared between them. It's running in production for months on all Lombiq websites and DotNest.

Lombiq is a member of the Azure Web Sites Customer Advisory Board (WAWS-CAB), so if Orchard has any problem running on Azure, we're now in a much better position for getting help.

Demo by Sébastien - Orchard.MessageBus: a new module added to the source on the "messagebus" feature branch based on
Lombiq.Hosting.DistributedEvents: This allows server nodes to signal each other to invalidate cache entries, eliminating multiple types of problems in multi-mode environments, e.g. content
type definition changes.

Notes

Status: Projection Pages are now Listable by default, Nick and Sébastien are working on their feature branches, TaxonomyService is refactored and contains API-documentation, the MissingSettingsBanner for Email settings was causing a performance bug in OutputCache
which is now fixed.

Stanley was given write access to the Orchard repository, congrats!

Demo by Sipke - updates to Dynamic Forms: client-side validation support for fields is several ways (integrated wit MVC validation). We had a long discussion regarding possible changes and improvements.

Demo by Benedek: a PowerShell script (soon to be open-sourced as part of the Orchard Dojo Library) to check the consistency between the content of .csproj files and the file system both ways.

Demo by Zoltán - Orchard beginner walk-through on TryOrchard: the "Try Orchard!" sites on DotNest now display tips and a walk-through aimed at beginners with Orchard on the front-end and the Dashboard.

The new theme for the Orchard community sites are still work-in-progress by Shaun.

Status: Sipke is still working on the Layouts feature, Piotr refactored ICacheService to be more generic, Redis cache module had a few changes/fixes, Piotr is working on IIS-integrated background tasks, Orchard.Cache is modified by Lombiq to use the .NET
MemoryCache instead of HTTP cache, Identity is now fixed for content items to match one identity instead of all of them by Bertrand (see his blogpost on the topic),
Stanley added a feature for filtering content per user for the TagCloud, Brett extended Orchard.OutputCache so that authenticated requests can be cached too.

Demo by Zoltán -
Tidy Orchard Development Toolkit: an Orchard module that makes it possible to separate your own modules and themes from the original Orchard source. This way you can store the Orchard source you're working with in one central place and use it for different
projects.

A related matter is that in 2.0, some changes will (hopefully) be made to make it easier to work with the Orchard source as a sole developer and in a team too, but the details are still in question.

Demo by Sipke - content rollback: AuditTrail now provides an action to rollback a content item to a previous state.

Sébastien's idea to enhance Background Tasks: Background Task Groups. Adding an Attribute defining the group to your Background Task would make it run in that group to separate BGTasks preventing certain tasks blocking others. BGTaskGroups' run intervals
to be stored in HostComponents.config.

Notes

Status: a lot of abandoned branches were deleted by Sébastien (the production-ready ones were merged into 1.x, e.g. Redis cache), 1.8.x is merged into 1.x.

Sipke modified the AuditTrail module according to the discussion last week and renamed the "Rollback" feature to "Restore". The "Recycle Bin" was also added enabling users to restore deleted content items. Permanent delete
feature was also added that removes the content data too, but it's a bit controversial.

Demo by Benedek: DotNest tenants can now run using different language packages (other than American English): French, Italian, Russian, Simplified Chinese, Spanish and Hungarian. Kudos to the localization
contributors!

Adrian fixed markup and embedding in a lot of places in the Orchard Documentation.

Discussion topic by Sébastien - future of data access: we've enumerated the current ways of getting data out of the DB (pros and cons). There are a few problems with NHibenate that should be addressed. Content Manager API could give abstraction points for
direct SQL-query snippets for performance gain. The usage of a micro-ORM is also a possibility (like in the case of Umbraco with PetaPoco). Discussion to be continued on the forums!

Notes

Status: Sipke is working on the Recycle Bin for AuditTrail, Projection and ReCaptcha elements for DynamicForms added by Sipke, Owin branch is updated by Lombiq, enabling Layouts adds the LayoutPart to the Page content type.

Notes

Status: only Sipke was active last week with fixes and additions to different features (e.g. VectorGraphic media-related content type).

Shipping 1.8.2 is near! We're looking at the possible blocking issues (2 on 1.8.x and 6 on 1.x) to resolve them ASAP. There are ~10 GTG PRs that should be accepted before the release.

The Layouts module is extended with responsive layouts. After a long discussion, the conclusion is that it's the theme's responsibility to define the properties/levels of responsiveness (or whether there should be any responsiveness at all).

Back to the matter of adding LayoutPart to the Page content type: old websites will only be affected when the Layouts module is enabled - in this case the LayoutPart will be added to the Page content type. There will also be an optional upgrade path to
migrate from BodyPart to a HTML layout element (and then BodyPart is removed). For new websites, LayoutPart will be on the Page content type instead of BodyPart (and Layouts will be enabled by default).

Data access: a new, thinner ORM (using a low-level API with only SQL) could be added to work side-by-side NHibernate for better performance (using the same database connection).

Notes

Orchard is now under the umbrella of the .NET Foundation! It brings together all the open source projects related to Microsoft, including the .NET Framework too.
The website runs on Orchard! :)

The vote for this change (from Outercurve to DNF) was made is private by the Steering Committee with unanimous result. The reason for the privacy was mostly PR, because the launch of DNF was not yet public.

It looks like the legal requirement is to include licence note in every source file.

Steering Committee elections are coming up! Candidates have 2 weeks to apply (until the 2nd of December
in a dedicated forum topic), the voting will start after that and lasts another 2 weeks. Everyone who has forum/project activity or attended Harvest can vote: each voter may cast 5
votes, but only one per candidate. Adrian will manage the voting (using GUIDs for anonymity).

CMS Critic awarded Orchard with "People's Choice Award for Best .NET CMS for Small to Medium-Sized Business".

Notes

Status: Piotr is working on Caching API improvements and Redis, Sipke made a lot of improvements in the Layouts and Dynamic Forms module, Sipke added custom Workflow Activities to the Users module.

There's one week left for Candidate submissions for the Steering Committee Elections.

Next Harvest conference: when and where? May or June in Europe. There are some local communities and teams to help with the organization.

1.9 is late! There are bugs to fix, but it's coming soon.

The "political" reasons for hosting Orchard on Codeplex are gone, so moving GitHub is up to the community to decide. Source code and issues will can be migrated easily. Forum is a bit harder, but Discourse would probably work great (and all the
current topics and comments can be migrated too).

Brochard has become a reality: it's an ASP.NET vNext-compatible version of Orchard maintained by Nick.

Demo by Shaun: how to customize the default Kudu deployment script to build Orchard as Precompiled and before deploying it (using source control deployment hooks). See
Shaun's detailed blogpost on this matter.

Demo by Daniel: customizing the IDeliverable website with the Layouts module.

Sunny Seattle

Notes

2:23 Status: Sipke is fixing bugs in AuditTrail, Piotr and Sipke are working on improving the Caching API, Azure libs updated by Sipke.

10:20
Elections: we have 7 candidates (in application order): Sébastien, Sipke, Bertrand, Antoine, Piotr, Zoltán and Benedek.
Community members eligible for voting have two weeks to cast their votes. You can vote anonymously by sending and email to
vote[at]brettmorrison[dot]com as per the instructions
in this discussion.

30:16 Discussion about the recent caching API changes in the feature branches.

36:06 Nick is working on Brochard, the basics of the next main release of Orchard, which works based on ASP.NET vNext.

47:35 Interesting tweets and blogposts of the week: Orchard Seeds is an awesome Visual Studio extension that makes it easier to create themes and modules, Nick extended the Localization module
for retrieving localized versions of content items using the "culture" query parameter.

Notes

00:00 Status.

11:49 Demo by Sipke: how to embed Layouts elements into your HTML-editable elements using the following tokenized syntax: #{Element.Display:ElementName}.

17:07 Demo by Zoltán: "Registration Spam Protector" technical content type added to the
Lombiq.AntiSpam module with the JavaScriptAntiSpamPart. It creates a content item on the fly to display on the registration form to protect against spam bots.

Notes

00:00 - Agenda and join.me setup. 24 participants at the beginning of the meeting! Join.me is quite nice: the screen sharing is extremely reponsive, machines don't get slow running it, but there's no webcam sharing.

13:50 -
Election results - the new Steering Committe is: Sipke, Sébastien, Bertrand, Zoltán and Piotr! Congratulations! The candidates for the Benevolant Dictator position are Sipke and Sébastien. The Committee elected Sébastien as the Benevolant Dictator.

33:55 - Demo by Daniel: performance problems during cache entry regeneration under heavy load. Daniel extended the OutputCache module with a lock mechanism so that simultaneous requests don't
regenerate the same cache entry (and thus slowing each other). Grace time is also added for cache entries to be served while a new entry is being regenerated after expiry. Jorge mentioned that they have a pre-cache/prefetch feature at Onestop to their own
features. Daniel also restructured OutputCacheFilter for better extensibility.