SlideShare a Scribd company logo
Composerthe right way
@rdohms
Rafael Dohms
photo: smileymanwithahat
Composer the right way - NomadPHP
Composer the right way - NomadPHP
photo: Rob Allen
photo: 18millionpixels
Library Publisher
photo: 18millionpixels
Library Publisher
Library Consumer
photo: 18millionpixels
Library Publisher
Library
Library Consumer
photo: 18millionpixels
Library Publisher
Library
Library Consumer
Packagist
photo: 18millionpixels
photo: 18millionpixels
{
"require": {
"monolog/monolog": “2.0”
}
}
photo: 18millionpixels
{
"require": {
"monolog/monolog": “2.0”
}
}
{
"name": “monolog/monolog”
...
}
photo: 18millionpixels
{
"require": {
"monolog/monolog": “2.0”
}
}
{
"name": “monolog/monolog”
...
}
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- The requested package monolog/monolog could not be found in any version, there may be a typo in the package name.
Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.
Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
Installation failed, reverting ./composer.json to its original content.
photo: 18millionpixels
{
"require": {
"monolog/monolog": “2.0”
}
}
{
"name": “monolog/monolog”
...
}
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- The requested package monolog/monolog could not be found in any version, there may be a typo in the package name.
Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.
Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
Installation failed, reverting ./composer.json to its original content.
___

~1.1
photo: 18millionpixels
{
"require": {
"monolog/monolog": “2.0”
}
}
{
"name": “monolog/monolog”
...
}
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- The requested package monolog/monolog could not be found in any version, there may be a typo in the package name.
Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.
Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
Installation failed, reverting ./composer.json to its original content.
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing psr/log (1.0.0)
Loading from cache
- Installing monolog/monolog (1.11.0)
Downloading: 100%
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
[...]
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
Writing lock file
Generating autoload files
___

~1.1
photo: 18millionpixels
composer
composercomposer.json
composercomposer.json
composer.lock
composercomposer.json
composer.lock
discovery Packagist
composercomposer.json
composer.lock
discovery sourcePackagist Repository
composercomposer.json
composer.lock
discovery source
installation
Packagist
Vendor

Folder
Repository
composercomposer.json
composer.lock
$ composer init
Library Publisher
$ composer init
Library Publisher
$ composer require <vendor>/<package>
Library Consumer
$ composer require monolog/monolog
Tip
$ composer require monolog/monolog
Tip
Using version ~1.11 for monolog/monolog
Release the @DOHMSRAKEN!!
photo by @rosstuck
Library Publishers
Composer for
Library Publisher Unique vendor names
vendor / package
Library Publisher Unique vendor names
pick your own 

unique vendor
Library Publisher Unique vendor names
or join a collective
README
CHANGELOG
LICENSE
Library Publisher What’s in your library?
README
CHANGELOG
LICENSE
Library Publisher What’s in your library?
What problem does it solve?
Usage examples
Install instructions
How can I contribute?
README
CHANGELOG
LICENSE
Library Publisher What’s in your library?
List relevant changes
Make BC breaks prominent
Show examples of how to upgrade
What problem does it solve?
Usage examples
Install instructions
How can I contribute?
README
CHANGELOG
LICENSE
Library Publisher What’s in your library?
List relevant changes
Make BC breaks prominent
Show examples of how to upgrade
Pick one that reflects your values
choosealicense.com can help
What problem does it solve?
Usage examples
Install instructions
How can I contribute?
Library Publisher Semantic Versioning
1 . 2 3.major minor patch
Library Publisher Semantic Versioning
1 . 2 3.major minor patch
Bug Fixes
Library Publisher Semantic Versioning
1 . 2 3.major minor patch
New Features Bug Fixes
Library Publisher Semantic Versioning
1 . 2 3.major minor patch
API / BC
Breaks
New Features Bug Fixes
Library Publisher Tagging
Tag it and Bag it
Library Publisher Tagging
# Simple Tag
$ git tag v1.2.3

# Annotated Tag

$ git tag -a v1.2.3 -m “Description of Release"
Library Publisher “I'm out"
photo: jilliancorinne
Library Publisher “I'm out"
Library Publisher “I'm out"
Click here and provide another
Library Publisher “I'm out"
Library Publisher “I'm out"
Pick the 

