Altabel Group's Blog

Archive for the ‘software development’ Category

As computers (and sensors) get smaller, smarter and connected, our everyday objects, from clothing to lavatories to cars, get more intelligent. By so doing embedded software is essential to the operation of today’s smart devices.

Embedded systems control many devices in common use today. Ninety-eight percent of all microprocessors are manufactured as components of embedded systems. Manufacturers ‘build in’ embedded software in the electronics of e.g. cars, telephones, modems, robots, appliances, toys, security systems, pacemakers, televisions and set-top boxes, and digital watches, for example.

Embedded systems are not always standalone devices. Many embedded systems consist of small parts within a larger device that serves a more general purpose.

Specifics of embedded development:

  • The development of embedded systems requires a good combination of industry knowledge, up-to-date technology expertise and excellent quality and project management skills.
  • Code is typically written in C or C++, but various high-level programming languages, such as Python, JavaScript and even the Go programming language, are now also in common use to target microcontrollers and embedded systems. However the complexity is not in the lines of code, most of the times, since embedded software is more focused towards controlling and managing the system (or hardware).
  • Programmers spend nearly all of their time using their embedded software development environment, which is an integrated collection of software development tools that manage the entire embedded software development process: analyzing, designing, documenting, writing, compiling, debugging, testing, optimizing, and verifying software. The choice of an embedded software development environment is the most important determinant of the productivity and effectiveness of programmers.
  • Today’s embedded systems development spans sensor, device, gateway, and cloud. This dramatically increases the complexity of development, troubleshooting, and fault isolation.
  • Unlike smartphones and personal computers, which sells in millions, most embedded products such as ECG machines, PoS machines, Laboratory and Test equipment, Ticket vending machines, etc. have low sales volume.
  • Furthermore, the product life of embedded devices ranges to 7+ years in contrast to the 15-18 months life for smartphones and to 4-6 years life for laptops. Due to this limited sales volume and long product life, custom or chip-based development of embedded devices adds significant overheads in terms of supply chain inefficiencies, platform obsolescence, non-optimal cost structure, and barriers to adopt latest technologies.

Embedded vs. application software development

Embedded software development

Application software development

Embedded software is physically part of a device, loaded by the manufacturer, and cannot be changed or removed by the user.

Application software is an optional program that the user chooses, installs and can remove.

It’s important to consider not only algorithm performance, but also the overall system robustness, reliability, and cost in the architecture and design. It’s closely associated with hardware manufacturing. You can’t write embedded software in your bedroom and unleash it on the world. Either you make a device yourself, or you work for someone who does.

Application software is similar and different. You can do it for yourself or for The Man, with the difference that no manufacturing is involved so there is much less capital outlay.

Embedded software however is often less visible, but no less complicated. Unlike application software, embedded software has fixed hardware requirements and capabilities, addition of third-party hardware or software is strictly controlled. To manage quality risk, as well as to meet tighter standards for software certification, embedded software engineers need to leverage software simulation tools and certified code generators.

Application software is usually less complex than embedded devices. It has more flexible requirements and solutions.

Embedded systems often reside in machines that are expected to run continuously for years without errors and in some cases recover by themselves if an error occurs. Unreliable mechanical moving parts such as disk drives, switches or buttons are avoided.

Therefore the application software for personal computers is usually developed and tested less scrupulously.

Embedded software may use no operating system, or when they do use, a wide variety of operating systems can be chosen from, typically a real-time operating system. This runs from small one-person operations consisting of a run loop and a timer, to LynxOS, VxWorks, BeRTOS, ThreadX, to Windows CE or Linux (with patched kernel).

Standard computers generally use operating systems such as OS X, Windows or GNU/Linux.


Hot trends for Embedded s/w development: Big Data, Internet of Things, Connected Cars and Homes

The amount of data that’s being created and stored on a global level is almost inconceivable, and it just keeps growing, yet only a small percentage of data is actually analyzed.

