no it's not necessary in case you use the composer autoloader, or you extend the AUTOLOAD paths accordingly.
In case of cortex, you could just download it anywhere and add its lib path to the autoloader like:
AUTOLOAD = "lib/,app/,includes/f3-cortex/"
or in the index with
$f3->concat('AUTOLOAD',',inc/f3-cortex/');
and you are ready to go.
The trick here does the directory
structure within the cortex git repository. At its base dir I got
/lib/db/cortex.php, so when you add the root dir of that cortex lib to
the AUTOLOAD path, for the F3 autoloader it looks like they were in the
same directory.
If the composer autoloader is used, this structure
isn't even necessary as the composer autoload file contains a map of
namespaced classes and their real filepath.
So if you start a new project with composer, do:
and add this setup to your index.php like this:
<?php
// composer autoloader for required packages and dependencies
require_once('vendor/autoload.php');
/** @var \Base $f3 */
$f3 = \Base::instance();
// F3 autoloader for application business code
$f3->set('AUTOLOAD', 'app/');
// ...
$f3->run();
that's about it.