correct 

version
Library Publisher Pick a Version
*the asterisk
Library Publisher Pick a Version
*the asterisk○Library Publisher Pick a Version
~the tilde
Library Publisher Pick a Version
~1.2
>=1.2.0, <2.0.0
Library Publisher Pick a Version
~1.2
>=1.2.0, <2.0.0
Library Publisher Pick a Version
~1.2.3
>=1.2.3, <1.3
Library Publisher Pick a Version
~1.2.3
>=1.2.3, <1.3
Library Publisher Pick a Version
"require": {
"zendframework/zend-stdlib": “2.1.*”,
"zendframework/zend-servicemanager": "2.1.*",
},
“require-dev": {
“phpunit/phpunit": “~3.7”
}
Library Publisher Pick a Version
"require": {
"zendframework/zend-stdlib": “~2.3”,
"zendframework/zend-servicemanager": “~2.3",
},
“require-dev": {
“phpunit/phpunit": “~4”
}
3rd party library
Your application
"require": {
"zendframework/zend-stdlib": “2.1.*”,
"zendframework/zend-servicemanager": "2.1.*",
},
“require-dev": {
“phpunit/phpunit": “~3.7”
}
Library Publisher Pick a Version
"require": {
"zendframework/zend-stdlib": “~2.3”,
"zendframework/zend-servicemanager": “~2.3",
},
“require-dev": {
“phpunit/phpunit": “~4”
}
3rd party library
Your application
"require": {
"zendframework/zend-stdlib": “2.1.*”,
"zendframework/zend-servicemanager": "2.1.*",
},
“require-dev": {
“phpunit/phpunit": “~3.7”
}
Library Publisher Pick a Version
"require": {
"zendframework/zend-stdlib": “~2.3”,
"zendframework/zend-servicemanager": “~2.3",
},
“require-dev": {
“phpunit/phpunit": “~4”
}
3rd party library
Your application
"require": {
"zendframework/zend-stdlib": “2.1.*”,
"zendframework/zend-servicemanager": "2.1.*",
},
“require-dev": {
“phpunit/phpunit": “~3.7”
}
Library Publisher Pick a Version
"require": {
"zendframework/zend-stdlib": “~2.3”,
"zendframework/zend-servicemanager": “~2.3",
},
“require-dev": {
“phpunit/phpunit": “~4”
}
3rd party library
Your application
~2.1
Yo @rdohms, I’m
really happy for you and
I’m gonna let you finish, but
the tilde operator is
totally old news.
^the caret
Library Publisher Pick a Version
1.2.3
>=1.2.3, <2.0.0
Library Publisher Pick a Version
^
1.2.3
>=1.2.3, <2.0.0
Library Publisher Pick a Version
^
0.3.0
>=0.3.0, <0.4.0
Library Publisher Pick a Version
^
0.3.0
>=0.3.0, <0.4.0
Library Publisher Pick a Version
^
0.3.0
>=0.3.0, <0.4.0
Library Publisher Pick a Version
^
Major Version Zero
Library Consumers
Composer for
Library Consumer Install or update?
install or update?
Library Consumer Install or update?
Make sure you have
installed the last
updates from other
developers.
?
install updateor
Library Consumer Install or update?
Make sure you have
installed the last
updates from other
developers.
?
install updateor
Library Consumer Install or update?
Deploying a new
release of your
application to
production.
?
install updateor
Library Consumer Install or update?
Deploying a new
release of your
application to
production.
?
install updateor
Library Consumer Install or update?
Checked out a new
project and want to
start coding.
?
install updateor
Library Consumer Install or update?
Checked out a new
project and want to
start coding.
?
install updateor
Library Consumer Install or update?
Grab new versions for
the dependencies of
your project.
?
install updateor
Library Consumer Install or update?
Grab new versions for
the dependencies of
your project.
?
install updateor
Your application
Public
Repository
Library Consumer Install or update?
composer.lock
composer install
composer update
Your application
Public
Repository
Library Consumer Install or update?
composer.lock
read
composer install
composer update
Your application
Public
Repository
Library Consumer Install or update?
composer.lock
read grab version
composer install
composer update
Your application
Public
Repository
Library Consumer Install or update?
composer.lock
read grab version
check latest compatible release
composer install
composer update
Your application
Public
Repository
Library Consumer Install or update?
composer.lock
read grab version
check latest compatible release
update
composer install
composer update
Library Consumer Install or update?
commit your lock file
Library Consumer Install or update?
$ composer update --lock
Tip
Pick the 