The importance of BD doesn’t revolve around how much data you have, but what you do with it. You can take data from any source and analyze it to find answers that enable cost and time reductions, new product development and optimized offerings, and smart decision making. When you combine big data with high-powered analytics, you can accomplish business-related tasks such as:

  • Determining root causes of failures, issues and defects in near-real time.
  • Generating coupons at the point of sale based on the customer’s buying habits.
  • Recalculating entire risk portfolios in minutes.
  • Detecting fraudulent behavior before it affects your organization.

Big data affects organizations across practically every industry, from Banking, Education and Government to Health Care and Retail industry, etc.

The Internet of Things is yet another ubiquitous word in the world of embedded technologies. The core of IoT is the availability of the application or thing and its data to be a connectable ecosystem.

– For example, the Connected Home also known as the Smart Home, uses modern automation systems to provide a practical way of controlling electronic devices in the home. Connected Homes technology can include but is not limited to the scheduling and automatic operation of heating, security systems and lighting. This advanced technology allows these vital home functions to be controlled remotely from anywhere in the world using an internet connected device.

– The race to build the fully Connected Car, and ultimately the completely Autonomous vehicle, is also under way. Drivers around the world are getting used to the increasing amount of digital technology in their cars. Many of the normal features of the car such as monitors of performance data like speed, fuel efficiency, and gas tank levels; heating and air conditioning; and the audio system — all have been digitized in hopes of providing the driver with easier operation and better information. And the car, including smartphones and other devices carried onboard by drivers and passengers now reaches out to the surrounding world for music streamed from the cloud, real-time traffic information, and personalized roadside assistance. Recent innovations allow automobiles to monitor and adjust their position on the highway, alerting drivers if they are drifting out of their lane, and slowing down if they get too close to the car in front of them.

Naturally, smart homes, smart cars, and other connected products won’t just be aimed at home and private life. They’ll also have a major impact on business.


We’re just beginning to imagine the possibilities of embedded systems. Innovations in sensors, big data, and machine learning now make it possible for engineering teams to develop smarter and more autonomous systems that have the potential to dramatically improve designs and create new categories of products and services previously unimaginable.

Embedded software engineers develop embedded hardware and software solutions, custom-made for applications in various target markets. With capabilities that span the complete system and software lifecycle, Altabel Group is placed to manage entire projects from start to finish, working closely with customers to understand their needs and deliver excellent results. For more information on our work in the industry, please click here.

Thank you! And you’re always welcome with your questions.


Victoria Sazonchik

Victoria Sazonchik

Business Development Manager

Skype: victoria_sazonchik
LI Profile: Victoria Sazonchik



Altabel Group

Professional Software Development


When we look into the current trends in programming, few cornerstones dominate in modern programming languages:
• How fast they are
• How smart they are
• Few bugs

These three features were taken into consideration while preparing this article. Let’s see what programming languages share these features and are most likely to be trending in the year 2017.

Back in the year 2014 when Mozilla first launched Rust, it has never been on trending hiring suggests. It sounds confusing but Rust may put great influence on the programming itself. Let’s see why.

Rust is low-level language which enables developers to write kernels, operating systems, browsers, databases and more. But it doesn’t require a developer to become a programming guru on a low-level basis.

Emerged as an upgrade of C and C++, Rust outperforms these super low-level languages in the following:

• Efficiency – Rust’s language goal is to enable fast, efficient programming
• Safety – with Rust, objects are managed without access to memory locations. It is impossible to reach the locations even accidentally.

Crystal comes to mind when one thinks of an easy-to-learn and expressive programming language.

It is another Ruby-like language spotless from ambiguity because its code is easy to understand. It also boasts the speed of C-like languages.

Crystal has some unique features:
• Fibers-special easy-to-create lightweight channels to achieve concurrency
• Macros to avoid boilerplate code
• Great deal of built-in tools for different purposes

The project is in alpha stage. Its releases occur fast and are interesting to follow. Whenever awaits Crystal in the year 2017, many developers see the language as a trendsetter.

Nim has an ambition to fill the niche of a multipurpose programming language. It has adopted distinctive features of established pros like Rust, Python and even Lisp.

Such multisource adoption of different features starts from creation of a solid standard library and excellent third-party modules. But Nim aims to succeed in both these enterprises.

