What is Orchard Core CMS and what can this modular framework do for You?

The Modular Multi-tenant CMS Framework

YouTube Video

OrchardSkillsYouTubeThumbNailWhatIsOrchardCore

Introduction

Orchard Core is a redevelopment of Orchard CMS on ASP.NET Core. It is an open-source community-based application framework for building modular, multi-tenant applications. Orchard Core also includes Orchard Core CMS, a Web Content Management System (CMS), that is built on top of the Orchard Core Framework. It allows you to build full websites, or headless websites using GraphQL.

Orchard Core consists of two different targets:

  • Orchard Core Framework: An application framework for building modular, multi-tenant applications on ASP.NET Core.
  • Orchard Core CMS: A Web Content Management System (CMS) built on top of the Orchard Core Framework.

It’s important to note the differences between the framework and the CMS. Some developers who want to develop SaaS applications will only be interested in the modular framework. Others who want to build administrable websites will focus on the CMS and build modules to enhance their sites or the whole ecosystem.

Building Software as a Service (SaaS) solutions with the Orchard Core Framework

It’s very important to understand the Orchard Core Framework is distributed independently from the CMS on nuget.org. You can build modular and multi-tenant applications using just Orchard Core Framework without any of the CMS specific features.

One of our goals is to enable community-based ecosystems of hosted applications which can be extended with modules, like e-commerce systems, blog engines and more. The Orchard Core Framework enables a modular environment that allows different teams to work on separate parts of an application and make components reusable across projects.

Building Website with Orchard Core CMS

Orchard Core CMS is a complete rewrite of Orchard CMS on ASP.NET Core. It’s not just a port as we wanted to improve the performance drastically and align as close as possible to the development models of ASP.NET Core.

  • Performance. This might the most obvious change when you start using Orchard Core CMS. It’s extremely fast for a CMS. So fast that we haven’t even cared about working on an output cache module. To give you an idea, without caching Orchard Core CMS is around 20 times faster than the previous version.

  • Portable. You can now develop and deploy Orchard Core CMS on Windows, Linux and macOS. We also have Docker images ready for use.

  • Document database abstraction. Orchard Core CMS still requires a relational database, and is compatible with SQL Server, MySQL, PostgreSQL and SQLite, but it’s now using a document abstraction (YesSql) that provides a document database API to store and query documents. This is a much better approach for CMS systems and helps performance significantly.

  • NuGet Packages. Modules and themes are now shared as NuGet packages. Creating a new website with Orchard Core CMS is actually as simple as referencing a single meta package from the NuGet gallery. It also means that updating to a newer version only involves updating the version number of this package.

  • Live preview. When editing a content item, you can now see live how it will look like on your site, even before saving your content. And it also works for templates, where you can browse any page to inspect the impact of a change on templates as you type it.

  • Liquid templates support. Editors can safely change the HTML templates with the Liquid template language. It was chosen as it’s both very well documented (Jekyll, Shopify, …) and secure.

  • Custom queries. We wanted to provide a way for developers to access all their data as simply as possible. We created a module that lets you create custom ad-hoc SQL and Lucene queries that can be re-used to display custom content, or exposed as API endpoints. You can use it to create efficient queries, or expose your data to SPA applications.

  • Deployment plans. Deployment plans are scripts that can contain content and metadata to build a website. You can now include binary files, and even use them to deploy your sites remotely from a staging to a production environment for instance. They can also be part of NuGet Packages, allowing you to ship predefined websites.

  • Scalability. Because Orchard Core is a multi-tenant system, you can host as many websites as you want with a single deployment. A typical cloud machine can then host thousands of sites in parallel, with database, content, theme and user isolation.

  • Workflows. Create content approval workflows, react to webhooks, take actions when forms are submitted, and any other process you'd like to implement with a user friendly UI.

  • GraphQL. We provide a very flexible GraphQL API, such that any authorized external application can reuse your content, like SPA applications or static site generators.

Different website building strategies

Orchard Core CMS supports all major site building strategies:

  • Full CMS. In this mode, the website uses a theme and templates to render your content, aiming for little to no custom development at all.
  • Decoupled CMS. The site starts off blank, apart from the content management back-end. You create all the templates you need with Razor Pages or MVC actions and access your content via the content services.
  • Headless CMS. The site only manages the content, and you create a separate application that will fetch the managed content using GraphQL or REST APIs.

Releases

Orchard Core's first GitHub commit was on November 19, 2014.

Orchard Core 1.0.0-pre-alpha

Release dates: November 19, 2014 - January 17, 2017

Enhancements

  • Setup
  • Multi-tenancy
  • Theming
  • Shapes
  • Document database with migrations
  • Declarative dependency injection
  • Navigation API
  • Event bus
  • Authentication & Authorization
  • Content Items API
  • Content Parts and Content Fields
  • Content Types module
  • Managing content types and settings
  • List module
  • Modules support
  • Deferred tasks
  • Resource manager
  • Placement files
  • Background tasks
  • Recipes

Orchard Core 1.0.0-alpha

Release date: January 17, 2017

Enhancements

  • Autoroute
  • Tokens
  • Deployment (Import/Export)
  • Tenants management
  • Modules management
  • Indexing/Search (missing settings)
  • Homepage
  • Settings
  • Live preview
  • Body editors
  • Markdown editor
  • Menu
  • Collapsible admin menu
  • RSS API
  • XmlRpc/MetaWeblog API
  • Scripting (JS)

Orchard Core 1.0.0-beta1

Release date: January 22, 2018

