Open main menu

This page serves to inventory and assess the mix of extensions that are in use for the DCS wiki. Code for "regular" extensions are hosted on Gerrit at the WMF (which is also mirrored to GitHub) with documentation at https://www.mediawiki.org/wiki. Code for the DCS extensions is in the private Debt Compliance GitHub repo; and the Organic Design extensions are in the 'MediaWiki' tree of the Organic Design GitHub repo.

Mime Report

In the DCS custom extensions, here are the file counts by file-type:

    14 .css
     6 .gif
     1 .ico
     1 .jpg
     9 .js
    43 .json
    69 .php
     8 .pl
     4 .png
     1 .svg


Source Code Summary

Source Lines of Code (SLOC)
SLOC Directory SLOC-by-Language (Sorted)
1873 DcsJobAdmin perl=985,php=779,javascript=109
751 DcsCommon php=548,javascript=203
551 DcsSearch javascript=282,php=269
481 DcsNamespaces php=425,javascript=56
379 DcsAmmendments php=203,javascript=176
315 DcsTitle php=315
269 DcsSingleSignOn php=269
258 DcsSection php=258
230 DcsNuke php=230
208 DcsComplianceChecklist php=208
178 DcsExportTerms php=178
168 DcsComplianceChecklist2 php=168
158 DcsGroupAdmin php=158
139 DcsWatchComments php=139
123 DcsUserDisable php=78,javascript=45
110 DcsLoanPages php=110
104 DcsBaskets php=57,javascript=47
90 DcsSkin php=90
88 DcsFindTitle php=88
70 DcsUploadedFiles php=70
40 DcsEmailLink php=40
0 DcsSection2 (none)


Totals grouped by language (dominant language first)
php: 4680 (71.09%)
perl: 985 (14.96%)
javascript: 918 (13.95%)
Total Physical Source Lines of Code (SLOC)                = 6,583
Development Effort Estimate, Person-Years (Person-Months) = 1.45 (17.36)
  (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months)                         = 0.62 (7.40)
  (Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule)  = 2.35
Total Estimated Cost to Develop                           = $ 195,428
  (average salary = $56,286/year, overhead = 2.40; calculated in 2004 dollars)

And for the 'tools' directory

Source Lines of Code (SLOC)
SLOC Directory SLOC-by-Language (Sorted)
4817 top_dir perl=3838,php=648,sh=331
345 crowdrating.org perl=345
172 jobs perl=121,php=51
63 bm-gateway python=63
4 meditation perl=4
3 docker sh=3
0 atom (none)
0 icons (none)
0 nginx (none)
Totals grouped by language (dominant language first)
perl: 4308 (79.72%)
php: 699 (12.93%)
sh: 334 (6.18%)
python: 63 (1.17%)


Total Physical Source Lines of Code (SLOC)                = 5,404
Development Effort Estimate, Person-Years (Person-Months) = 1.18 (14.11)
 (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months)                         = 0.57 (6.84)
 (Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule)  = 2.06
Total Estimated Cost to Develop                           = $ 158,852
 (average salary = $56,286/year, overhead = 2.40).


"Regular" Extensions