Though in its alpha-stage, Nim helps get the necessary results very quickly. This language complements the fast-changing software development.

JetBrains made its new programming language for JVM and Android and launched the 1.0 version in February, 2016. The company searched for ways to replace Java in programming of JetBrains’ tools and they created it. It is interesting to see what is to become of this pragmatic, Java-like language in 2017.

Kotlin is easy to learn because it is open-source and approachable. It wasn’t created in a lab; it came out from a certain need –to complete the goals, which Java fails to cover.


Seen by many as an alternative to Node.js, Elixir is likely to evolve in the next couple of years. Its ecosystem is used for building scalable and maintainable applications.

The code is run in a series of lightweight processes, which are isolated and run concurrently in the same machine. Isolation of processes has many advantages, such as:
• Pauses reduction
• Isolative garbage collection
• Efficiency

It is Ruby-like, so why not dig into it for the next year?

What are your top five promising programming languages? Do you agree or disagree with any of the choices for this list?


Yuliya Tolkach

Yuliya Tolkach

Business Development Manager

Skype: yuliya_tolkach
LI Profile: Yuliya Tolkach



Altabel Group

Professional Software Development


In the rapidly changing world of IT only those people win who are developing all the time: if you stop — you will lose. Besides general philosophy of life, it’s also true for CMS. Trying to keep up with the time the developers of CMS Drupal have released a new version of Drupal 8.

Many improvements have been made in the interface by default which makes it easier for non- professional users to use CMS. There is practically everything you need to build the “mid-level” web site without using additional modules. So, let’s observe some changes:

• From the very beginning probably the most sensational news was the transfer to Symfony 2 components, which greatly simplified the usage for those developers who are already familiar with it, but probably scared off those who are used to functional programming in WordPress. However, it should be noted that every time the page is loaded in Drupal 7, all enabled modules are also uploaded, even if we don’t need some modules on certain pages, which leads to unnecessary uploading and waiting time increasing for the user who is carefully studying the website. Implementing the basic principles of Symphony, Drupal 8 downloads only those modules that you need for a particular page and nothing more. It accelerates page loading for your visitors and probably reduces memory consumption.

• The introduction of HTML5 can be attributed to a significant improvement in comparison with XHTML in Drupal 7. Sites that are made by using HTML5 have a better structure and functionality. HTML5 provides better work for a user either on a computer or on a mobile device.

• Anyone who has ever run a website knows that it is better to use a computer or a laptop as most features of the admin section would require the resources of the computer and not work on mobile devices. The Drupal 8 Mobile Initiative is a concerted effort to make Drupal 8 a first-class mobile platform. Not only the admin section works on mobile, but the templates for Drupal 8 are also adapted for devices. It’s more comfortable not only for administrators but also for visitors who use gadgets.

• One more pleasant news was the improvement of multilingualism. Multi Language Module enables its users to create phrases in many languages and display them on your website. It helps developers and users to implement a multilingual website.

• Drupal 8 contains one of the fastest and most popular template engines. Twig is a popular templating engine for PHP, which opens the door to more robust, scalable and secure themes. It should be noted that Twig is fast, secure and flexible.

Fast: Twig compiles templates into optimized PHP code. The performance losses are reduced to the minimum in comparison with an ordinary PHP code.

Secure: Twig has a sandbox mode to test untrusted template code. It makes possible to use Twig as a template language for applications where users may modify the template design.

Flexible: Twig has a flexible vocabulary and syntax. It enables developers to define their own tags and filters and create their own DSL (domain specific language).

• With Drupal 8 you have an opportunity to use the Views without your developer. Views contain a set of parameters that determine which content appears on the page and choose the fields to display, field order, etc., In Drupal 7 Views module was a separate module and depended on the CT Tools Suite module. Development of the Views for Drupal (VDC Initiative) enabled to embed Views in Drupal core 8, so that it appeared immediately after installation. It means that Views has a better integration. Besides, Drupal 8 has made the Views much easier, now a site administrator can delegate the work with the Views to technical specialists, as it does not require complex skills.