correct 

version
Library Consumer Version Selection
Library Consumer Version Selection
dev-master
Library Consumer Version Selection
Library Consumer Version Selection
Library Consumer Using forks
found a bug?
Library Consumer Using forks
$ composer install --prefer-source
Tip
Library Consumer Using forks
Library Consumer Using forks
patch it,
Library Consumer Using forks
patch it,
fork it,
Library Consumer Using forks
patch it,
fork it,
push it…
Library Consumer Using forks
patch it,
fork it,
push it…
wait for it.
Library Consumer Using forks
patch it,
fork it,
push it…
wait for it.
Library Consumer Using forks
symfony/symfony
Library Consumer Using forks
symfony/symfony
rdohms/symfony
Library Consumer Using forks
symfony/symfony
rdohms/symfony
"repositories": [
{
"type": "vcs",
"url": "https://github.com/rdohms/symfony"
}
]
Library Consumer Using forks
symfony/symfony
rdohms/symfony
"repositories": [
{
"type": "vcs",
"url": "https://github.com/rdohms/symfony"
}
]
Library Consumer Using forks
Do not put
forked repositories

on packagist
Library Consumer Using forks
"require": {
"symfony/symfony": "dev-my-patch as 2.5.0"
}
Tip
Library Consumer Composer and deployments
Composer
and
production
Library Consumer Composer and deployments
Production
Server
Packagist
Ƙ
Library Consumer Composer and deployments
Production
Server
Packagist
Ƙ
Man in the middle
Library Consumer Composer and deployments
Build Server
Production
Server
Packagist
Ƙ
Man in the middle
Library Consumer Composer and deployments
$ composer install --prefer-dist --no-dev —optimize-autoloader
Library Consumer Composer and deployments
$ composer install --prefer-dist --no-dev —optimize-autoloader
Library Consumer Composer and deployments
$ composer install --prefer-dist --no-dev —optimize-autoloader
Install same versions
Uses information defined in the composer.lock file
Library Consumer Composer and deployments
$ composer install --prefer-dist --no-dev —optimize-autoloader
Library Consumer Composer and deployments
$ composer install --prefer-dist --no-dev —optimize-autoloader
Downloads distribution packages
Can use local cache for previously downloaded
No git required
Library Consumer Composer and deployments
$ composer install --prefer-dist --no-dev —optimize-autoloader
Library Consumer Composer and deployments
$ composer install --prefer-dist --no-dev —optimize-autoloader
Avoids download unnecessary developer libraries
Library Consumer Composer and deployments
$ composer install --prefer-dist --no-dev —optimize-autoloader
Library Consumer Composer and deployments
$ composer install --prefer-dist --no-dev —optimize-autoloader
Generates classmap from PSR-0/4 autoloaders
Speeds up autoloading
Library Consumer Licensing
$ composer licenses
Name: __root__
Version: 1.0.0
Licenses: none
Dependencies:
doctrine/annotations v1.2.1 MIT
doctrine/cache v1.3.1 MIT
doctrine/collections v1.2 MIT
doctrine/common v2.4.2 MIT
doctrine/inflector v1.0 MIT
doctrine/lexer v1.0 MIT
psr/log 1.0.0 MIT
symfony/symfony v2.5.6 MIT
twig/twig v1.16.2 BSD-3-Clause
Tip
Library Consumer Private Packages and Proxy
Satis and Toran
composer PackagistYour application
Public
Repository
Library Consumer Private Packages and Proxy
composer
Packagist
Your application
Public
Repository
Satis / Toran
Private
Repository
proxy
Library Consumer Private Packages and Proxy
Library Consumer Private Packages and Proxy
toranproxy.com
private repos, automatic packagist proxy
and support composer development
Library Consumer Tooling
$ composer require jquery/jquery
How many of you?
Library Consumer Tooling
Library Consumer Tooling
Javascript only Developer
Library Consumer Tooling
my-js-library
Javascript only Developer
Library Consumer Tooling
my-js-library
package.json
Javascript only Developer
Library Consumer Tooling
my-js-library
package.json
bower.json
Javascript only Developer
Library Consumer Tooling
my-js-library
composer.json
package.json
bower.json
Javascript only Developer
Library Consumer Tooling
my-js-library
composer.json
package.json
bower.json
.gemspec
Library Consumer Tooling
Library Consumer Tooling
Right tool.