Extension Used by WMF projects? What does it do? Maintenance / Last release Used by Meza Used by QualityBox Alternative Extension
CirrusSearch YES Extends the core search for MediaWiki to be able to use Elasticsearch Continuous Yes Yes
Cite Bundled Provides <references /> and <ref></ref> tags Continuous Yes Yes
CiteThisPage Bundled Provides Cite This Page Special Page. Continuous No Yes UNUSED
ConfirmEdit Bundled Adds CAPTCHAs for page saves and other user actions to protect against spam and password-guessing Continuous No Yes UNUSED
Elastica YES Base Elasticsearch functionality by providing the Elastica library; required by CirrusSearch. Continuous Yes Yes
Gadgets Bundled Provides a way for users to pick JavaScript or CSS based "gadgets" that other wiki users provide. Continuous No Yes UNUSED
ImageMap Bundled The ImageMap extension allows clickable image maps. Continuous Yes Yes UNUSED
InputBox Bundled The InputBox extension adds already created HTML forms to wiki pages. Continuous Yes Yes UNUSED
Interwiki Bundled The Interwiki extension adds the "Special:Interwiki" page to MediaWiki, to view and edit the interwiki table, and a log of any actions made with it. Continuous Yes Yes UNUSED
LocalisationUpdate Bundled allows to update the localizations for MediaWiki messages at any time, without needing to upgrade the MediaWiki software. Continuous No No UNUSED
Nuke Bundled The Nuke extension makes it possible for sysops to mass delete pages. Continuous No Yes For whatever reason, the DCSNuke extension intercepts page requests for the Nuke special page. DCSNuke has no added functionality. The DCSNuke code is roughly equivalent to the REL1_20 release of Nuke; and the current Nuke extension offers more functionality. I thought that potentially the reason to use a cloned extension was to totally customize the interface language strings, but that's not the case[1]. Remove DCSNuke.
ParserFunctions Bundled? What does it do? Maintenance / Last release Yes Yes Yes
PdfHandler Bundled? What does it do? Maintenance / Last release Meza? QB? UNUSED?
PipeEscape Bundled The Pipe Escape extension allows for pipe characters in parser function arguments (and template argument calls) avoid being interpreted as an argument delimiter. This is primarily for the purpose of using wiki tables (or parts thereof) inside parser function calls or templates. Old but stable In Meza In QualityBox Included via DcsSetup
Poem Bundled? What does it do? Maintenance / Last release Meza? QB? UNUSED?
Renameuser Bundled? What does it do? Maintenance / Last release Meza? QB? UNUSED?
SimpleMathJax The SimpleMathJax extension enables MathJax, a Javascript library, for typesetting TeX formula in MediaWiki inside math environments. This extension will load resources from cdnjs.cloudflare.com on all wiki pages that have math or chem tags. Regular maintenance Yes Yes included by DcsSetup.php
SpamBlacklist Bundled? What does it do? Maintenance / Last release Meza? QB? UNUSED?
SyntaxHighlight_GeSHi Bundled? What does it do? Maintenance / Last release Meza? QB? UNUSED?
TitleBlacklist Bundled? What does it do? Maintenance / Last release Meza? QB? UNUSED?
WikiEditor Bundled? What does it do? Maintenance / Last release Meza? QB? yes

Custom DCS Extensions

Extension Purpose Last release Confirm used? + notes
DcsAmmendments Adds ammendments section to DCS loan pages. Sysop (only) can add/delete/edit/re-order (up/down) the ammendments; UX implemented in JavaScript. Extends the API with the same functions. Adds new log type: amendments; and logs all actions. Jan 2018 - new sort functionality ready for testing yes
DcsBaskets purpose? release? yes
DcsCommon https://github.com/debtcompliance/mediawiki/wiki/Extensions#dcscommon Cookie handling was added on June 14, 2017. The code (the cookie.js part) is from a project called js-cookie. So, we could update that code. Or, we could replace it with internal functions so we don't rely on 3rd party code. See the API documentation for mw.cookie (Does not use the $wgCookieSecure configuration variable since 'detect' could not work with

ResourceLoaderStartUpModule; as module cache is not fragmented by protocol.) The mw.cookie (JavaScript) code is syntactically and functionally similar to the server-side cookie API (`WebRequest#getCookie` and `WebResponse#setcookie`).

https://www.mediawiki.org/wiki/Manual:Hooks/UserSetCookies is deprecated as of REL1_27, and session-handling extensions should be subclassing CookieSessionProvider. $wgSessionProviders

The class creates methods for outputting messages, notices, dates, getting raw content.

It loads some javascript (through resource loader). That javascript could more easily be maintained as MediaWiki:Common.js? although there may be load order issues. The JS defines like-named methods with varying features. E.g.

Check if the passed page title string is in a loan namespace, returns boolean. Note that this function only checks if the namespace is in the list of all loan namespaces, it doesn't do any checks for whether the namespace is in use, or whether the title is in a DCS_TOC article like the DcsCommon::isLoanPage PHP function.

The series of extensions create DcsInit() (in DcsEmailLink), DcsBlockPageAccess(), and DcsReady() hook functions. DcsReady() implementations are different across different classes from Basket to DcsSingleSignOn.