These are just some of the changes that came with Drupal 8. It’s a fantastic platform for developing a wide range of sites, from simple to extremely complex.

Remember to feed back by sharing your discoveries and creations in using Drupal 8!


Kate Kviatkovskaya

Kate Kviatkovskaya

Business Development Manager

Skype: kate.kviatkovskaya
LI Profile: Kate Kviatkovskaya


Altabel Group

Professional Software Development


Wearable tech devices, such as smart watches and bracelets, have firmly stepped into our everyday life and accompany us in different spheres of life. And who knows, we may soon witness the next tech revolution in the wearable world.

Microsoft Research and MIT Media Lab PhD students have teamed up to create the next level of wearable: temporary smart tattoos.

The technology is named DuoSkin. These tattoos consist of artistic arrangements of conductive gold and silver leaf, plus tissue-thin electronics. Users can apply the tattoo to their body with a wet cloth, similar to any other temporary tattoo.

The fabrication process is fairly simple: first, you design a stencil with any graphic design software, and cut the pattern out of tattoo paper and vinyl. Then you place the gold leaf layer on top to create conductivity, and attach surface-mount electronics.

Smart tattoos can be used for several purposes. Firstly, the tattoo can act as an interface that can be used, for example, as a trackpad or a button to remotely control devices. It may be quite demanding in the near future as our devices get smaller and smart tattoos could provide some additional auxiliary area, without carrying a larger device. Secondly, they can track and show users information about themselves, for example they can change color depending on the user’s mood or show body temperature. A third possible function is wireless communication. The tattoo could include an NFC (near field communications) tag, an electrical component that includes small microchips to store data that can be read by phones or other NFC devices nearby. In the near future, the technology could serve as a substitute for identification, subway cards, etc.

Cindy Hsin-Liu Kao, the lead researcher, calls DuoSkin a “project” and not a product or prototype. Others may use this information as a basis to create their own personalized on-skin wearables.

Lets’s think a bit out of the box:) The future presented in some fantastic films is about to come to reality: not more physical devices but different tattoos and built-in chips:) Аnd what do you think about smart tattoos? Will they change the wearable world or will soon be forgotten?


Anna Kozik

Business Development Manager

Skype: kozik_anna
LI Profile: Anna Kozik



Altabel Group

Professional Software Development


Introducing ASP.NET Core:

ASP.NET Core is a new open-source and cross-platform framework for building modern cloud based internet connected applications, such as web apps, IoT apps and mobile backends. ASP.NET Core apps can run on .NET Core or on the full .NET Framework. It was architected to provide an optimized development framework for apps that are deployed to the cloud or run on-premises. It consists of modular components with minimal overhead, so you retain flexibility while constructing your solutions. You can develop and run your ASP.NET Core apps cross-platform on Windows, Mac and Linux. ASP.NET Core is open source at GitHub.

The framework is a complete rewrite that unites the previously separate ASP.NET MVC and Web API into a single programming model.

Despite being a new framework, built on a new web stack, it does have a high degree of concept compatibility with ASP.NET MVC.

ASP.NET Platform exists for more than 15 years. In addition, at the time of System.Web creation it contained a large amount of code to support backward compatibility with classic ASP. During this time, the platform has accumulated a sufficient amount of code that is simply no longer needed and is deprecated. Microsoft faced a difficult choice: to abandon backward compatibility, or to announce a new platform. They chose the second option. At the same time, they would have to abandon the existing runtime. Microsoft has always been a company focused on creation and launch on Windows. ASP.NET was no exception. Now the situation has changed: Azure and Linux occupied an important place in the company’s strategy.

The ASP.NET Core is poised to replace ASP.NET in its current form. So should you switch to ASP.NET Core now?

ASP.NET Core is not just a new version. It is a completely new platform, the change of epochs. Switching to ASP.NET Core can bring many benefits: compact code, better performance and scalability. But what price will be paid in return, how much code will have to be rewritten?

