Before starting a new project it is necessary to determine if that project is needed. Afterwards a development plan can be created.
First of all there is no cross platform support. Jekyll can be run on Windows 10 via Bash on Ubuntu on Windows but this still illustrates the case that there is no real cross platform support for Jekyll at the time of writing this article. Liquid template is currently an important part of this site and cannot be replaced by other languages supported by Jekyll out of the box. There are some alternative formats and formal language that exist for a lot longer period and have more tools supporting these than Liquid template. Additional formats can be included manually into Jekyll which increases the costs of maintaining the software.
Jekyll supports primarily Markdown, Textile, Liquid Template and HTML in order to define documents. These documents are mostly rendered as HTML, CSS and JavaScript files. Except for pure HTML documents there seem to be no tooling available in order to apply automatic refactoring or translation to these documents. The markup language HTML is also not expressive enough in order to define every attribute of content which is needed for this site. In order to be able to meet all my requirements right now, I am currently using HTML, Liquid Template and CSS. As mentioned in a previous post Liquid Template is not suited as a markup language for this site in the long term. This is also the case if HTML, Liquid Template and CSS are mixed. Markdown and Textile also do not fit my requirements for this site as they have a very limited expressiveness.
- d:remove
- d:reason
partially not true
- paragraph
Jekyll itself does not provide a satisfying workflow for asset management (i.e. image conversion), management of multiple themes for a single website or the upload process of a generated site. This leads to a situation where the workflow has to be implemented from scratch.
The primary reason why I am using Jekyll is the fact that this software has some popularity and has all capabilities needed up to this point in order to generate this site. Also, a large set of plugins is available on this platform, due to Jekyll's popularity.
An XML Schema Definition (XSD) can be used in order to define a custom format which can be used by other people. An XML Schema Processor can verify if a given document complies with a given schema. The processor can also describe in detail the errors contained in a malformed document. In contrast, some error messages provided by Jekyll contain quite limited information and slow down the development of this site.
XSL supports the implementation of scripts which apply automatic refactoring or translation on a given xml file. DocBook is such a format where an XSL script is provided that converts DocBook 4 documents to DocBook 5 documents.
There are a lot of formats and tools which support or are based on XML. Therefore, it is possible to convert XML documents to a lot of suitable formats like HTML, PDF and formats of office suites with a justifiable amount of work.
XSLT style sheets are generally quite verbose. Also, there are some constructs which have unexpected or counter-intuitive functionality. This leads to situations where the documentation should be examined closely in order to complete certain simple tasks.
Additionally, everything has to be done from scratch and will most likely slow down the blogging process temporarily.
I'm not going to implement this blogging framework feature complete and then transit to this framework. Instead, I am going to incrementally implement and transit to this framework step by step.
First of all I will make an XSD for articles. Secondly I'll create corresponding XSLTs which translate XML files formatted according to the previously mentioned XSD into a format which is suitable to Jekyll and my main layout.
Thereafter, I will translate one document after another to this new XML format. This means that I will run Jekyll and my blogging framework simultaneously.
Thereafter, I will translate my CSS templates based on Liquid Template into CSS templates based on XML/XSLT.
Following this the layout which is currently based on HTML and Liquid Template will be translated into XSLT and integrated into the blogging framework.
Finally, some scripts will be created to manage the themes and images of this site. At this point Jekyll will be fully removed from this project.