The 'common' extension creates a singleton instance of the DcsCommon class that does a bunch of things according to notes in the wiki. The permissions shouldn't really be hidden away in the class code. They should simply be in LocalSettings.php. onUserGetRights() is a big function. The 'self:cache' is mostly called in connection with 'isLocal'. Any true caching should just be offloaded to APC and memcache. Although there is no 'dcs' table in the database on dcsTemporary, the setData() method is used throughout the codebase so should update wiki about where this data is stored.
DcsComplianceChecklist purpose? release? yes
DcsComplianceChecklist2 purpose? release? only used in the checktest subdomain, or when `wgLocalTesting`; intention is to use a timestamp condition
DcsEmailLink purpose? release? yes
DcsExportTerms purpose? release? yes
DcsFindTitle purpose? release? yes
DcsGroupAdmin purpose? release? yes
DcsJobAdmin purpose? release? yes
DcsLoanPages purpose? release? yes
DcsNamespaces purpose? release? yes
DcsNuke purpose? release? yes. REPLACE with standard Nuke extension
DcsSearch purpose? release? yes
DcsSection purpose? release? yes
DcsSection2 purpose? release? NO
DcsSingleSignOn purpose? release? yes
DcsSkin Custom 'style' to match DCS website / frontend release? Yes
DcsTitle purpose? release? yes
DcsUploadedFiles purpose? release? yes
DcsUserDisable purpose? release? yes
DcsWatchComments purpose? release? yes

Organic Design extensions

ONLY extensions marked with ** are actually used by DCS

  1. Accordian
  2. AddLinkClasses
  3. AjaxComments **
  4. ArticleProperties
  5. Bliki
  6. CodeTidy
  7. CurrentPages
  8. CurrentUsers
  9. Download
  10. EmailPage **
  11. EmailToWiki
  12. EximMailList
  13. ExtraMagic **
  14. FaceBook
  15. FileAttach
  16. FormMailer
  17. HighlightJS
  18. InterWiki
  19. jQueryUpload **
  20. jQueryUpload2
  21. Ligmincha
  22. LinkAttributes
  23. LinkTree
  24. NukeDPL
  25. ODMaps
  26. OrganicDesign
  27. PdfBook **
  28. RecentActivity
  29. SimpleCalendar
  30. TransformChanges
  31. TreeAndMenu **
  32. UserLoginLog
  33. UserProfiles
  34. Variables
  35. WebSocket
  36. WikiaAdmin
  37. WikiaInfo



Special:Version

This is what you'll see reported by the "Special:Version" page of the wiki

Installed skins

Skin Version License Description Authors
Cologne Blue GPL-2.0+ A lightweight skin with minimal formatting Lee Daniel Crocker and others
DcsSkin 3.0.2, 2016-07-01 Copyright © 2007-2018 Debt Compliance Services DCS skin desgined to match the QAR app Aran Dunkley
Modern GPL-2.0+ A blue/gray theme with sidebar and top bar. Derived from MonoBook River Tarnell and others
MonoBook GPL-2.0+ The classic MediaWiki skin since 2004, named after the black-and-white photo of a book in the page background Gabriel Wicke and others
Vector GPL-2.0+ Modern version of MonoBook with fresh look and many usability improvements Trevor Parscal, Roan Kattouw and others


Installed extensions