.NET Core contains many components, which we are used to deal with. Forget System.Web, Web Forms, Transaction Scope, WPF, Win Forms. They no longer exist. For simple ASP.NET MVC-applications changes will be minor and the migration will be simple. For more complex applications, which use a great number of .NET Framework classes and ASP.NET pipeline situation is more complicated. Something may work and something may not. Some part of the code will have to be rewritten from scratch. Additional problems may be caused by WebApi, because ASP.NET MVC subsystems and WebAPI are now combined. Many libraries and nuget-packages are not ready yet. So, some applications simply will not have a chance to migrate until new versions of the libraries appear.

I think we are waiting for the situation similar to the transition from Web Forms to ASP.NET MVC. ASP.NET Framework will be supported for a long time. First, only a small amount of applications will be developed on ASP.NET Core. Their number will increase, but sooner or later everyone will want to move to ASP.NET Core. We still have many applications running on the Web Forms. However, no one comes to mind to develop a new application on the Web Forms now, everybody chooses MVC. Soon the same happens to ASP.NET Framework, and ASP.NET Core. ASP.NET Core offers more opportunities to meet modern design standards.

The following characteristics best define .NET Core:

  • Flexible deployment: Can be included in your app or installed side-by-side user- or machine-wide.
  • Cross-platform: Runs on Windows, macOS and Linux; can be ported to other OSes (Operating Systems). The supported OSes, CPUs and application scenarios will grow over time, provided by Microsoft, other companies, and individuals.Command-line tools: All product scenarios can be exercised at the command-line.
  • Compatible: .NET Core is compatible with .NET Framework, Xamarin and Mono, via the .NET Standard Library.
  • Open source: The .NET Core platform is open source, using MIT and Apache 2 licenses. Documentation is licensed under CC-BY. .NET Core is a .NET Foundation project.
  • Supported by Microsoft: .NET Core is supported by Microsoft, per .NET Core Support.

The Bad:

  • As for the “cons” one of the biggest issues are gaps in the documentation. Fortunately most of the things for creating and API are covered, but when you’re building an MVC app, you might have problems.
  • Next problem – changes. Even if you find a solution to your problem, it could have been written for a previous version and might not work in the current one. Thanks to open source nature of it, there is also support available on github. But you get same problems there (apart from searching).
  • Another thing is lack of support in the tooling. You can forget about NCrunch or R# Test Runner. Both companies say they will get to it when it gets more stable.
  • ASP.NET Core is still too raw. Many basic things, such as the Data Access, is not designed for 100%. There is no guarantee that the code you are using now will work in the release version.

The Good:

  • It’s modular. You can add and remove features as you need them by managing NuGet packages.
  • It’s also much easier and straightforward to set up.
  • WebApi is now part of the MVC, so you can have class UserController, which will return a view, but also provide a JSON API.
  • It’s cross-platform.
  • It’s open-source.

ASP.NET Core is the work on the bugs of the classic ASP.NET MVC, the ability to start with a clean slate. In addition, Microsoft also aims to become as popular as Ruby and NodeJS among younger developers.
NodeJS and ASP.NET have always been rivals: both – a platform for backend. But in fact, between them, of course, there was no struggle. The new generation of developers, the so-called hipster developers, prefer Ruby and Node. The adult generation, people from the corporate environment, are on the side of .NET and Java. .NET Core is clearly trying to be more youthful, fashionable and popular. So, in future we can expect the .NET Core and NodeJS to be in opposition.

In its advertising campaign, Microsoft is betting on unusual positions for it: high performance, scalability, cross-platform. Do you think that ASP.NET “crawls” on the territory of NodeJS? Please feel free to share your thoughts with us.

Thank you in advance!



Darya Bertosh

Darya Bertosh

Business Development Manager

Skype: darya.bertosh
LI Profile: Darya Bertosh



Altabel Group

Professional Software Development



“Computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty.”
Donald Knuth, 1974


It’s better to start your journey into the career of programming by answering the question “Do you really need programming?” This question does not apply to those, who majored in computer programming or was close to it. If at school you were good at math, if you like to spend a lot of time sitting in front of the computer, if you want to learn something new, then programming is for you. What is more, this area is now in demand and highly paid in the world, job vacancies for the post of programmers are always open. Isn’t it the best time to be a programmer? 🙂