Enhancements

  • Updating to ASP.NET Core 2.0.1 #1223
  • Create static file provider feature #1222
  • Skip ImageShape when no resize command is set #1206
  • Adding IsNew on BuildEditorContext #1194
  • Updates liquid / templates docs. #1188
  • Support X-Forwarded-Host for tenants #1185
  • build_display filter also allow a JObject input. #1181
  • Update LayerMetadataWelder.cs #1180
  • html_classify liquid filter. #1177
  • Fixes matching tags in Features.cshtml #1176
  • Markdownify liquid filter. #1175
  • Fixes reloading lucene query editor on error #1173
  • Update LayerMetadataWelder.cs #1174
  • Fixing query editor #1171
  • Fixing tether url #1168
  • Refactoring prefix generation #1161
  • Working on build_display liquid filter. #1142
  • Unused lines in modules csproj files. #1160
  • Fixes razor pages if no shell feature manager. #1159
  • Update README.md #1155
  • Add missing The Agency Theme thumbnail #1144
  • Invoking IModularTenantEvents.Terminating events #1133
  • Creating ContentPart alternates automatically #1135
  • Issue a ChallengeResult for admin pages #1132
  • Update vscode settings #1126
  • Allows to congifure a global tenant middleware. #1113
  • Fix agency.recipe.json's hardcoded contentItemIds #1122
  • Prevents recipes from being copied twice. #1114
  • Adding support for ORCHARD_APP_DATA environment variable #1111
  • Fixed spaces for checkbox #1110
  • Update README.md #1107
  • Skip the copy step of content/razor/liquid files when there is none. #1106
  • Fixes null reference when ModularPageRazorFileProvider is no part of a composite. #1102
  • Allowing async drivers #1084
  • Don't show irrelevant menu items #1090
  • Update LiquidViewFilters.cs #1067
  • Fix parsing if default po header is added to po file #1088
  • Changes admin menu so that it is displayed on status codes other than 3xx #1079
  • Add liquidTemplate rendering in HtmlField. #1066
  • Adds User extension example to Demo module #1060
  • changed string encoding in template preview #1006
  • Displays list of IUsers as SummaryAdmin #1055
  • Makes IUser extensible #1054
  • Fixing part display name edition #1057
  • Fixes packages import files. #1053
  • Typos in Layout.liquid #1042
  • Adds All Features deployment step #1034
  • Removed obsolete project #1031
  • Fixes a couple of user validation issues #1028
  • Renaming Bundle to Application #997
  • Update tag helper context attributes. #1001
  • Provides default route names for razor pages. #1002
  • Renaming media_url to asset_url to match Assets #1003
  • Setup page handles no recipes available gracefully #1019
  • Reusing compiled views across tenants #999
  • Prevent MVC from populating an ApplicationPart for each module. #991
  • Building docker images on linux #990
  • Working on ILiquidTemplateEventHandler. #984
  • Set Blog BodyPart Position after AutoroutePart #978
  • Cleanup code #974
  • Pages in any extension subpaths + path checkings. #967
  • Creating Docker Hub image from CI #968
  • Renaming OrchardCore #966
  • Unused themeManager service in this part of code. #954
  • Remove InvariantNumberLiteral. #958
  • Fixes NLog and features warnings. #955
  • Uses "Microsoft.NET.Sdk" for modules #956
  • Remove cms.recipe.json #952
  • Fixes setup. #953
  • Razor pages #943
  • PO Files and Pluralization support #732
  • Add more flexibility to Users/Roles (Merge Users branch into Master) #810
  • Removing Event Bus #946
  • Open id scope #941
  • Renaming "Fluid" to "Liquid" #939
  • Fixes scope validation in OpenId. #940
  • Optimizing liquid tag helpers support. #937
  • NET Core 2.0 migration #887
  • The Agency #933
  • Fluid view #881
  • Improve blog recipe #915
  • Adding support for media that are not images #911
  • Better preview features #897
  • Fixes dynamic content id in CMS recipe #896
  • Media and Templates #889
  • Adding missing services for multi-tenancy #884
  • Manage themes from admin #781
  • Auto watching module project razor files and static files. #806
  • Fixes Theme ordering #867
  • Update ThemingFileProvider.cs #868
  • Update RazorPage.cs #869
  • Update OrchardCore.Cms.csproj #865
  • Fixes #851 #861
  • #850 Support service suppression #853
  • Added 'Configuring Certificates' section OpenId README #845
  • Module startup classes now get the same instance of service collection so that services aren't added multiple times to the tenant container. #843
  • OpenId UserInfo endpoint hint and POST #846
  • upgrade nlog and yaml #833
  • #829 Updated Orchard.Cms.Web to publish Nlog.config #835
  • Fixes issue #830 #831
  • Moving settings to use asp configuration properly. #826
  • Using Fluid instead of DotLiquid #823
  • Prevent Setup if the password is invalid #819
  • Add an overload to Shape method in DisplayDriverBase #824
  • Fixing the shape factory events #816
  • Fix log filename format #820
  • Updating Castle.Core version #815
  • Adding RequireFeaturesAttribute #795
  • Adding Orchard.Liquid module #785
  • Added an overload of Combine method #805
  • Add ability to remove MenuItems #780
  • Add Messages zone into TheTheme #800
  • Missing permission check #799
  • Refactor IContentItemIdGenerator #796
  • Fixing deferred task database locking #782
  • Fixing tests #784
  • Upgrade Libs #779
  • Watching Modules / Themes razor files #686
  • Validating ClientSecret using password validators #778
  • Sql Queries #771
  • Use DateEditor value to initialize CommonPart.CreatedUtc #774
  • Fix openid settings jquery selectors #769
  • Updated OpenIddict version and Nuget sources #773

Orchard Core 1.0.0-beta2

Release date: June 22, 2018

Milestone

Beta2

