Directory Structure
This documents the contents of the $LJHOME development folder as present on all Dreamhacks.
bin
Backend utilities for maintaining and upgrading the site.
Commonly used programs in this directory include:
Subdirectories are:
dev
maint
misc
upgrading
cgi-bin
Code libraries that power the site. This directory is the base of the library path--that is use Net::OpenID::Consumer;
refers to the code in cgi-bin/Net/OpenID/Consumer.pm
. It contains all the custom Perl libraries and functions that the code references including the LJ::*
and DW::*
libraries.
All subdirectories here map to library names, so DW::Foo
goes in cgi-bin/DW/Foo.pm
and so forth.
Code in *.pl
files in this directory are also library files but in an older style that haven't been converted over to use .pm. These are described in Legacy .pl Files.
LJ
Original LJ modules.
DW
Newer, DW-based modules.
doc
Unedited versions of some configuration files are stored here, plus the DocBook manual.
raw
Docbook formatted source for the old and very much out of date docbook code for the LiveJournal server. LiveJournal's version is visible at http://livejournal.com/doc/server/
but Dreamwidth has not generated a user-visible copy.
etc
Various configuration files such as config.pl
. These serve as examples of a prototypical site only; actual running sites should set up local config files in ext/local.
ext
This directory contains any local repository checkouts--for instance, dw-nonfree, Dreamwidth's non-open source code, goes here. The directory structure in dw-nonfree is parallel to the root directory structure -- that is, it contains folders such as htdocs, cgi-bin, bin, though not all folders are present.
This directory also contains local config files in ext/local/etc, so they won't be affected by source code updates.
htdocs
User-facing BML pages, with the directory structure used on the main website. That is to say, anything that appears at http://www.dreamwidth.org/filename.bml
will be here, as htdocs/filename.bml
; anything at http://www.dreamwidth.org/directory/filename.bml
will be here as htdocs/directory/filename.bml
, etc.
We are in the process of translating these files into controllers, found in cgi-bin/DW/Controller/
, and templates, found in views
.
js
JavaScript files. Files not under the folders listed below are considered legacy and are only around because they're being used on older (unconverted) pages. They shouldn't be touched to add new features, only to fix (critical) bugs.
components
Reusable components that can be used across pages
foundation
The Foundation library files. Don't touch.
jquery
The jQuery library files. Don't touch.
pages
Per-page JS files. Directory structure should match that of views/ below. Try to keep to a minimum: should mostly be initialization of reusable components.
stc
Older CSS files. To be converted to SCSS.
scss
components
Styling for reusable components that can be used across pages.
foundation
The Foundation library files. As much as possible, don't touch. Try to make any changes to components/foundation-custom/*, to make it easier to upgrade if needed.
mixins
SCSS mixins that are meant to be included into other SCSS files as needed.
pages
Per-page SCSS files. Directory structure should match that of views/ below. Try to keep per-page styling to a minimum, and instead use Foundation classes in your HTML when possible.
skins
SCSS files for site skins. Contains actual skins as well as files that are included for all skins. Any color settings should only be in this folder.
logs
Some of the Dreamwidth sub-systems keep log files here, including the journal importer.
schemes
Template Toolkit (*.tt
) files for generating the site schemes used on Dreamwidth.
src
Source code for some of the third-party packages the code uses.
t
Tests that use the testing framework in main/test. See Dev Testing for how to use them.
temp
Used by the doc system (ljconfig2db.pl). Which means basically unused right now.
views
Template Toolkit files which are gradually replacing the BML files. The controllers for the templates are in cgi-bin/DW/Controller/.
components
Reusable components. See the the style guide for examples of how to call them.