Right job.
Library Consumer One last thing
One last thing…
Library Consumer pickle!
Library Consumer pickle!
$ pickle install memcache
https://wiki.php.net/rfc/pickle
https://github.com/FriendsOfPHP/pickle
Thank you.
https://joind.in/14092
https://leanpub.com/
composer-cookbook
Thank you.any questions?
http://slides.doh.ms
http://doh.ms
@rdohms
https://joind.in/14092
https://leanpub.com/
composer-cookbook

More Related Content

PDF
Composer The Right Way
PDF
Composer the right way - DPC15
PDF
Composer The Right Way #PHPjhb15
PDF
Composer the right way
PDF
Composer the Right Way - MM16NL
PDF
Composer the Right Way - PHPBNL16
PDF
Composer The Right Way - PHPUGMRN
PDF
Composer the Right Way - PHPSRB16
Composer The Right Way
Composer the right way - DPC15
Composer The Right Way #PHPjhb15
Composer the right way
Composer the Right Way - MM16NL
Composer the Right Way - PHPBNL16
Composer The Right Way - PHPUGMRN
Composer the Right Way - PHPSRB16

What's hot (20)

PDF
Composer The Right Way - 010PHP
PDF
Composer the right way [SweetlakePHP]
PDF
Composer for Busy Developers - php|tek13
PDF
Composer the right way - SunshinePHP
PDF
Dependency management with Composer
PPTX
PHP Dependency Management with Composer
PDF
Dependency Management with Composer
PPTX
Php psr standard 2014 01-22
PDF
Mastering Maven 2.0 In 1 Hour V1.3
PDF
CMake Tutorial
PDF
Asynchronous Systems with Fn Flow
PDF
Effective CMake
ODP
Packaging for the Maemo Platform
ODP
The Gory Details of Debian packages
PPTX
Introduction to Makefile
PDF
CMake - Introduction and best practices
PDF
Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...
PDF
Backward to DPAN
PPTX
Composer | PHP Dependency Manager
Composer The Right Way - 010PHP
Composer the right way [SweetlakePHP]
Composer for Busy Developers - php|tek13
Composer the right way - SunshinePHP
Dependency management with Composer
PHP Dependency Management with Composer
Dependency Management with Composer
Php psr standard 2014 01-22
Mastering Maven 2.0 In 1 Hour V1.3
CMake Tutorial
Asynchronous Systems with Fn Flow
Effective CMake
Packaging for the Maemo Platform
The Gory Details of Debian packages
Introduction to Makefile
CMake - Introduction and best practices
Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...
Backward to DPAN
Composer | PHP Dependency Manager
Ad

Viewers also liked (13)

PPS
Jacques le nantec
PPTX
Dark Matter: Collection Development in School Libraries
PDF
TABLET COMO INNOVACIÓN TECNOLÓGICA PARA LA EDUCACIÓN
PPT
Chapter 38
PDF
Annotations in PHP, They Exist.
PPTX
Meditation-The way to success
PPT
Global child care
PPSX
Italy, capitalism and the 10 commandments
PDF
Mobile Marketing for Credit Unions: The Basics. The Technologies. & The Platf...
PPTX
Mahara uk-slides may 21 14
PDF
I pad as teachers pet
PPTX
изменение жиров в пищевых продуктах
PPTX
Цена земли. Экономическое основание её определения
Jacques le nantec
Dark Matter: Collection Development in School Libraries
TABLET COMO INNOVACIÓN TECNOLÓGICA PARA LA EDUCACIÓN
Chapter 38
Annotations in PHP, They Exist.
Meditation-The way to success
Global child care
Italy, capitalism and the 10 commandments
Mobile Marketing for Credit Unions: The Basics. The Technologies. & The Platf...
Mahara uk-slides may 21 14
I pad as teachers pet
изменение жиров в пищевых продуктах
Цена земли. Экономическое основание её определения
Ad

