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:
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.
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.
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.
Orchard Core CMS supports all major site building strategies:
Orchard Core's first GitHub commit was on November 19, 2014.
Release dates: November 19, 2014 - January 17, 2017
Release date: January 17, 2017
Release date: January 22, 2018
Release date: June 22, 2018
Release date: April 3, 2019
Release date: September 24, 2019
Release date: June 12, 2020
Release date: September 2020?
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.
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.
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
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.
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.
In 2002, Microsoft eventually paid Sun $20 million and was permanently prohibited from using "Java compatible" trademarks on their products.
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#.
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.
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%.
In 2007, Google releases the Android platform announcing they use Java for its application development.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
A favorite feature was the Orchard Media Manager. Here is an add for the Orchard Media Manager.
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.
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!
The complete source code is located here.