
{"id":220,"date":"2013-03-06T11:16:16","date_gmt":"2013-03-06T10:16:16","guid":{"rendered":"http:\/\/serverdude.dk\/?p=220"},"modified":"2013-03-06T11:16:16","modified_gmt":"2013-03-06T10:16:16","slug":"dotcms-short-code-inspection","status":"publish","type":"post","link":"https:\/\/serverdude.dk\/?p=220","title":{"rendered":"dotCMS short code inspection"},"content":{"rendered":"<p>Under the impression that I was welcome to further comment on the dotCMS \u00c2\u00a0source code (see my post\u00c2\u00a0<a href=\"http:\/\/serverdude.dk\/?p=212\">Programming vs. Flow steps<\/a>), I created a brief inspection.<\/p>\n<p>While the source code under scrutiny is dotCMS I&#8217;m positive that similar issues can be found in most other source code repositories, thus whether or not you are affiliated with dotCMS you could probably benefit from reading the <a title=\"report\" href=\"https:\/\/www.dropbox.com\/sh\/uh5oqqtjq625qoo\/C6T8gXe7OV\/dotCMS%20brief%20inspection.pdf\">report<\/a> (it is a 30 page PDF created with DocBook).<\/p>\n<p>As I created some graphs which don&#8217;t fit readable onto a page I uploaded them to my <a href=\"https:\/\/www.dropbox.com\/sh\/uh5oqqtjq625qoo\/C8cCF5ffi5\">Dropbox<\/a> as well.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-221\" title=\"Commit buddies\" src=\"http:\/\/serverdude.dk\/wp-content\/uploads\/buddies_8-300x38.png\" alt=\"Commit buddies\" width=\"300\" height=\"38\" srcset=\"https:\/\/serverdude.dk\/wp-content\/uploads\/buddies_8-300x38.png 300w, https:\/\/serverdude.dk\/wp-content\/uploads\/buddies_8-1024x132.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<p>The conclusion:<\/p>\n<blockquote><p>Pointing fingers is easy. I hope I have not offended anyone at least it was the intention to only show some of the things which are wrong with a software project. And most likely what is wrong with most software projects.<\/p>\n<p>I didn&#8217;t touch upon the more stringent theoretical issues with cyclic dependencies &#8211; of which I&#8217;m sure there are plenty based on what we saw in Chapter 2, Changes. Nor did I go into functional points, cyclomatic complexity, length of methods, combinatorial signatures, and others such code quality issues, as I find these to be too specific for the code base and there was plenty of other &#8211; more general &#8211; issues to look at.<\/p>\n<p>The cost of software defects (see <a title=\"cost of bugs in open source software\" href=\"http:\/\/blog.sourceninja.com\/cost-of-bugs-in-open-source-software\/\">sourceninja<\/a>) is immense. Here I have provided a brief overview of some of the low hanging fruits for remediating some of the issues in dotCMS. These methods are free of charge and generally applicable.<\/p>\n<p>If \u00c2\u00a0the \u00c2\u00a0numbers \u00c2\u00a0are \u00c2\u00a0correct, \u00c2\u00a0then \u00c2\u00a0I&#8217;ve \u00c2\u00a0spent \u00c2\u00a0a \u00c2\u00a0few \u00c2\u00a0days \u00c2\u00a0identifying \u00c2\u00a014 \u00c2\u00a0issues \u00c2\u00a0worth \u00c2\u00a0approximately $200,000 &#8211; and there are plenty more. Please don&#8217;t tell me that you don&#8217;t have the resources to go over the code base.<\/p>\n<p>By the way, if I read the infographic correctly, then it is a yearly cost per defect until fixed.<\/p>\n<p>It \u00c2\u00a0could \u00c2\u00a0be \u00c2\u00a0that \u00c2\u00a0it \u00c2\u00a0is \u00c2\u00a0not \u00c2\u00a0your \u00c2\u00a0money \u00c2\u00a0you \u00c2\u00a0are \u00c2\u00a0saving, \u00c2\u00a0but \u00c2\u00a0someone \u00c2\u00a0furhter \u00c2\u00a0down \u00c2\u00a0the \u00c2\u00a0dependency hierarchy.<\/p>\n<p>You may think that I&#8217;m just too shallow in my examination, that I don&#8217;t know the intricate details which make up the foundation for the decisions made. You would probably be right. I consider myself an average person with average skills &#8211; but does that change the results I have provided? It was never my intention to find and fix all bugs.<\/p>\n<p>I&#8217;m all for the hard working people out there providing services for all of us, some of the services are even free. If I am that upset with dotCMS I could simply chose something different. While I could chose something different my point is: I don&#8217;t think it would be a better choice &#8211; merely a different one with bugs, errors, and warts in other places.<\/p>\n<p>I might not even know whether or not I&#8217;m making a choice for or against one product or another, as e.g. dotCMS could be the foundation upon which other services are built.<\/p>\n<p>This is a call to arms, people. Stop accumulating technical debt. Help keep the World a clean and sane place. The price today is high, but it is lower than it will be tomorrow.<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Under the impression that I was welcome to further comment on the dotCMS \u00c2\u00a0source code (see my post\u00c2\u00a0Programming vs. Flow steps), I created a brief inspection. While the source code under scrutiny is dotCMS I&#8217;m positive that similar issues can be found in most other source code repositories, thus whether or not you are affiliated [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-220","post","type-post","status-publish","format-standard","hentry","category-programming"],"_links":{"self":[{"href":"https:\/\/serverdude.dk\/index.php?rest_route=\/wp\/v2\/posts\/220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/serverdude.dk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/serverdude.dk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/serverdude.dk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/serverdude.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=220"}],"version-history":[{"count":4,"href":"https:\/\/serverdude.dk\/index.php?rest_route=\/wp\/v2\/posts\/220\/revisions"}],"predecessor-version":[{"id":225,"href":"https:\/\/serverdude.dk\/index.php?rest_route=\/wp\/v2\/posts\/220\/revisions\/225"}],"wp:attachment":[{"href":"https:\/\/serverdude.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/serverdude.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/serverdude.dk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}