Similar to Composer the right way - NomadPHP (20)

PDF
Beginning with Composer - Dependency manager in php
PDF
Game Changing Dependency Management
PDF
Composer - The missing package manager for PHP
PPTX
Nh php may 2014 - composer
PDF
Shifting gears with Composer
PDF
Composer Best Practices
PDF
Composer Best Practices.pdf
PDF
Composer Best Practices
PDF
Composer yourself: a reintroduction to composer
PDF
Php Dependency Management with Composer ZendCon 2016
PDF
Leveraging Composer in Existing Projects
KEY
Composer
PDF
Php Dependency Management with Composer ZendCon 2017
PDF
12 Composer #burningkeyboards
PDF
Composer: putting dependencies on the score
PDF
Composer for busy developers - DPC13
PDF
composer_talk_20160209
PDF
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
PDF
Composer: Dependency Manager for PHP
Beginning with Composer - Dependency manager in php
Game Changing Dependency Management
Composer - The missing package manager for PHP
Nh php may 2014 - composer
Shifting gears with Composer
Composer Best Practices
Composer Best Practices.pdf
Composer Best Practices
Composer yourself: a reintroduction to composer
Php Dependency Management with Composer ZendCon 2016
Leveraging Composer in Existing Projects
Composer
Php Dependency Management with Composer ZendCon 2017
12 Composer #burningkeyboards
Composer: putting dependencies on the score
Composer for busy developers - DPC13
composer_talk_20160209
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Composer: Dependency Manager for PHP

More from Rafael Dohms (20)

PDF
The Individual Contributor Path - DPC2024
PDF
Application Metrics - IPC2023
PDF
How'd we get here? A guide to Architectural Decision Records
PDF
Architectural Decision Records - PHPConfBR
PDF
Application Metrics (with Prometheus examples)
PDF
Application metrics - Confoo 2019
PDF
Writing code you won’t hate tomorrow - PHPCE18
PDF
Application Metrics (with Prometheus examples) #PHPDD18
PDF
Application metrics with Prometheus - DPC18
PDF
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
PDF
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
PDF
Writing Code That Lasts - #Magento2Seminar, Utrecht
PDF
“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16
PDF
“Writing code that lasts” … or writing code you won’t hate tomorrow.
PDF
A Journey into your Lizard Brain - PHP Conference Brasil 2015
PDF
“Writing code that lasts” … or writing code you won’t hate tomorrow.
PDF
“Writing code that lasts” … or writing code you won’t hate tomorrow.
PDF
“Writing code that lasts” … or writing code you won’t hate tomorrow.
PDF
Journey into your Lizard Brain - PHPJHB15
PDF
A journey into your Lizard Brain
The Individual Contributor Path - DPC2024
Application Metrics - IPC2023
How'd we get here? A guide to Architectural Decision Records
Architectural Decision Records - PHPConfBR
Application Metrics (with Prometheus examples)
Application metrics - Confoo 2019
Writing code you won’t hate tomorrow - PHPCE18
Application Metrics (with Prometheus examples) #PHPDD18
Application metrics with Prometheus - DPC18
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
Writing Code That Lasts - #Magento2Seminar, Utrecht
“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16
“Writing code that lasts” … or writing code you won’t hate tomorrow.
A Journey into your Lizard Brain - PHP Conference Brasil 2015
“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.
Journey into your Lizard Brain - PHPJHB15
A journey into your Lizard Brain

Recently uploaded (20)

PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Approach and Philosophy of On baking technology
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Machine learning based COVID-19 study performance prediction
PDF
KodekX | Application Modernization Development
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPT
Teaching material agriculture food technology
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
cuic standard and advanced reporting.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
MIND Revenue Release Quarter 2 2025 Press Release
“AI and Expert System Decision Support & Business Intelligence Systems”
Approach and Philosophy of On baking technology
20250228 LYD VKU AI Blended-Learning.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
Machine learning based COVID-19 study performance prediction
KodekX | Application Modernization Development
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Big Data Technologies - Introduction.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Understanding_Digital_Forensics_Presentation.pptx
Teaching material agriculture food technology
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
cuic standard and advanced reporting.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy

Composer the right way - NomadPHP