Everyone knows that the future programmer should be able to think broadly and to present the project from different perspectives before its implementation and realization. Unfortunately, the machine does not understand a human language. Of course, I’m not talking about Siri and other voice recognition — I’m talking about the creation of new software. To create the calculator, the computer needs to be given the task in the same way as the foreman explains to workers how to lay bricks. That’s why you can’t do anything without understanding the programming languages. Well, first you need to decide what kind of programming languages we should start with.

And here everyone chooses a language which will be useful for him. It depends on the kind of products you are going to develop. Most of us studied Turbo Pascal at school, and it’s no news that this language is practically not used anymore. So, if you want to join the team of programmers in the nearest future, the choice of language should be made sensibly.

Among the most popular programming languages in 2016 are Java, followed by C languages, then Python, JavaScript, PHP, Ruby, etc. It should come as no surprise that the more popular language is, the more chances you have to find work in the future. So, you’d better start with Java or C#, as these are the best paid and relatively simple learning languages of writing code. If you can’t cope with them, then you should try to learn Python. This language suits for quick and effective programming.

But if you have no programming experience at all you can start with something more simple for understanding. Good examples can be the basics of HTML and CSS.

Why? These two languages are essential for creating static web pages. HTML (Hypertext Markup Language) structures all the text, links, and other content you see on a website. CSS is the language that makes a web page look the way it does—color, layout, and other visuals we call style. Well, if you are interested in making websites, you should definitely start with HTML and CSS.

Let’s move to JavaScript. It is the first full programming language for many people. Why? It is the next logical step after learning HTML and CSS. JavaScript provides the behavior portion of a website. For example, when you see that a form field indicates an error, that’s probably JavaScript at work.

JavaScript has become increasingly popular, and it now lives outside web browsers as well. Learning JavaScript will put you in a good place as it becomes a more general-purpose language.

Some people also suggest choosing Python as the first programming language because Python’s program code is readable, first of all. You don’t even need to be a programmer to understand what is happening in the program. Due to the simple syntax of Python you will need less time for writing programs than in Java, for example. A huge base of libraries will save you a lot of strength, nerves and time. Large technology companies are working with Python: Yandex, Google, Facebook and YouTube. It is used for web applications, game development, software for servers.

Java can also be a good choice for a beginner. This language is more popular than Python, but a bit more complicated. At the same time, the development tools are much better designed. Java is one of the most popular languages for the backend development of modern enterprise web applications. It is used in Amazon, eBay, LinkedIn and Yahoo! With Java and the frameworks based on it, developers can create scaling web apps for a wide range of users. Java is also the primary language used for developing Android applications for smart phones and tablets. Moreover, after Java you will be able to work with low level programming languages.

PHP is one more popular language. The PHP language, along with databases (e.g. MySQL) is an important tool for creating modern web applications. Most of the sites developed on PHP are focused on a large amount of data. It is also a fundamental technology of powerful content management systems like WordPress. There are no normal imports in PHP, there are many solutions to one and the same problem. And it makes training more complicated.


The languages C and C# are a bit complicated for a beginner. But if you develop software for embedded systems, work with system kernels or just want to squeeze out every last drop from all available resources, C is what you need.

Ruby has begun to gain popularity since 2003, when the framework Rails appeared. Used widely among web startups and big companies alike, Ruby and Rails jobs are pretty easy to come by. Ruby and Rails make it easy to transform an idea into a working application, and they have been used to bring us Twitter, GitHub, and Treehouse.

Choosing a programming language may still seem challenging. It shouldn’t. You can’t go wrong. As long as you choose a language that is regularly used in technology today, you’re winning. When you are starting out, the goal is to become solid in the basics, and the basics are pretty similar across almost all modern programming languages.