Special pages
Extension Version License Description Authors
DcsGroupAdmin 1.2.0, 2015-06-26 Copyright © 2007-2018 Debt Compliance Services A special page for managing DCS groups and access Aran Dunkley
DcsJobAdmin 4.0.0, 2017-06-28 Copyright © 2007-2018 Debt Compliance Services A special page for managing DCS jobs that run in the background Aran Dunkley
DcsSearch 2.4.2, 2017-01-27 Copyright © 2007-2018 Debt Compliance Services Renders the search dropdown with favourite terms list, and allows users to track the pages they've visited from search results of their favorite terms Aran Dunkley
DcsUploadedFiles 1.3.0, 2017-07-08 Copyright © 2007-2018 Debt Compliance Services A special page for listing the files uploaded to loan pages Aran Dunkley
EmailPage 2.4.4, 2017-04-26 GPL-2.0+ Send rendered HTML page to an e-mail address or list of addresses using phpmailer Aran Dunkley
jQueryUpload 1.4.5, 2016-08-28 GNU General Public Licence 2.0 or later Allows files to be uploaded to the wiki or to specific pages using the jQueryFileUpload module Aran Dunkley and Sebastian Tschan
Nuke 1.2.0 GPL-2.0+ Gives administrators the ability to mass delete pages Brion Vibber and Jeroen De Dauw
Parser hooks
Extension Version License Description Authors
DcsComplianceChecklist 1.24.2, 2016-05-10 Copyright © 2007-2018 Debt Compliance Services Creates the #ComplianceChecklist parser-function Aran Dunkley
ExtraMagic 3.8.0, 2015-010-04 GNU General Public Licence 2.0 or later Adds useful variables and parser functions Aran Dunkley
ParserFunctions 1.6.0 GPL-2.0 Enhance parser with logical functions Tim Starling, Robert Rohde, Ross McClure and Juraj Simlovic
PdfBook 1.5.2, 2017-05-15 GNU General Public Licence 2.0 or later pdfbook-desc Aran Dunkley
Pipe Escape 2.0.0. (a36d2d6)23:54, 4 May 2016 GPL-2.0+ Parser function #! for when you want a pipe character to be just a pipe character David M. Sledge and Purodha Blissenbach
TreeAndMenu 4.2.1, 2016-05-24 GNU General Public Licence 2.0 or later Adds #tree and #menu parser functions which contain bullet-lists to be rendered as collapsible treeviews or dropdown menus. The treeviews use the FancyTree JavaScript tree menu, and the dropdown menus use Son of Suckerfish Aran Dunkley
Other
Extension Version License Description Authors
AjaxComments 2.7.2, 2017-03-08 GNU General Public Licence 2.0 or later Add comments to the end of the page that can be edited, deleted or replied to instead of using the talk pages Aran Dunkley
CirrusSearch 0.2 (dcb0cf9)21:22, 4 May 2016 GPL-2.0+ Elasticsearch-powered search for MediaWiki Nik Everett, Chad Horohoe, Erik Bernhardson and others
DcsAmmendments 1.1.0, 2018-01-20 Copyright © 2015-2018 Debt Compliance Services Adds ammendments section to DCS loan pages Aran Dunkley
DcsBaskets 1.4.2, 2016-08-08 Copyright © 2007-2018 Debt Compliance Services Allows fields in Baskets table to be updated via AJAX Aran Dunkley
DcsCommon 5.1.1, 2018-01-25 Copyright © 2007-2018 Debt Compliance Services DCS common functionality Aran Dunkley
DcsEmailLink 0.0.1, 2017-07-12 Copyright © 2017-2018 Debt Compliance Services Adds a new "EmailLink" action which can match a title case-insensitvely Aran Dunkley
DcsExportTerms 2.0.1, 2017-03-20 Copyright © 2007-2018 Debt Compliance Services Add an export action to the that allows terms to be downloaded in CSV format Aran Dunkley
DcsFindTitle 1.1.0, 2017-01-30 Copyright © 2007-2018 Debt Compliance Services Adds a new "find" action which can match a title case-insensitvely Aran Dunkley
DcsLoanPages 2.5.2, 2016-05-17 Copyright © 2007-2018 Debt Compliance Services Adds breadcrumbs, comments and backlinks to DCS loan pages Aran Dunkley
DcsNamespaces 2.5.0, 2015-12-12 Copyright © 2007-2018 Debt Compliance Services A special page for administering loan documents in their own namepsaces Aran Dunkley
DcsNuke 1.2.2, 2017-01-19 Copyright © 2007-2018 Debt Compliance Services Gives administrators the ability to mass delete pages Aran Dunkley
DcsSection2 2.0.0, 2018-01-12 Copyright © 2007-2018 Debt Compliance Services DCS article section handling extension - new version 2 with individual sub-section article support removed Aran Dunkley
DcsSingleSignOn 5.1.5, 2017-07-14 Copyright © 2007-2018 Debt Compliance Services Allows the Rails application to manage the login, logout and session expiry for the DCS wikis Aran Dunkley
DcsTitle 1.0.0, 2017-02-13 Copyright © 2017-2018 Debt Compliance Services Creates a new DCS-specific Title class that includes TOC info such as sortkey, next and prev Aran Dunkley
DcsUserDisable 1.3.0, 2015-06-26 Copyright © 2007-2018 Debt Compliance Services Adds acount enable/disable links to the user list Aran Dunkley
DcsWatchComments 1.4, 2017-03-09 Copyright © 2007-2018 Debt Compliance Services Removes default watchlist functionality and makes all loan comment articles auto-watched Aran Dunkley
Elastica 1.3.0.0 (4607acf)22:52, 4 May 2016 GPL-2.0+ Base Elasticsearch functionality for other extensions by providing Elastica library Nik Everett and Chad Horohoe
WikiEditor 0.5.0 GPL-2.0+ Provides an extendable wikitext editing interface and many feature-providing modules Derk-Jan Hartman, Trevor Parscal, Roan Kattouw, Nimish Gautam and Adam Miller

References