[firefox] のディレクトリ概観

# はじめに

- 先日、firefox をソースから build してみた
   - https://qiita.com/shinobee/items/13e8da8b0f16ec680340
- ディレクトリ構成ってどのようになっている？って疑問

# ディレクトリ構成を概観する
- tree コマンドでディレクトリ構成を可視化

```
% tree | tee tree.out-all | wc -l
  356994
% tree -d | tee tree.out-dir | wc -l
   23248
```

- ディレクトリだけ出力しても巨大（23,248行）
- あきらかに不要な以下のディレクトリを除去してみたが、それほど減らないね
  - '\_\_pycache\_\_'

```
% tree -d | grep -v '__pycache__' | tee tree.out-dir | wc -l
   23020
```

- 出力階層(Level)を３に制限してみたら、かなり減った

```
% tree -d -L 3 | grep -v '__pycache__' | tee tree.out-dir3 | wc -l
   3079
```

- それでも見るには多いので、出力階層(Level)を２に制限してみた結果(607行)がこれ↓

```
.
├── accessible
│   ├── android
│   ├── aom
│   ├── atk
│   ├── base
│   ├── generic
│   ├── html
│   ├── interfaces
│   ├── ipc
│   ├── mac
│   ├── other
│   ├── tests
│   ├── windows
│   ├── xpcom
│   └── xul
├── browser
│   ├── actors
│   ├── app
│   ├── base
│   ├── branding
│   ├── components
│   ├── config
│   ├── docs
│   ├── extensions
│   ├── fonts
│   ├── fxr
│   ├── installer
│   ├── locales
│   ├── modules
│   ├── themes
│   └── tools
├── build
│   ├── autoconf
│   ├── build-clang
│   ├── build-infer
│   ├── clang-plugin
│   ├── compare-mozconfig
│   ├── debian-packages
│   ├── docs
│   ├── gyp_includes
│   ├── liblowercase
│   ├── macosx
│   ├── mobile
│   ├── moz.configure
│   ├── package
│   ├── pgo
│   ├── sanitizers
│   ├── sparse-profiles
│   ├── tests
│   ├── unix
│   ├── valgrind
│   ├── win32
│   ├── win64
│   ├── win64-aarch64
│   └── workspace-hack
├── caps
│   └── tests
├── chrome
│   └── test
├── config
│   ├── external
│   ├── faster
│   ├── makefiles
│   ├── mozunit
│   └── tests
├── devtools
│   ├── client
│   ├── docs
│   ├── platform
│   ├── server
│   ├── shared
│   └── startup
├── docs
│   ├── _static
│   ├── bug-mgmt
│   ├── code-quality
│   ├── contributing
│   ├── crash-reporting
│   ├── setup
│   ├── testing-rust-code
│   └── writing-rust-code
├── docshell
│   ├── base
│   ├── build
│   ├── resources
│   ├── shistory
│   └── test
├── dom
│   ├── abort
│   ├── animation
│   ├── audiochannel
│   ├── base
│   ├── battery
│   ├── bindings
│   ├── broadcastchannel
│   ├── browser-element
│   ├── cache
│   ├── canvas
│   ├── chrome-webidl
│   ├── clients
│   ├── commandhandler
│   ├── console
│   ├── credentialmanagement
│   ├── crypto
│   ├── debugger
│   ├── docs
│   ├── encoding
│   ├── events
│   ├── fetch
│   ├── file
│   ├── filehandle
│   ├── filesystem
│   ├── flex
│   ├── gamepad
│   ├── geolocation
│   ├── grid
│   ├── html
│   ├── imptests
│   ├── indexedDB
│   ├── interfaces
│   ├── ipc
│   ├── jsurl
│   ├── l10n
│   ├── locales
│   ├── localstorage
│   ├── manifest
│   ├── mathml
│   ├── media
│   ├── messagechannel
│   ├── midi
│   ├── network
│   ├── notification
│   ├── offline
│   ├── payments
│   ├── performance
│   ├── permission
│   ├── plugins
│   ├── power
│   ├── presentation
│   ├── prio
│   ├── promise
│   ├── prototype
│   ├── push
│   ├── quota
│   ├── reporting
│   ├── res
│   ├── script
│   ├── security
│   ├── serviceworkers
│   ├── simpledb
│   ├── smil
│   ├── storage
│   ├── svg
│   ├── system
│   ├── tests
│   ├── u2f
│   ├── url
│   ├── vr
│   ├── webauthn
│   ├── webbrowserpersist
│   ├── webgpu
│   ├── webidl
│   ├── webshare
│   ├── websocket
│   ├── workers
│   ├── worklet
│   ├── xhr
│   ├── xml
│   ├── xslt
│   └── xul
├── editor
│   ├── composer
│   ├── libeditor
│   ├── reftests
│   ├── spellchecker
│   └── txmgr
├── extensions
│   ├── auth
│   ├── permissions
│   ├── pref
│   ├── spellcheck
│   └── universalchardet
├── gfx
│   ├── 2d
│   ├── angle
│   ├── cairo
│   ├── config
│   ├── docs
│   ├── gl
│   ├── graphite2
│   ├── harfbuzz
│   ├── ipc
│   ├── layers
│   ├── ots
│   ├── qcms
│   ├── sfntly
│   ├── skia
│   ├── src
│   ├── tests
│   ├── thebes
│   ├── vr
│   ├── webrender_bindings
│   ├── wgpu
│   ├── wgpu_bindings
│   ├── wr
│   └── ycbcr
├── gradle
│   └── wrapper
├── hal
│   ├── android
│   ├── cocoa
│   ├── fallback
│   ├── linux
│   ├── sandbox
│   └── windows
├── image
│   ├── build
│   ├── decoders
│   ├── encoders
│   └── test
├── intl
│   ├── build
│   ├── docs
│   ├── encoding_glue
│   ├── gtest
│   ├── hyphenation
│   ├── icu
│   ├── icu-patches
│   ├── l10n
│   ├── locale
│   ├── locales
│   ├── lwbrk
│   ├── strres
│   ├── tzdata
│   ├── uconv
│   └── unicharutil
├── ipc
│   ├── app
│   ├── chromium
│   ├── contentproc
│   ├── glue
│   ├── gtest
│   ├── ipdl
│   ├── mscom
│   └── testshell
├── js
│   ├── ductwork
│   ├── examples
│   ├── public
│   ├── rust
│   ├── src
│   └── xpconnect
├── layout
│   ├── base
│   ├── build
│   ├── docs
│   ├── forms
│   ├── generic
│   ├── inspector
│   ├── ipc
│   ├── mathml
│   ├── media
│   ├── painting
│   ├── printing
│   ├── reftests
│   ├── style
│   ├── svg
│   ├── tables
│   ├── tools
│   └── xul
├── media
│   ├── audioipc
│   ├── ffvpx
│   ├── gmp-clearkey
│   ├── kiss_fft
│   ├── libaom
│   ├── libcubeb
│   ├── libdav1d
│   ├── libjpeg
│   ├── libmkv
│   ├── libnestegg
│   ├── libogg
│   ├── libopus
│   ├── libpng
│   ├── libsoundtouch
│   ├── libspeex_resampler
│   ├── libtheora
│   ├── libtremor
│   ├── libvorbis
│   ├── libvpx
│   ├── libwebp
│   ├── libyuv
│   ├── mp4parse-rust
│   ├── openmax_dl
│   ├── openmax_il
│   ├── psshparser
│   └── webrtc
├── memory
│   ├── build
│   ├── gtest
│   ├── mozalloc
│   ├── replace
│   └── volatile
├── mfbt
│   ├── double-conversion
│   ├── lz4
│   └── tests
├── mobile
│   ├── android
│   └── locales
├── modules
│   ├── brotli
│   ├── fdlibm
│   ├── freetype2
│   ├── libjar
│   ├── libmar
│   ├── libpref
│   ├── woff2
│   ├── xz-embedded
│   └── zlib
├── mozglue
│   ├── android
│   ├── baseprofiler
│   ├── build
│   ├── dllservices
│   ├── linker
│   ├── misc
│   ├── static
│   └── tests
├── netwerk
│   ├── base
│   ├── build
│   ├── cache
│   ├── cache2
│   ├── cookie
│   ├── dns
│   ├── ipc
│   ├── locales
│   ├── mime
│   ├── protocol
│   ├── sctp
│   ├── socket
│   ├── srtp
│   ├── streamconv
│   ├── system
│   ├── test
│   ├── url-classifier
│   └── wifi
├── nsprpub
│   ├── admin
│   ├── automation
│   ├── build
│   ├── config
│   ├── lib
│   ├── pkg
│   ├── pr
│   └── tools
├── obj-x86_64-apple-darwin19.6.0
│   ├── _build_manifests
│   ├── _tests
│   ├── _virtualenvs
│   ├── accessible
│   ├── browser
│   ├── build
│   ├── caps
│   ├── chrome
│   ├── config
│   ├── config.statusd
│   ├── devtools
│   ├── dist
│   ├── docshell
│   ├── dom
│   ├── editor
│   ├── extensions
│   ├── faster
│   ├── gfx
│   ├── hal
│   ├── image
│   ├── intl
│   ├── ipc
│   ├── js
│   ├── layout
│   ├── media
│   ├── memory
│   ├── mfbt
│   ├── modules
│   ├── mozglue
│   ├── netwerk
│   ├── other-licenses
│   ├── parser
│   ├── python
│   ├── release
│   ├── remote
│   ├── security
│   ├── services
│   ├── startupcache
│   ├── storage
│   ├── taskcluster
│   ├── testing
│   ├── third_party
│   ├── tmp
│   ├── toolkit
│   ├── tools
│   ├── uriloader
│   ├── view
│   ├── widget
│   ├── x86_64-apple-darwin
│   ├── xpcom
│   └── xpfe
├── other-licenses
│   ├── 7zstub
│   ├── atk-1.0
│   ├── bsdiff
│   ├── ia2
│   ├── nsis
│   └── snappy
├── parser
│   ├── expat
│   ├── html
│   ├── htmlparser
│   ├── prototype
│   └── xml
├── python
│   ├── devtools
│   ├── docs
│   ├── gdbpp
│   ├── l10n
│   ├── lldbutils
│   ├── mach
│   ├── mozboot
│   ├── mozbuild
│   ├── mozlint
│   ├── mozperftest
│   ├── mozrelease
│   ├── mozterm
│   └── mozversioncontrol
├── remote
│   ├── doc
│   ├── domains
│   ├── observers
│   ├── server
│   ├── sessions
│   ├── startup
│   ├── targets
│   └── test
├── security
│   ├── apps
│   ├── certverifier
│   ├── ct
│   ├── mac
│   ├── manager
│   ├── nss
│   └── sandbox
├── services
│   ├── automation
│   ├── common
│   ├── crypto
│   ├── fxaccounts
│   ├── interfaces
│   ├── settings
│   └── sync
├── servo
│   ├── components
│   ├── ports
│   └── tests
├── startupcache
│   └── test
├── storage
│   ├── build
│   ├── rust
│   ├── test
│   └── variant
├── taskcluster
│   ├── ci
│   ├── docker
│   ├── docs
│   ├── scripts
│   ├── taskgraph
│   └── test
├── testing
│   ├── awsy
│   ├── condprofile
│   ├── config
│   ├── crashtest
│   ├── docs
│   ├── extensions
│   ├── firefox-ui
│   ├── geckodriver
│   ├── gtest
│   ├── jsshell
│   ├── marionette
│   ├── mochitest
│   ├── modules
│   ├── mozbase
│   ├── mozharness
│   ├── perfdocs
│   ├── performance
│   ├── profiles
│   ├── raptor
│   ├── runtimes
│   ├── specialpowers
│   ├── talos
│   ├── tools
│   ├── tps
│   ├── web-platform
│   ├── webdriver
│   └── xpcshell
├── third_party
│   ├── WinToast
│   ├── aom
│   ├── cups
│   ├── dav1d
│   ├── js
│   ├── libwebrtc
│   ├── msgpack
│   ├── prio
│   ├── python
│   ├── rlbox
│   ├── rust
│   ├── sipcc
│   ├── sqlite3
│   └── webkit
├── toolkit
│   ├── actors
│   ├── components
│   ├── content
│   ├── crashreporter
│   ├── docs
│   ├── library
│   ├── locales
│   ├── modules
│   ├── mozapps
│   ├── pluginproblem
│   ├── profile
│   ├── system
│   ├── themes
│   └── xre
├── tools
│   ├── bloatview
│   ├── browsertime
│   ├── clang-tidy
│   ├── code-coverage
│   ├── compare-locales
│   ├── coverity
│   ├── crashreporter
│   ├── fuzzing
│   ├── github-sync
│   ├── infer
│   ├── jprof
│   ├── leak-gauge
│   ├── lint
│   ├── moztreedocs
│   ├── performance
│   ├── phabricator
│   ├── power
│   ├── profiler
│   ├── quitter
│   ├── rb
│   ├── rewriting
│   ├── sanitizer
│   ├── tryselect
│   ├── update-packaging
│   ├── update-programs
│   ├── update-verify
│   └── vcs
├── uriloader
│   ├── base
│   ├── docs
│   ├── exthandler
│   ├── prefetch
│   └── preload
├── view
│   └── crashtests
├── widget
│   ├── android
│   ├── cocoa
│   ├── crashtests
│   ├── gtk
│   ├── headless
│   ├── reftests
│   ├── tests
│   ├── uikit
│   ├── windows
│   └── x11
├── xpcom
│   ├── base
│   ├── build
│   ├── components
│   ├── doc
│   ├── ds
│   ├── glue
│   ├── idl-parser
│   ├── io
│   ├── libxpt
│   ├── reflect
│   ├── rust
│   ├── string
│   ├── system
│   ├── tests
│   ├── threads
│   ├── windbgdlg
│   └── xpidl
└── xpfe
    └── appshell

612 directories
```

<!-- eof -->