Part of learning to code is learning a language’s syntax (its grammatical or structural rules). A much bigger part of learning to code, the part that takes longer and gives you more headaches, is learning to solve problems like a programmer. You can learn the grammatical structure of the English language pretty quickly; however, you won’t truly understand the language until you put that grammatical structure to use in a conversation. The same is true in programming. You want to learn the core concepts in order to solve problems. Doing this in one language is similar to doing it in another. Because the core concepts are similar from language to language, I recommend sticking with whichever language you choose until your understanding of the core concepts is solid. If you have a clear idea of your reasons for learning to program, and know exactly what you want to accomplish with your new coding skills, then you’ll be able to make the right choice.

How did you guys get into programming? What are the best programming languages for first-time learners?

Please, share with us your experience and opinion here below 🙂


Kate Kviatkovskaya

Kate Kviatkovskaya

Business Development Manager

Skype: kate.kviatkovskaya
LI Profile: Kate Kviatkovskaya



Altabel Group

Professional Software Development


Java brings a lot of popular and user-friendly frameworks, content management systems and servers that help to simplify the application development process, website management process and much more irrespective of the size and complexity of the project. When it comes to CMS, Java possesses a host of CMSs that have been highly recognized in the market, but one CMS that has gained great popularity and attention from the developers and companies across the world is Magnolia.

Magnolia is an open source content management system which delivers exceptional simplicity on an enterprise level, combining user-friendly usage with a standards-based and flexible Java architecture. Companies such as Airbus Group, Al Arabiya, Avis and Virgin America use it as the central hub for their web, mobile and IoT initiatives. Founded in 1997, Magnolia is a privately-held company headquartered in Basel, Switzerland. The company has offices around the globe, and customers in over 100 countries.

Making a good CMS to cater the needs of the clients is never an easy task, and the developers Magnolia knows this thing better. Hence, Magnolia brings some of the much needed features and functionalities for the enterprises.

• Magnolia comes with a smart cache, a built-in clustering capabiliy and distributed deployment architecture that easily decouples authoring from publishing and the possibility to develop load-balanced public servers to bring more throughput and availability.
• It also offer code highlighting for the designers & developers, easy integration of 3rd party frameworks, extendable workflow, J2EE compliance, RSS generation & aggregation and more for the customization.
• When it comes to designing, it brings standard-based templating in JSP and servlets, unlimited page and component design, Freemarker as a template engine, custom tag library to speed up templating and pluggable templating engine for the designers.
• It brings Open APIs, advanced caching strategies, unlimited scalability, clustering & load balancing, transactional activation and tons of other performance related features & functionalities for the enterprises.
• From the security point of view, Magnolia brings flexible user permissions using role-based user management and distributed architecture, which is a need of today’s enterprises.
• It also enables team work through concurrent editing, deletion, address book, workgroup collaboration and some other features.
Apart from all these, Magnolia also enables search engine optimization, content tagging, configurable workflow, content versioning, social media integration, multilingual support, multi-site management, mobile publishing and tons of other enterprise-scale functionalities.


However, like any other technology or platform, Magnolia also has some advantages and disadvantages. Let’s take a look at each of them:

The Pros
• It’s an open source.
• User friendly, easy to use for Administrators/Content Editors/Authors
• Good set of standard components in the standard templating kit (STK)
• Very flexible, almost anything can be customized
• Vast set of open modules for many additional features
• Leverage from page-based site or navigation.
• It utilizes installer, but the WAR files can be used to redeploy it to some other place.

The Cons
• Steep learning curve
• Inconsistent or lack of documentation
• Configuration via JCR-Tree can be error-prone and not very transparent
• Versions -4.5, 4.5+ and 5 all have shifts in paradigms
• Versioning and collaboration

All in all, Magnolia is a very promising CMS that integrates well into an enterprise java stack. It is predominantly suited for medium to large businesses where processes need deep integration and customizations. With regards to small businesses, Magnolia might be somewhat of an overkill.

How about you? Did you have a chance to work with Magnolia CMS? What is your attitude to it?

Please feel free to share with us your thoughts and experience here below.


Kate Kviatkovskaya

Kate Kviatkovskaya

Business Development Manager

Skype: kate.kviatkovskaya
LI Profile: Kate Kviatkovskaya



Altabel Group

Professional Software Development


%d bloggers like this: