Copyright 2012, A Group of Enthusiasts(tm). This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. Report bugs and check for roadmap and new versions at http://dev.coldattic.info/projects/evil == Dependencies (incomplete list) libbz-devel glibc-devel mysql-devel ruby1.9 ruby-devel curl cron daemon (production) memcached (production) == How to launch the application Read INSTALL.md == Important pieces of code The code that collects forum tree information resides in app/models/threads.rb. The model class contains a fast, raw-SQL way of fetching posts from a thread, and a faster way of fetching a list of threads for the index. If you're adding a new field to posts (for optimization purposes, for instance), be sure to add it to raw SQL in faster_posts model (see sql_posts method). See 239aa4eaf commit for an example of adding new fields. The layout of the posts tree is in app/helpers/posts_helper.rb. It contains raw HTML prints. The reason why is eplained in my blog post http://coldattic.info/shvedsky/pro/blogs/a-foo-walks-into-a-bar/posts/75. WARNING! When you change something in the post_helper, and want to see the changes but nothing happens after you reload a page, either turn off the cache completely (uncomment the relevant lines in config/environments/development.rb), or erase the cache folder (rm -rf tmp/cache/). I turned off caching in development by default. "Wide caches" for tracking post clicks, activity, and access to external message sources are initialized in app/controllers/application_controller.rb. The implementation of the wide cache itself is located at lib/activity_tracker.rb. More on wide caches you may find in my blog post: http://coldattic.info/shvedsky/pro/blogs/a-foo-walks-into-a-bar/posts/77 CSS files are in app/assets/stylesheets/. Pay attention to posts.css.scss and application.css.scss. Javascript is in app/assets/javascripts/.