SDSM:Languages and Frameworks

From SMUSwiki
Revision as of 18:48, 26 May 2024 by Darren.duncan (talk | contribs) (Split SDSM document part Languages and Frameworks off from Index.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


This document consists of multiple parts; for a directory to all of the parts, see SDSM:Index.

Description

This part of the SDS Modernization (SDSM) document provides information about programming languages and frameworks used by SDS.

RETURN

Introduction

SDS itself is a web application written mainly in the PHP programming language (https://www.php.net). Some portions are also written in the JavaScript programming language, though it is intended that these will be replaced with PHP code, mostly if not entirely. Some portions are also written in the MySQL DBMS (https://www.mysql.com) dialect of the SQL programming language, but these are being replaced with PHP code that uses a DBMS abstraction instead of literal SQL.

SDS specifically uses PHP major version 8.1, which was first released for general production use on 2020 Nov 26 (https://www.php.net/ChangeLog-8.php); PHP 8.1 stopped receiving active support by its principal maintainers on 2023 Nov 25, and then for critical security issues it will only be supported by them until 2025 Dec 31 (https://www.php.net/supported-versions.php).

SDS specifically uses MySQL major version 8.0, which was first released for general production use on 2018 Apr 19 (https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-11.html); MySQL 8.0 will stop receiving LTS support by its principal maintainers in 2026 April.

SDS can run on a variety of server environments and operating systems, same as PHP and MySQL do. However, its canonical (and also its Canonical) runtime environment is the Ubuntu operating system (https://ubuntu.com), which SMUS runs its production and shared testing deployments in.

Those production SDS deployments specifically use Ubuntu major version 22.04 LTS, which was first released for general production use on 2022 Apr 21; it will stop receiving standard support in 2027 and end of life support in 2032 (https://wiki.ubuntu.com/Releases).

SMUS uses the specific versions of PHP and MySQL that are provided with the Ubuntu version it uses, so the former are only updated when the latter is updated. Most notable is that SDS is constrained to using PHP 8.1 for as long as it is run on Ubuntu 22.04. While their principal maintainers may stop supporting those versions sooner, Ubuntu themselves would continue to provide critical security and bug fixes to MySQL and PHP bundled with their LTS releases, but not new major versions.

RETURN

SDS Laravel PHP Library Dependencies

Required In Composer Config File

The Composer config file composer.json of SDS Laravel explicitly declares that it requires these 19 PHP library dependencies:

  • barryvdh/laravel-debugbar (^3.7)
  • directorytree/ldaprecord-laravel (^2.7.3)
  • etern8ty/beanstream (dev-master)
  • fakerphp/faker (^1.23.1)
  • fideloper/proxy (^4.4.2)
  • goldspecdigital/laravel-eloquent-uuid (^8.0.1)
  • guzzlehttp/guzzle (^7.8.1)
  • intervention/image (^2.7.2)
  • juliomotol/laravel-auth-timeout (^3.1.1)
  • lab404/laravel-impersonate (^1.7.5)
  • laravel/framework (^8.83.27)
  • laravel/helpers (^1.7)
  • laravel/tinker (^2.9)
  • laravel/ui (^3.4.6)
  • mockery/mockery (^1.6.11)
  • nunomaduro/collision (^5.11)
  • phpunit/phpunit (^10.5.20)
  • spatie/laravel-ignition (^1.6.4)
  • staudenmeir/eloquent-has-many-deep (^1.14.4)

RETURN

Resolved From Composer Config File

When Composer evaluates its config file composer.json of SDS Laravel, its declared required PHP library dependencies are resolved to these 117, which are actually installed:

  • barryvdh/laravel-debugbar (v3.7.0)
  • brick/math (0.12.1)
  • carbonphp/carbon-doctrine-types (3.2.0)
  • dflydev/dot-access-data (v3.0.2)
  • directorytree/ldaprecord (v2.20.5)
  • directorytree/ldaprecord-laravel (v2.7.3)
  • doctrine/inflector (2.0.10)
  • doctrine/lexer (1.2.3)
  • dragonmantank/cron-expression (v3.3.3)
  • egulias/email-validator (2.1.25)
  • etern8ty/beanstream (dev-master 297b986)
  • facade/ignition-contracts (1.0.2)
  • fakerphp/faker (v1.23.1)
  • fideloper/proxy (4.4.2)
  • filp/whoops (2.15.4)
  • goldspecdigital/laravel-eloquent-uuid (v8.0.1)
  • graham-campbell/result-type (v1.1.2)
  • guzzlehttp/guzzle (7.8.1)
  • guzzlehttp/promises (2.0.2)
  • guzzlehttp/psr7 (2.6.2)
  • hamcrest/hamcrest-php (v2.0.1)
  • intervention/image (2.7.2)
  • juliomotol/laravel-auth-timeout (v3.1.1)
  • lab404/laravel-impersonate (1.7.5)
  • laravel/framework (v8.83.27)
  • laravel/helpers (v1.7.0)
  • laravel/serializable-closure (v1.3.3)
  • laravel/tinker (v2.9.0)
  • laravel/ui (v3.4.6)
  • league/commonmark (2.4.2)
  • league/config (v1.2.0)
  • league/flysystem (1.1.10)
  • league/mime-type-detection (1.15.0)
  • maximebf/debugbar (v1.22.3)
  • mockery/mockery (1.6.11)
  • monolog/monolog (2.9.3)
  • myclabs/deep-copy (1.11.1)
  • nesbot/carbon (2.72.3)
  • nette/schema (v1.3.0)
  • nette/utils (v4.0.4)
  • nikic/php-parser (v5.0.2)
  • nunomaduro/collision (v5.11.0)
  • opis/closure (3.6.3)
  • phar-io/manifest (2.0.4)
  • phar-io/version (3.2.1)
  • phpoption/phpoption (1.9.2)
  • phpunit/php-code-coverage (10.1.14)
  • phpunit/php-file-iterator (4.1.0)
  • phpunit/php-invoker (4.0.0)
  • phpunit/php-text-template (3.0.1)
  • phpunit/php-timer (6.0.0)
  • phpunit/phpunit (10.5.20)
  • psr/clock (1.0.0)
  • psr/container (1.1.2)
  • psr/event-dispatcher (1.0.0)
  • psr/http-client (1.0.3)
  • psr/http-factory (1.0.2)
  • psr/http-message (2.0)
  • psr/log (2.0.0)
  • psr/simple-cache (1.0.1)
  • psy/psysh (v0.12.3)
  • ralouphie/getallheaders (3.0.3)
  • ramsey/collection (2.0.0)
  • ramsey/uuid (4.7.6)
  • sebastian/cli-parser (2.0.1)
  • sebastian/code-unit (2.0.0)
  • sebastian/code-unit-reverse-lookup (3.0.0)
  • sebastian/comparator (5.0.1)
  • sebastian/complexity (3.2.0)
  • sebastian/diff (5.1.1)
  • sebastian/environment (6.1.0)
  • sebastian/exporter (5.1.2)
  • sebastian/global-state (6.0.2)
  • sebastian/lines-of-code (2.0.2)
  • sebastian/object-enumerator (5.0.0)
  • sebastian/object-reflector (3.0.0)
  • sebastian/recursion-context (5.0.0)
  • sebastian/type (4.0.0)
  • sebastian/version (4.0.1)
  • spatie/backtrace (1.6.1)
  • spatie/flare-client-php (1.5.1)
  • spatie/ignition (1.14.1)
  • spatie/laravel-ignition (1.6.4)
  • staudenmeir/eloquent-has-many-deep (v1.14.4)
  • swiftmailer/swiftmailer (v6.3.0)
  • symfony/console (v5.4.39)
  • symfony/css-selector (v6.4.7)
  • symfony/deprecation-contracts (v3.5.0)
  • symfony/error-handler (v5.4.39)
  • symfony/event-dispatcher (v6.4.7)
  • symfony/event-dispatcher-contracts (v3.5.0)
  • symfony/finder (v5.4.39)
  • symfony/http-foundation (v5.4.39)
  • symfony/http-kernel (v5.4.39)
  • symfony/mime (v5.4.39)
  • symfony/polyfill-ctype (v1.29.0)
  • symfony/polyfill-iconv (v1.29.0)
  • symfony/polyfill-intl-grapheme (v1.29.0)
  • symfony/polyfill-intl-idn (v1.29.0)
  • symfony/polyfill-intl-normalizer (v1.29.0)
  • symfony/polyfill-mbstring (v1.29.0)
  • symfony/polyfill-php72 (v1.29.0)
  • symfony/polyfill-php73 (v1.29.0)
  • symfony/polyfill-php80 (v1.29.0)
  • symfony/process (v5.4.39)
  • symfony/routing (v5.4.39)
  • symfony/service-contracts (v3.5.0)
  • symfony/string (v6.4.7)
  • symfony/translation (v6.4.7)
  • symfony/translation-contracts (v3.5.0)
  • symfony/var-dumper (v5.4.39)
  • theseer/tokenizer (1.2.3)
  • tightenco/collect (v9.52.7)
  • tijsverkoyen/css-to-inline-styles (v2.2.7)
  • vlucas/phpdotenv (v5.6.0)
  • voku/portable-ascii (1.6.1)
  • webmozart/assert (1.11.0)

RETURN

Directly Used By Name In PHP Source Files

The PHP source code files of SDS Laravel contain direct references to a variety of third-party PHP classes, most instances of which are parts of the Laravel framework, and some that aren't. Often their fully-qualified names only appear on the form of use statements but other times those names don't appear in use statements and in the main body of PHP code instead.

This SDSM document sub-section enumerates the third-party PHP classes that are directly referenced by name in the SDS Laravel PHP source code, which is the strongest indicator that those classes are actually-used dependencies of it, rather than declared dependencies that are not actually used.

Directly used by name in about 800 app PHP files:

  • Illuminate\*
  • Auth aka Illuminate\Support\Facades\Auth
  • DB aka Illuminate\Support\Facades\DB
  • Mail aka Illuminate\Support\Facades\Mail
  • Redirect aka Illuminate\Support\Facades\Redirect
  • URL aka Illuminate\Support\Facades\URL

Directly used by name in app/Models/File.php and app/Http/Controllers/Admin/Migration/ImportPhotosController.php only:

  • Image aka Intervention\Image\ImageServiceProvider

Directly used by name in about 70 app PHP classes:

  • Carbon\Carbon
  • Carbon\Exceptions\InvalidFormatException

Directly used by name in 10 app PHP classes:

  • LdapRecord\*

Directly used by name in 9 app PHP model classes:

  • GoldSpecDigital\LaravelEloquentUUID\Database\Eloquent\Uuid

Directly used by name in 5 app PHP classes related to Blackbaud or Bambora:

  • GuzzleHttp\Client
  • GuzzleHttp\Exception\ClientException
  • GuzzleHttp\Exception\GuzzleException

Directly used by name in app/Models/Finance/Bambora.php or app/Http/Controllers/Api/UserProfileController.php only:

  • Beanstream\ApiException
  • Beanstream\Exception
  • Beanstream\Gateway

Directly used by name in 11 php files mostly database/factories/*.php:

  • Faker\Generator

Directly used by name in app/Models/User.php only:

  • Lab404\Impersonate\*

Directly used by name in app/Providers/AppServiceProvider.php only:

  • Dotenv\Dotenv

Directly used by name in app/Models/Pivot/FormCampaignPerson.php only:

  • Staudenmeir\EloquentHasManyDeep\HasRelationships

Directly used by name in app/Http/Middleware/TrustProxies.php only:

  • Fideloper\Proxy\TrustProxies

Directly used by name in app/Http/Middleware/AuthTimeoutMiddleware.php and app/Http/Kernel.php only:

  • JulioMotol\AuthTimeout\Middleware\AuthTimeoutMiddleware

Directly used by name in app/Exceptions/Handler.php only:

  • Symfony\Component\HttpFoundation\Response

Directly used by name in config/logging.php only:

  • Monolog\Handler\*

Directly used by name in tests/Unit/ExampleTest.php only:

  • PHPUnit\Framework\TestCase

Directly referenced by name COMMENTED-OUT in app/Http/Kernel.php only:

  • Fruitcake\Cors\HandleCors

RETURN