Enhancements

  • ResetPassword wrong redirect #2043
  • Removing Html migration #2047
  • Updating to ASP.NET Core 2.1.1 #2040
  • Improving templates #2039
  • Fixes that Media table view does not resize images #2036
  • Flickering of submenu on page reload Fixes #2033 #2034
  • Using a single Nuget templates project. #2026
  • Migration for BodyPart to HtmlBodyPart name changes. #2025
  • Fixes #2023 media added twice on several markdown editors #2030
  • Automatically reload the current tenant when the OpenID client/server/validation settings are updated #2028
  • Fix admin left menu by using click event instead of hover #2024
  • Clearing ModelState between TryUpdateModelAsync calls #2021
  • Fixes Html and Markdown bodies #2022
  • Rename BodyPart to HtmlBodyPart #1933
  • Removing package version #2015
  • Update templates project files. #2017
  • Dotnet new templates doc #2018
  • Delay a little the hover flyout on collapsed left menu #1990
  • OrchardCore dotnet new templates #1877
  • Forms Module #1821
  • Set order explicitly DataProtection #1992
  • AddOrchardCms overload with a configure action. #2005
  • Ensuring settings drivers check permissions #2009
  • Fix broken path on media's drag-thumbnail #2013
  • Add move cursor to field list and part list on edit content type view #1991
  • Custom Activity Title #2008
  • Update dependencies to latest versions #1986
  • Removing restriction which activities are startable. #2002
  • Remove admin footer #1996
  • Migrate to OpenIddict RC3 #1787
  • Update Modules documentation #1995
  • Unused service #1985
  • Ensure Owner is not null #1979
  • Some csproj updates. #1973
  • Fix NLog orchard-tenant-name returns None. #1974
  • Update launchSettings.json #1977
  • Update AdminDashboard.cshtml #1980
  • Edit spelling and language, some formatting #1975
  • Moving security services to AddOrchardCore and isolating NotifyFilter #1971
  • Simplifying and documenting Widget templating #1956
  • Adding active menu items script #1959
  • Documenting theming #1968
  • Fixes LocalClock async api. #1962
  • Fixes BlobFileStore.GetDirectoryInfo returns a directory even if it does not exist #1963 #1964
  • Use standard AddIdentity #1961
  • TheTheme Content alternate #1957
  • Fix that media grid layout is broken when using azure blob storage. #1954
  • Fix Media Library error with AzureBlob file storage #1653 #1955
  • Update Getting Started section #1952
  • Fixing menu shapes alternates #1951
  • Remove dependencies on removed modules. #1950
  • Open id connect Client #1622
  • Fixes previewing when using the trumbowyg editor. #1949
  • Content filters #1923
  • TheTheme Footer #1935
  • Fixes trumbowyg preview is out of sync #1948
  • Update Dependencies.AspNetCore.props #1947
  • Bootstrap switch editor in css #1885
  • Fixing Microsoft.AspNetCore.TestHost package name #1946
  • Fixing ApiExplorer reference #1945
  • Adding DefaultTenantOnly on feature Manifest #1931
  • Fixing preset tenants Setup #1941
  • Media UI #1944
  • DateField implementation #1929
  • Placement documentation #1939
  • Autoroute documentation #1934
  • Menu documentation #1936
  • Resources documentation #1938
  • Using SixLabors.ImageSharp from nuget.org #1930
  • Hides connection string e.g if sqlite preselected. #1926
  • Migrate to netcoreapp21 #1902
  • Liquid Request.Form now handles requests without Form values #1905
  • Tenants configurable from the app #1766
  • Remove dependency on Indentity #1896
  • Update CommonPart-Date.Edit.cshtml #1897
  • CreatedUtc Datetime Editor #1856
  • Fix jQuery error in Sql Query admin #1880
  • Update TheTheme to Bootstrap 4 #1883
  • Autoroute Permalink: Display Site.BaseUrl and View button #1879
  • Edit Owner #1881
  • Password feature in Users module #1789
  • Makes SQLLite the default SQL provider #1887
  • Fixes BackgroundTaskService.Terminate(). #1888
  • TimeField implementation #1858
  • Fixes 2 use cases when resolving an IEnumerable of a given service type. #1644
  • Use IHttpContextAccessor to hold the IUpdateModel #1695
  • Updating RequestLiquidTemplateEventHandler to support {{ Request.Form.Keys }} #1765
  • Fixing view error and renaming ContentTypeDeploymentStep #1804
  • Embedded file last modified = last write time of the assembly file. #1867
  • User TimeZone feature #1816
  • Adds Azure Storage data protection #1825
  • Only add settings.txt as a config source if it exists #1854
  • Dynamic cache docs #1855
  • Display the draft of content items for a ListPart in admin #1860
  • Fixing LogTask activity #1861
  • Fix admin footer size and resize responsive behavior #1818
  • Fix launch settings #1840
  • Fixing resource cdn urls and integrity #1843
  • DateTimeField implementation #1828
  • Auto expand leftmenu #1827
  • Update to .NET Core SDK 2.1.200 #1839
  • Update MVC module order #1830
  • Update Azure Media Startup order #1829
  • Dynamic cache #1624
  • Prevent data protection logging errors on setup. #1814
  • Nodatime #1659
  • Add footer in admin and display version #1706
  • Fixing that generated Alias would not be persisted #1797
  • Adds alternate and wrapper attributes to the BaseShapeTagHelper. #1792
  • Updating ContentDefinitionDeploymentStepDriver #1806
  • Fixing handling of updating content fields with empty values #1801
  • Fixing default alias part setting pattern #1798
  • Applying correct logging practices #1785
  • Added null check to content item when indexing #1802
  • Functional tests #1782
  • Adjusting build warnings #1780
  • Package management cleanup #1779
  • User Task Activity #1748
  • Fixing media module's infinite loop on ie11 #1751
  • Number Fields editors #1763
  • Updating LiquidPart.Edit.cshtml #1770
  • Updating flows.edit.css #1771
  • Improve hover on submenus #1772
  • Updating HttpWorkflowController #1778
  • Streamline centalized package version management #1777
  • Add generated js and css files to wwwroot #1738
  • Activate a shell which may do migrations in an inner scope. #1660
  • Reset Password #1662
  • Fixing ForEach, For and Notify activities #1728
  • Leftbar collapsed by default on small screen #1732
  • Adding field alternate targeting field type and content type #1729
  • Various Workflows tweaks and bug-fixes #1700
  • Updating workflows verbiage #1705
  • Null checking in AutorouteRoute.cs. #1698
  • Upgrade to Bootstrap 4.1.0, Popper 1.14.3, Font awesome 5.0.9 #1668
  • Workflows #1378
  • Remove hardcoded Display Route for ContentItems #1219
  • Confirmation message on disabling a feature, with dependents features if any #1672
  • Minimizable leftbar #1667
  • Adding IStartupFilter support #1675
  • Add AccessAdminPanel to other roles than administrator #1678
  • Fix that the a media is still available on the page after deleting it. #1686
  • Reload current tenant when SmtpSettings are changed #1677
  • Allow to change BaseUrl SiteSetting #1663
  • Fixing Unprotect exception #1657
  • Update ImageSharp.Web to beta3 #1656
  • Fixes inner recipes #1609 #1642
  • Clicking cancel on edit-create template always returns to list of templates #1647
  • Fixes that adding an invalid named part displays success message #1649
  • Fixing Fixes Expand / Collapse buttons for widgets #1651
  • Fixing typo in AdminAttribute.cs #1652
  • Move deferred tasks at the very end of the request and out of its scope #1643
  • Split the OpenID module into 3 distinct features and introduce the Antiforgery/Data Protection modules #1602
  • Update Microsoft.AspNetCore.All 2.0.6 dependencies #1628
  • Adding port matching and fallback option to RunningShellTable #1640
  • Implement IUserLoginStore<IUser> #1481
  • Clearing the shell context dependents upon release #1639
  • Validate part name #1638
  • Implement shell dependencies #1633
  • Fixing sql string formatting #1616
  • Fixed error getting token #1618
  • Remove unnecessary class #1606
  • Fix HTTPS module admin menu item not showing in the configuration menu #1605
  • Fix Media browser #1595

Orchard Core 1.0.0-beta3

Release date: April 3, 2019

Milestone

Beta3

Enhancements

  • Redirecting user to confirmation page after password reset request. #3429
  • Revert "Call PublishAsync instead of using VersionOptions. (#3420)" #3427
  • Fixing Media Liquid Filter 'resize_url' arguments #3425
  • Fix codemirror.css path #3399
  • Improve create button on ListPart #3412
  • small fix on dotnet restore #3423
  • Call PublishAsync instead of using VersionOptions. #3420
  • Add in crop for Resize Mode #3411
  • Adding localization file guide #3397
  • Fixing DataAnnotations localization #3396
  • Fix build for docker #3395
  • Add CodeMirror autorefresh #3394
  • HTML Escaping - Change 'Raw' to 'raw' #3393
  • Add return url to add and edit field views to make them usable from different sources. #3390
  • Add screenshots to create cms guide. #3387
  • Missing description and name in manifests #3385
  • Fixing route #3386
  • Add new guide about creating cms application #3379
  • Add new guide about adding admin menus. #3378
  • Fix Get not returning changes made be Apply #3365
  • Defining Menu parts #3367
  • Replaces existing arrays when updating content items via script #3357
  • Rollback the key from "WorkflowExecutionContext" to "Workflow" #3361
  • Implementing content type permissions #3354
  • Added graphql query sample #3285
  • Update README.md #3262
  • Prevent loading all workflows in the startup #3320
  • Propose current port as SSL Port (#3026) #3350
  • Use NullStringLocalizer by default in the CMS #3344
  • Fixing new content item edition #3337
  • Fix BlobFileStore #3336
  • Only add a user claim when it is not present #3326
  • Updating fluid #3284
  • Update CacheExpiresSlidingTag.cs #3323
  • Update ShapeCacheTag.cs #3322
  • Remove temporary reconfiguration of google options #3321
  • Fix bug workflow.JavaScriptWorkflowScriptEvaluator #3314
  • Reusing the same part instances #3310
  • Add guides section to docs #3309
  • Fix wrong language label of this repository #3303
  • Fixing LoadingAsync for known parts #3308
  • Setting liquid encodings explicitely #3315
  • Fixing plural translation exceptions #3316
  • Improving functional tests log #3298
  • Allows to get more application's module file infos. #3296
  • Use flexbox for content alignment on content picker #3295
  • Fix the issue of workflow-recipe #3290
  • Fix openid certificates on Azure App Services #3255
  • Allow to add alternates in OnProcessing #3277
  • Refactoring Media validation #3282
  • Revert "Fixing taxonomy recipes #3253
  • Represent OIDC authorities as System.Uri instances to perform automatic normalization #3269
  • Disable Layers on Admin themes #3272
  • Remove unnecessary fields from content picker view model #3268
  • Remove unused OrchardCore.Title dependency from OrchardCore.Media #3266
  • Fix icon picker initialization #3271
  • Using default content icon for non-image files #3256
  • Update content field readme #3264
  • Fix typo in icon picker style tag #3265
  • Simplifying theme template #3254
  • Fixing taxonomy recipes #3253
  • Update SixLabors.ImageSharp.Web Version 1.0.0-beta0007 #3245
  • Disable encoding for templated queries #3224
  • Add "property" attribute to the meta tag helper. #3211
  • Fix null error when BodyAspect is not populated #3230
  • Initialize content picker field with empty array #3247
  • Allow theming for Login/Registration/ResetPassword #3218
  • Adding configurable upload limits #3221
  • collapsed where statements fixes #3234 #3235
  • Fixed introspection for contentitemtype ignored fields #3238
  • Add jquery as dependency of icon picker script #3242
  • Adding Step variable to the For Loop #3248
  • Added claims to the list of available properties #3236
  • Fix null reference exception in MediaField.cshtml #3228
  • Fixes part removal in where if the index has multiple aliases #3217
  • Fixes that graphql where statements have a suffix of part on partnames #3206 #3207
  • Adding shape_cache liquid tag #3194
  • Fixing IndexingTaskManager table prefix usage in FlushAsync #3192
  • Adding Hide to the Content Item which is what I actually wanted #3193
  • Fixing IndexingTaskManager table prefix usage #3190
  • Add the hidden option #3152
  • Fixes plural localization in the DispayManagement project #3185
  • Updating dependencies #3181
  • Add OpenID config input hints for redirect URIs #3179
  • Make IRecipeExecutor a tenant singleton. #3127
  • Fix assets app position when a warning is visible. #3173
  • Fixing package references #3175
  • Take the PathBase into account. #3094
  • Fix z-index of child media modals #3149
  • Unecessary calls to AddMvc() and AddMvcCore(). #3154
  • Ensure meta tags are rendered self closing #3159
  • Remove interpolated strings from calls to IStringLocalizer #3160
  • NavigationBuilder AddAsync(). #3151
  • Updating YesSql #3134
  • Fixing stackoverflow when displaying media #3132
  • Fix connection usage not supplying transaction during upgrade from beta 2 #3137
  • Fixing connection usage #3131
  • Add Admin Attribute #3124
  • Prevent nested containers during setup step #3120
  • Fixes UserContext being null for collapsed fields #3121
  • Fixing concurrent execution of fields resolution #3119
  • Adding Visual Studio extension and training demo module references to index.md #3102
  • Updating yessql #3099
  • Missing references and cleanups. #3093
  • Fix that media modal is not shown when trumbowyg is full screen #3116
  • Use accepted values for resized images #3113
  • Manage Culture admin page #3101
  • Layer rule based on the current culture #3108
  • Collapse fixes #3112
  • Deleting the web.config file #3092
  • Added validation for AliasPart to test for duplicate aliases (#2310) #3095
  • Should Filter On Multiple Indexes with the Same Alias #3088
  • Option to collapse parts #2842
  • Adding missing ContentPart.TermAdmin template #3091
  • Fixes application view paths. #3087
  • Multiple alias names with the same index #3084
  • Adding configuration support #2824
  • Tweak to #2879 - remove compiler directives #3081
  • Replace localization culture delimiter #3076
  • Add Crowdin badge #3059
  • Added unpublish workflow event #3079
  • Fixes #2879 #3077
  • Fixing index providers stack overflow exceptions #3071
  • Fixing liquid parsing exceptions #3072
  • Fix TitlePart XmlRpc update issue #3051
  • Retain display text filter value #3058
  • Adding graphqk contentItems property to ListPart #3057
  • added Microsoft.AspNetCore.Mvc PackageReference to Google Module #3064
  • Added DisplayText filter for Admin/Contents/ContentItems #3036
  • Adding TitlePart migration #3047
  • Updating Fluid #3042
  • Fixing model binding #3046
  • Updating 2.2.1 packages #3044
  • Added mising updatedAsync content handler #3045
  • Removing classes related to content management #3040
  • Remove SqlProvider filter from tenants admin #3030
  • Tenants management improvements #3009
  • Prevent Notifier from displaying duplicite messages #3017
  • Fix view names for Admin menu deployment step #3021
  • Remove the testing mode feature and replace it by automatic signing certificate generation #2886
  • Google Analytics #2934
  • Change Smtp DefaultSender input to text #3003
  • Patching Google+ #2996
  • Introduce a role service relying on Identity's RoleManager and update the OpenID module to use it #2872
  • Localizations files search paths #2986
  • Fix TextField Editors options #2994
  • Fixes admin menu animations #2992
  • Add documentation on adding html attributes on img_tag liquid filter #2989
  • Basic health check #2976
  • Renaming Admin Tree to Admin Menu #2923
  • Optimize modules loading. #2972
  • Fixes multiple tenant shells initialization. #2981
  • Prevent liquid tag helper conflicts. #2973
  • Fix permission issue #2979
  • Fixed importing roles from setup recipes using existing documentation #2969
  • Added the gap between "Add User" button and "Search" box in mobile view. #2938
  • Added authorization check prior to creating new document. #2968
  • Text field editors #2946
  • #2928 fixed Azure blob storage basepath issue #2948
  • Fix Coming Soon: Missing Media feature #2950
  • Fixes url host and prefix in bg tasks #2957
  • Use AspNetCoreModuleV2 in mvc application. #2958
  • Fixing small UI issues #2961
  • Coming soon: Fix paths #2937
  • Fixes Razor Pages and Routing issues since 2.2 #2940
  • Google Authentication #2920
  • Fix media deployment #2922
  • Replace "facebook" by Azure AD #2924
  • Fix overflow in media modal #2927
  • Fixing Workflow items z-index #2921
  • Design : Admin Menu #2819
  • Admin Tree : fine tuning styling #2919
  • Fixing workflow edition #2914
  • ClockExtensions creates dateTimeUtc variable and ignores it #2913
  • Adding response compression module #2911
  • Placement match providers #2864
  • Building only merge commits #2907
  • Fix text wrap for long filenames in media table view #2906
  • Improve the HTTPS module #2719
  • Fixing popper.js usage #2897
  • Revert html body part's wysiwyg toolbar to be always visible #2905
  • Appveyor script maintenance #2899
  • Update assets references to use app-relative paths #2893
  • Fixing NRE when reading stereotype #2888
  • Fixes vue multiselect z-index #2896
  • Fixing Prefix leaks in ContentPartDisplayDriver #2887
  • Remove closing tags from <input> self-closing element #2883
  • Fixing OpenId applications creation #2884
  • Fixing vulnerability warnings in themes #2868
  • Registering Manage tenants Permissions #2871

Orchard Core 1.0.0-rc1

Release date: September 24, 2019

Breaking Changes

  • .NET Core 3.0

Milestone

RC

Enhancements

  • Update Orchard Core to rc1 #4370
  • Allows shared views across tenants. #4382
  • Useless registration #4366
  • Using widgetlist.edit.css for Flow and Layers #4378
  • OrchardCore.Translations.All-beta -> OrchardCore.Translations.All-rc1 #4371
  • Fix razor options when no 'refs' folder exists. #4379
  • Fallback to Detail display type for bag parts #4376
  • Loading all po files from localization folders #4375
  • Update to .NET Core 3.0 #4373
  • Msbuild target to copy translation files. #4346
  • ModifiedUtc & PublishedUtc should take into account when recipe runs #4279
  • Add contentitem tag helper and liquid tag #4360
  • Fixes MiniProfiler #4357
  • Support for validation error class #4355
  • Handle standard Startup class #4348
  • Adding links to videos for decouple and headless #4362
  • Fixes #4342 #4363
  • Fix List Items route #4350
  • Import model state IPageFilter implementation for Forms module. #4337
  • Upgrade Fluid #4344
  • Register Content Parts and Fields in ContentOptions #4335
  • Security Critical Permissions #4267
  • Introducing FullTextAspect #4012
  • Format dependent features in disable feature dialog #4278
  • Regression fix: bootstrap confirm modal #4336
  • Fixing OrchardCore.Localization dependencies #4320
  • Removing dependencies on NETStandard.Library #4328
  • Remove workflow-menu.css and remove dup'd images. #4325
  • Add translation metapackage to Cms.Targets #4323
  • StringBuilder best practices #4318
  • Fixes ConfiguredFeaturesShellDescriptorManager registration. #4322
  • Prettify Admin Menus page #4307
  • Prettify Queries page #4305
  • Add alert if no tenants found on search result #4302
  • result -> results #4314
  • Add alert if no features found on search result #4301
  • Add alert if no recipes found on search result #4300
  • Regression fix : ContentPickerField #4282
  • Page endpoint priority. #4299
  • LangVersion property is no more necessary #4295
  • Update ASP.NET dependencies to 3.0 RC1 #4294
  • Add default paging to GraphQL queries #4291
  • Updating default logging settings #4296
  • Fix ResourceManager dependency resolution #4293
  • WIP Optimize ResourceManager #4292
  • Migrate all Content Type / Part / Field Settings to Settings<T> #4166
  • Update vscode launch.json for core 3.0 #4290
  • Fix permission issue with PublishContent #4286
  • Fixes HomeRoute if no home route. #4284
  • CultureAspect must work for localization & content localization modules #4258
  • Diagnostics ISartupFilter to add a middleware before the routing one #4264
  • Update ImageProvider to work better with new ImageSharp version #4254
  • Use AddInitialRequestCultureProvider #4266
  • Update MediaField-Attached.Edit.cshtml #4269
  • Fixes razor pages and autoroutes conflicts. #4272
  • Update dependencies #4274
  • Fix media table valign #4276
  • Fixes NotFound page if not overridden in the current theme. #4263
  • Prettify Roles page #4240
  • Content Part creation : regression fix #4262
  • Migration to dotnet core 3.0 #3398
  • Some performance tweaks #4251
  • Prettify Users page #4241
  • Allows core shapes to be overridden #4210
  • Use proper BS4 classes for the login remember me checkbox. #4245
  • Upgrade ImageSharp.Web to v1.0.0-beta9 #4167
  • Liquid filter and tags to mutate shape properties #4193
  • Fix VueMultiselect issue with Widgets #4225
  • Azure Blob w/resizing #4025
  • Prettify content parts page #4221
  • Prettify content types page #4220
  • Using strongly typed content type setting #4180
  • Customize bootstrap confirm modal #4181
  • Add user arguments to Login events #4182
  • Update Https and Reverse Proxy setting sort orders #4189
  • Access to dynamic Reusable part. #4192
  • Add permission to ContentCulturePicker setting #4194
  • Use bootstrap confirm modal in assets page #4207
  • Fix TextAreaPart not using submitted form value #4218
  • Add CultureInfo to Liquid TemplateContext #4219
  • Import jquery-ui-override into TheAdmin.scss #4196
  • Update build dependencies + npm i + build #4187
  • Fix# 4168 : WidgetsListPart - Existing widgets are removed due to Null Zone #4183
  • Prettify recipes page #4179
  • Prettify Features page #4176
  • Change models namespace everywhere #4173
  • Fix typo on GitHub menus #4066
  • Remove rtl generation from front end theme related assets #4171
  • Polish Tenants page #4156
  • Show/hide external logins in SaaS recipe #4152
  • Make OrchardCore.ContentFields.Indexing.SQL require OrchardCore.ContentFields #4149
  • Clean double encoding #4150
  • Taxonomy field required validation doesn't work with unique options #4145
  • Apply cache control headers to non-resized images or other assets served from the media file store with the Static File Middleware #4135
  • Some menu tweaks #4132
  • Add Properties Dictionary to IShape interface #4131
  • Editor direction should respect the localization part culture #4039
  • Content fields indexing #3133
  • Increased graphql default maxdepth to allow graphiql introspection query to run. #4144
  • Remove duplicate resource settings #4137
  • Make setting the page title format accessible to site administrators #3401
  • Add LocalizationSetContentPickerField #3819
  • List localization #3891
  • Remove unnecessary dependencies #4072
  • Sort groups alphabetically on Admin Features page #4128
  • Workflows Internationalization #3634
  • Handle UnauthorizedResult (#3209) #3215
  • Add README.md to health check #3010
  • Add support for typed shape tag helper properties #4114
  • Remove IHttpContextAccessor from ResourceManager #4120
  • Add example for ContentPickerField #4122
  • GraphQL: Don't include ignored contenttype fields in where filters #3832
  • Rollback transaction during indexing #3823
  • GraphQL - allowed configuration for max depth/complexity and fieldimpact #3879
  • Fixes Pager in the home page #4115
  • Update run-code-on-startup example and formatting #4117
  • Add ORCHARD_APP_DATA Environment Variable section #4116
  • Refactor culture picker shape #4111
  • Localization files publishing #4088
  • Add Compare Attribute to PasswordConfirmation and validate ModelState in AdminController #4099
  • external links on README.md #4103
  • AliasPart index size #4098
  • Add liquid example for ContentCulturePicker #4101
  • README--add tutorial #4108
  • Documenttion of search query in new tab #4102
  • Implement IUserClaimStore to enable individual user claims. #4070
  • Localization Bugfix #4078
  • More async calls #3930
  • Move Localization folder out of App_Data #4074
  • Predefined List blank option fix #4068
  • Lucene indexation : convention on null field values #4062
  • add more detail step on README.md of OpenId #4057
  • Fix datepicker UI issue #4050
  • Fixes ToPascalCase #4060
  • Improve Kebab-casing performance #4054
  • Small refactors to Resources CDN and settings #4044
  • Using StringBuilder pooling from Fluid #4047
  • Updating Jint and Fluid #4048
  • Fix localization context issue in OrchardCore.Templates #4042
  • ContainedPart Index renaming #4035
  • Add a core CMS meta package #4027
  • Editing while reading: add a missing backtick and fix some typos #4033
  • Add sort on multiple fields for Lucene Queries #4029
  • Minor fixes #3922
  • BooleanField styling should match other fields #4024
  • Fix localized datepicker UI issue #4002
  • NullStringLocalizer shouldn't ignore formatted strings #4019
  • Indexes a Content.ContentItem.Parent field in Lucene for ContainedPart. #4017
  • Changing $zindex-sticky to 1000 instead of 1020 #4023
  • Display the workflow date with current timezone #4003
  • Adds Liquid Razor Extension Method & Markdown Helper parses liquid #3992
  • Added liquid support to markdown graphql query. #4007
  • Documentation to explain how to generate Po files #3998
  • Change Load Order of AntiforgeryToken #3993
  • Save hint text for link text #3995
  • Remove 'json' specified from GraphQL MD codeblocks #3994
  • Ability to extend/clear ContainedContentTypes. #3978
  • Updating yessql #3988
  • Make registered FB scripts virtual folder and tenant aware. #3932
  • Show connectionString hint for all data providers #3484
  • Plural extension should work with NullStringLocalizer #3933
  • Change label to "None" #3965
  • IShellConfiguration documentation #3967
  • Unpublish content should set modified datetime #3972
  • Admin scripts cache busting #3960
  • Bootstrap / Popper version & cdn-integrity fixes #3968
  • Reload resource settings on update #3971
  • Graphql - make schema generation thread safe #3935
  • Bring back MediaSizeLimitAttribute #3961
  • Add permissions to localization & reverse proxy settings navigation #3779
  • Update style tag helper to use depends-on instead of dependencies #3953
  • ContentCulturePicker - Add ability to set Localization Cookie #3894
  • Add CustomSettings C# documentation #3946
  • Run AdminAttribute before any global filter with a default order of 0 #3915
  • Vue.js use proper CDN #3920
  • fix NRE on YoutubeFieldDisplayDriver when the field is not required #3907
  • NumericField (selectbox) not required fix #3909
  • Removing unnecessary styling on ReCaptcha #3911
  • Secure ContentPickerController with Admin filter #3896
  • ZoneOnDemand.AddAsync(). #3864
  • Add executeQuery GlobalMethod #3903
  • Role based permissions to display admin menus #3875
  • Prevents an antiforgery issue on setup. #3622
  • Fixes async call. #3898
  • Support single JTokenType.Object in BooleanQueryProvider #3888
  • Add permission for SearchController Api #3883
  • Prevent collisions with mvc scripttaghelper #3886
  • Update theme templates to use liquid filter on html fields #3893
  • LocalizationSettings recipe step documentation #3895
  • Adds asp-append-version support #3581
  • Content Culture Picker #3813
  • Localize setup screen #3512
  • Update Permissions #3816
  • Add pathbase. #3857
  • Add a .vsconfig file for easier provisioning when using VS 2019 #3691
  • Added grouping of widgets to their site layer. #3873
  • Always do a complete Liquid contextualization. #3851
  • Small improvement to ImageSharp pipeline #3854
  • Set content types during azure blob creation #3856
  • Fix misspelling (occured -> occurred) #3858
  • Implemented siteLayers graphql query. #3861
  • Implemented siteCultures graphql query. #3863
  • PluralRule is null for locale not recognized. #3836
  • Trumbowyg Semantic Defaults - div : div #3843
  • Rename Package.json -> package.json #3822
  • updated getting started guide, and remove missing file from OrchardCore.sln #3830
  • Create correct ContentZone for tab support when UpdateEditorAsync is called #3845
  • Clarify that Differentiator is the menu name (title). #3424
  • Order ContentPicker items by DisplayText #3808
  • Fixes WidgetsList delete #3814
  • Localize date picker #3707
  • Log invalid SMTP certificate info #3806
  • Return HasPublished in ContentPickerResult when used with Lucene. #3804
  • Update Permissions.cs #3786
  • Added media assets graphql query support. #3784
  • Add 'view' button to media library items #3787
  • Remove dead code #3783
  • Fixes liquid controller views. #3777
  • Link to the rendered pages on readthedocs #3785
  • Fix broken link in ContentLocalization when no cultures are installed #3782
  • Add documentation for overriding Views #3778
  • Async tweaks #3770
  • Working on shell scopes. #3178
  • Update shell container creation. #3467
  • Clear content item element cache when updating a field #3764
  • Extend Facebook Documentation #3774
  • Non awaited async call #3769
  • Update SimpleMDE repo link #3768

Orchard Core 1.0.0-rc2

Release date: June 12, 2020

Breaking Changes

  • .NET Core 3.1
  • Change to the default BagPart from Detail to Summary.
  • Email now is differentiate between submitter and sender according to RFC
  • Lucene index settings are now stored in the database and the data JSON schema has changed so it is required to reconfigure the indices.

Milestone

RC2

New features

  • New orchardcore.net domain (docs, try)
  • New Admin UI for bulk actions
  • New Admin menu structure
  • New documentation structure
  • Docs project in the solution
  • Upgrade to MkDocs Material 5
  • Use all-contributors to generate Contributors list
  • Customize admin URL prefix
  • Deployment plan Recipe export
  • Full-text search enhancements
  • Open Tags editor in Taxonomies
  • Contained item routing
  • Content Picker Menu
  • Language selector on setup page
  • Screen setup adapted to small resolutions
  • Default pattern for autoroute and alias
  • Display mode options
  • Filter admin menu
  • Flow editor UI improvements
  • Toggle all widgets button
  • Sorting items in ListPart
  • Retrieve, Update Content workflow task
  • Disable and Enable Tenant Workflows Tasks
  • User disabled/enabled events
  • Users can change email
  • Disable a user account
  • Allow Inserting image in HTML
  • Themes with vendor- prefix
  • ConsoleLog helper
  • Preview feature improvement
  • Trumbowyg editor, settings and plugins
  • Add ability to generate DisplayText with a Pattern
  • Database and Azure blob shells configuration
  • External Login registration without password
  • CodeMirror editor for TextField
  • Export to json or send to remote
  • Publish later
  • Recipe idempotency
  • Sitemaps

Enhancements

  • Use rc2 version in docs #6403
  • Release/rc2 #6399
  • ImageSharp license changes #6395
  • Update template generation docs #6391
  • Initialize setup supported cultures only if there is a meta package #6357
  • Upgrade ImageSharp package #6375
  • Reset twitter client #6379
  • .NET Core 3.1.5 and SDK 3.1.301 #6387
  • Fix resource hash for code mirror css #6384
  • Update OrchardCore_Shells_Database docs #6380
  • Add reference doc pages for missing features (Lombiq Technologies: OCORE-30) #6350
  • Docs contrib guide, MkDocs fixes, clarifying Configuration docs #6281
  • Coming soon theme fixes #6346
  • Reviewing encoders usages #6330
  • Add default edit display option #6339
  • Disable requried. move fields to below larger editors #6340
  • Fix Publish Later controls disappearing on validation error #6337
  • Adding branding assets to docs #6282
  • Allow classes by default with the html sanitizer #6268
  • Add ConfirmationEmailSubject in Edit RegisterUserTask #6322
  • Prevent array duplication when merging existing content #6315
  • Change to tag. Make recursive #6301
  • Comong-soon script #6304
  • Change content api permissions #6225
  • Render nested bags in Summary also #6288
  • Preview package source to to docs #6278
  • Fixes FileSystemStore issues #6272 #6277
  • Themes: Title, default theme screenshot and tags #6273
  • MimeKit dependency #6275
  • Safe Mode Theme #6261
  • Update code generation templates #6274
  • Replace input by textarea in HtmlField.Edit #6262
  • Update session save usage #6257
  • Updating preview feed badge to Cloudsmith and adding the root Readme to the solution too #6266
  • Upgrade Npm packages #6251
  • Code Mirror 5.54.0 #6256
  • add service provider to shape creating/created contexts #6250
  • Update Fluid and YesSql #6248
  • Favicon for light and dark browser tabs #6241
  • Use optional param for CultureDictionary indexer #6201
  • Add constructor overload to CultureDictionaryRecord #6200
  • Fix typo ContentDeletedEvent constructor #6222
  • SDK 3.1.300 #6220
  • Html Script sanitizer #6016
  • Fixes DB Lock / Timeout in DeferredTask #6170
  • Allow a Timer waiting activity in any Workflow #6124
  • Little refactoring and cleanup #6142
  • Fixes Workflow Singleton #6156
  • Need a tilde if under a virtual folder #6186
  • Mark publish later with private assets #6198
  • Update .NET Core to 3.1.4 and SDK to 3.1.202 #6181
  • Revert "Added support for @section syntax for Views #5413
  • Trigger WF Content Versioned Event #6131
  • Update docker images #6094
  • Update version to RC2 #6093
  • Update version to rc2 in docs and templates example #6091
  • Remove permission check on custom settings recipe step #6086
  • PublishLater review #6127
  • Fix liquid filter doc #6166
  • Added support for @section syntax for Views #5413
  • Add formatting option to json filter #6165
  • Upgrade Bootstrap Select to 1.13.17 #6160
  • Upgrade dependencies Azure.Storage.Blobs and Castle.Core #6163
  • Configure Dev package source #6150
  • Update Manifest descriptions #6155
  • AdminMenu doc with PrefixPosition #6152
  • Switch buttons Events and Tasks in Workflow Edit #6154
  • Revisit Workflow Queries #6144
  • Update Doc Screenshots #6153
  • Fixing inconsistent internal docs links (half of them was referring to a Readme file, half not) and fixing several broken links too #6146
  • Add docs folder and project to solution #6118
  • Fixes #6125 bulk actions #6130
  • Add Scheduled Publish functionality (Lombiq Technologies: OCORE-16) #5639
  • Resolve potential media key conflicts #5979
  • Update Workflows dependencies #6111
  • an issue with table formatting in OrchardCore.Menu #6117
  • Upgrade Lucene.Net to beta 8 #6108
  • Fixes #5987: WF Activity infinite loop #6107
  • Fixes bulk actions filtering #6106
  • Maintain widget content item ids across flowpart and widget list part when updating #5989
  • Document activate-links and extend functionality for nested menu items and action urls #6090
  • Preserve external authentication tokens #6057
  • Fix login redirect for external providers #6109
  • Upgrade dependencies #6110
  • Upgrade mkdocs material #6112
  • Update bootstrap-select to 1.13.16 #6101
  • Set isNew to true only for ajax requests #6084
  • Revert "Fix login redirect for external providers #6072
  • Make Import Data a security critical permission #6087
  • Update configuration docs #6045
  • Revert "set isNew to true when buidling editor #6077
  • Add Content Menu Item #4632
  • Fix login redirect for external providers #6072
  • set isNew to true when buidling editor #6077
  • Make Content Recipe Step Idempotent #5487
  • Update version and website in Manifests and recipes #5905
  • Upgrade ImageSharp.Web #6075
  • Fixing typos, a lot of them (Lombiq Technologies: OCORE-20) #6080
  • Adding option to enable Mini Profiler on the admin too (Lombiq Technologies: OCORE-19) #6052
  • Making FormPart generic #6053
  • Fix null error when rendering html part in flow editor #6040
  • Use PrefixPosition for Admin menus #6066
  • Validate consecutive slashes in autoroute path #6065
  • Patch 1 #6067
  • Render bagpart items with summary displaytype. #5933
  • Fixing the file naming convention - Edit.cshtml not Editor.cshtml #6058
  • Fixing ModularBackgroundService logging and improving IsFatal() checks (Lombiq Technologies: OCORE-17) #5859
  • Adding note on hiding shapes from placement #6041
  • Make Login, Logout and ChangePassword paths configurable #6028
  • Fixes rendering draft on front end #6038
  • Fix RSS items description #5934
  • Allow registering named style and script resources with inline content #5903
  • Contributing and link to .NET Foundation #6005
  • Update GraphQL dependencies #5837
  • Admin menus positions #6007
  • Upgrade bootstrap-select version to 1.13.15 #6023
  • Upgrade CodeMirror version to 5.53.2 #6015
  • Check LinkField Url #6022
  • Fix typo optionsTextArea #6006
  • Change confirm bulk action message #6004
  • Remove items from media cache when events fired #5617
  • Returning null in case of not finding the entry #5950
  • Sort items collection on access #5982
  • Target new tab when viewing media #5980
  • Content culture picker shape documentation #6003
  • Fixes #5761 : Move HtmlField's media modal in footer #6000
  • Move HeadMeta section #5991
  • Deployment plans search #5992
  • Fixes AdminOptions resolution #5975
  • Upgrade dependencies #5981
  • Localize doc note: Restart after editing a .po file. #5985
  • Remove Site.Meta #5946
  • Add ability to restrict widgets within a flow part #5970
  • Fix widget list missing zone name when inserting #5949
  • Fixes #5921 shape table providers #5938
  • Correct text field usage in liquid example #5955
  • Adding support for IN (SELECT) sql statements #5952
  • Make config keys compatible with Linux OS #5918
  • Update PermissionHandler.cs #5940
  • Add icons to Configuration Settings menus #5919
  • Add BenchmarkDotNet in Dependencies.props and upgrade version #5917
  • Site Meta #5854
  • DictionaryAttributePrefix and ModelExplorer support in liquid #5099
  • Prevent too many liquid shape recursion #4394
  • Upgrade workflows dependencies #5845
  • Autoroute container routing #5665
  • Themes standardization #5852
  • Update dependencies versions #5850
  • fix(YoutubeField): blank value get's saved #5909
  • Top contributors #5901
  • Update 'Install culture' guide #5900
  • Wrap editor in a null check #5884
  • Correct shape tags usage with arrays #5896
  • Added an Update Content Item Task, i think we have CRUD now! #5894
  • Remove font awesome pseudoSearch config #5872
  • Correct liquid zone usage #5887
  • Upgrade documentation to Material 5 #5777
  • Fixes Workflow Timer #5830
  • ReleaseShellContext() methods #5551
  • Admin menus #5855
  • Update package.json dependencies #5875
  • Update Markdown package dependencies #5876
  • Update Themes package dependencies #5877
  • Tab placement documentation #5861
  • Add doc for missing content fields #5870
  • Cleanup unused things #5853
  • Update footer dates in theme recipes #5838
  • Fixes OC.ContentLocalization dependencies #5844
  • Add docs for Azure and Database Shells Configuration #5835
  • Upgrade Font awesome to 5.13.0 #5832
  • Setup screen improvements #5781
  • Moved SameSite.None to OpenId Module at startup #5786
  • Fixes AntiforgeryValidationException #5803
  • apply message styles #5820
  • Update ShellHost Registrations #5824
  • Update ITagCache registration #5828
  • Remove unnecessary constructor from DataAnnotationsDefaultErrorMessages #5827

Orchard Core 1.0

Release date: September 2020?

Future Enhancements

  • Localization-neutral fields
  • Dynamic strings localization
  • SEO
  • Distributed hosting
  • Jobs queue
  • Output caching
  • Entities API
  • GraphQL mutations
  • Audit trail
  • Tracking
  • Better Documentation
  • Security
  • Accessibility
  • Deployment and hosting
  • Better Performance

What can this modular framework do for You?

Orchard-Core-001

Let's look back at a bit of History. Back in 1997, Sun Microsystems, sued Microsoft, charging them with trying to steal Sun's Java standard by shipping a conflicting version of the programming language. Back at the time, even though Java was supposed to be open-source, Microsoft had a competing product named Visual J++ which was extremely popular.

Orchard-Core-002

In the meantime, during the lengthy lawsuit, Microsoft decided to create it’s very own managed platform and language. With the help of Anders Hejlsberg, the original author of Turbo Pascal and the chief architect of Delphi (Turbo Pascal for Windows with Database) ), they created the C# programming language along with the .NET framework.

Orchard-Core-003

Miguel de Icaza had a job interview at Microsoft in 1997 shortly before he started the GNOME project. At Microsoft, he met Nat Friedman, who worked there as an intern. Afterward, they became good friends. In April 1999 Friedman came up with the idea to create a company to work on GNOME. The company was founded on October 19, 1999, as “International GNOME Support”, but its name was changed to Helix Code later. Because that name could not be trademarked the name was changed to Ximian on January 10, 2001

Orchard-Core-004

In December of 2000, the underlying Common Language Infrastructure was published as an open standard, "ECMA-335", opening up the potential for independent implementations such as the Mono project, .NET for Linux founded by Miguel de Icaza. The Mono project was without controversy within the open-source community, as it implements portions of the .NET Framework that were covered by Microsoft patents.

Orchard-Core-005

Ximian was acquired by Novell on August 4, 2003, to improve its offerings of Linux for the enterprise. The terms of the all-cash transaction were not disclosed.

Orchard-Core-006

In 2002, Microsoft eventually paid Sun $20 million and was permanently prohibited from using "Java compatible" trademarks on their products.

Orchard-Core-007

Java had a major impact on C#. Without Java, there would be no libraries such as NANT, NUnit, CruiseControl.net, log4net, NHibernate, and Lucene.net. These popular Java projects were ported to C#.

Orchard-Core-008

With Microsoft being investigated by the Department Of Justice. Microsoft was not favorably looked upon by developers. Developers in the 90s never forgot the horror story of how a big mean monopolist set out to destroy Netscape with its unfair marketing practices.

Orchard-Core-009

Microsoft dominated the browser wars, In April 2002 IE was at 97%. In September of 2008, Chrome was introduced with just 1%. In July 2012 Chome dominated the browser wars at 27%. IE at 24% and Firefox at 19%. Today Chome is at 65%, Safari at 16%, Firefox at 5%, IE 3% and Edge at 2%.

Orchard-Core-010

In 2007, Google releases the Android platform announcing they use Java for its application development.

Orchard-Core-011

In 2010 Oracle, Oracle acquires Java by buying Sun Microsystems for $7.4B. And files a lawsuit against Google for its use of Java in Android.

Orchard-Core-012

On November 22, 2010, Attachmate buys Novell for 2.2 Billion. Novell also announced that it has entered into an agreement to sell some of its intellectual property to CPTN Holdings, a consortium run by Microsoft. Miguel de Icaza and Nat Friedman were let go.

Orchard-Core-013

On May 16, 2011, Miguel de Icaza announced on his blog that Mono would be developed and supported by Xamarin, a newly formed company that planned to release a new suite of mobile products. After Xamarin was announced, the future of the project was questioned since MonoTouch and Mono for Android would now be in direct competition with the existing commercial offerings owned by Attachmate. It was not known at that time how Xamarin would prove they had not illegally used technologies previously developed when they were employed by Novell for the same work. In July 2011, however, Novell - now a subsidiary of Attachmate - and Xamarin announced that Novell had granted a perpetual license to Xamarin for Mono, MonoTouch and Mono for Android. Xamarin took official stewardship of the project.

Orchard-Core-014

On March 27, 2014, Satya Nadella made his first public appearance as CEO of Microsoft. For one thing, Microsoft had just paid $7.2 billion to acquire Nokia’s mobile business, a deal Nadella had voted against as a member of the senior leadership team because, as he explain “I don’t get why the world needed a third ecosystem in phones.” The Windows phone had a mere 4% market share, sipping off leftovers from Apple and Google. Satya was quick to wield the ax. 12,500 Nokia staffers were given their papers in July 2014.

Orchard-Core-015

Satya focused the company on the Cloud, Microsoft may not have a phone platform but that doesn’t mean we can’t build the best mobile applications. Microsoft released versions of its signature software suite—Microsoft Office— for both iOS and Android for free.

Orchard-Core-016

On November 12, 2014, Microsoft announced .NET Core, a cross-platform for .NET. The open-source development model would be managed under the stewardship of the .NET Foundation.

Orchard-Core-017

On February 24, 2016, Microsoft acquires Xamarin, With this acquisition, the entire C# .NET ecosystem is consolidated under one corporation. Microsoft can now concentrate on taking .NET to the next level. This set of technology is ubiquitous. The consolidated .NET platform now supports iOS, Android, Linux, macOS, Xbox, and Windows.

Orchard-Core-018

With the acquisition of GitHub, it reflects the desire by Microsoft to reconnect with developers and persuade them that hey – the Beast of Redmond is not quite so beastly these days. It loves Linux, it contributes code to the kernel, it loves open-source, and it loves putting open-source projects on GitHub. Microsoft is committed to cross-platform development.

Orchard-Core-019

So why go through this historical exercise? Which is better Java or C#? To answer this question. Its really about what the developer is familiar with. Developers stick to the tools they know. I’ll tell you this. I have developed with both Java and C# for many years. I feel that I am more productive with C# and .NET. Microsoft makes some of the best development tools in the industry. Java being open source is controlled by the Java Community Process. It’s really Oracle’s that owns and controls this committee. Whereas C# and .NET are ECMA standards (ECMA-334, ECMA-335 respectively). Ecma is an International standards organization. C# and .NET are controlled by that committee. Microsoft has just one vote in that committee, One other major consideration is that Microsoft has ever sued any company for using .NET or C#. Unfortunately, Oracle /Sun Microsystems cannot say the same.

Orchard-Core-020

So how does Orchard Core fit into all of this? Well, As we looked back at Microsoft’s history and its technology, let’s look back at the history of Orchard CMS. Microsoft first released the open-source content management system called Oxite at the 2008 MIX conference. MIX was a Microsoft conference held annually for web developers and designers at which Microsoft showcased upcoming web technologies. They had big plans for Oxite. They even contacted Miguel de Icaza, as we know, at the time, he was working for Novell to port the Oxite codebase to Linux. Microsoft made the source code available for the first open-source Oxite CMS at the end of 2008. According to Mary Jo Foley, Tech journalist, from ZDNet, “All about Microsoft”, Microsoft's open-source CMS platform Oxite was (re)born to the “Orchard Project” at TechEd Europe in November 2009.

Orchard-Core-021

A favorite feature was the Orchard gallary. It was the place to get third party modules and themes. Unfortunately some of these modules or themes would become out dated with new versions of the sofware. It was hard to determine if the theme or module wouldn't crash your website. Here is the front page of the Orchard Gallery.

Orchard-Core-022

A favorite feature was the Orchard Media Manager. Here is an add for the Orchard Media Manager.

Orchard-Core-023

As new technolgy arrives such as Blazor, Orchard Core may also have to adapt. Blazor Server apps are hosted on an ASP.NET Core server in ASP.NET Razor format. Remote clients act as a thin clients, meaning that the bulk of the processing load is on the server. The client's web browser downloads a small page and updates its UI over a SignalR connection. Blazor Server was released as a part of .NET Core 3.0 Blazor WebAssembly a Single-page apps that are downloaded to the client's web browser before running.

The size of the download is larger than for Blazor Server, depends on the app, and the processing is entirely done on the client hardware. However, this app type enjoys rapid response time. As its name suggests, this client-side framework is written in WebAssembly, as opposed to JavaScript. The framework was released in May 2020. Microsoft plans to release Blazor PWA and Blazor Hybrid editions. Will Orchard Core utilize this technology. Who knows. It remains uncertain if the will. Oqtane another competing Modular application framework is being developed with the Blazor WebAssembly technology.

Conclusion

There are still many important pieces to add for the official release 1.0 but since the first commit back in November 19, 2014 it has come a long way. One crucial piece missing are requirements. Without requirements, how does anyone know when the software is complete. Passing tests need to be created and run successfully for all requirements. For the developers on the Orchard Core team, it has become their life's work. They are very committed individuals. Will it be successful? I hope so! That will be determined by the official 1.0 release date. This release date has been pushed back several times. A key component is documentation. Without concise and complete documentation, it will be hard for new developers to adopt the framework. Another key consideration is technical debt. Over the six years of developing Orchard Core, technology has changed and techical debt may be a problem. Orchard Core needs to adapt and embrace new technology. I wish the best for Orchard Core. I want it to be successful!

GitHub

The complete source code is located here.