About FreshBSD

People

FreshBSD is developed and hosted by Thomas Hurst.

Technology

FreshBSD currently lives on my home server; an 8GB dual Opteron 275 with 1.2TB of storage over several SATA RAID-1 arrays.

Software wise, we're (of course) running FreeBSD 7.1/AMD64, Apache 2.2 and MySQL 5, with the site itself developed using Ruby on Rails.

The site works by parsing email from various CVS commit mailing lists.

Things to note

You can request commits for a given year, month, day, hour, minute and second using URLs of the form http://freshbsd.org/yyyy/mm/dd/hh/mm/ss and any subset of, e.g: http://freshbsd.org/2006/06/06/06 shows all commits in 2006-06-06 at 6am GMT.

Message searches support full boolean expressions; AND (default), OR, NOT, subexpression groups using ( .. ), quoted exact-phrases and escaping of metacharacters using \.

All search pages now provide an Atom feed. It has an autodetect link, or you can add &format=atom to the query string. Please don't hammer it.

Limitations/TODO

The site is still in beta (what else?), and resides on the other end of my cable modem so has limited bandwidth, but ample CPU and memory.

Pagination with dated URLs is a bit broken. In the mean time you can add page=2 etc to the query string yourself.

Issues with the commit message parsers exist which may mean some are missing or malformed. If you spot anything that should be there that isn't, or vice versa, please let me know; I tend only to follow FreeBSD src, so may not always notice myself.

Queries aren't as fast as they could be because I'm depending on index merging and letting MySQL perform filesorts.

Further filtering options like searching for commits acting on a given file/directory are planned.

FreshBSD v2

FreshBSD version 2 is partially written, and currently supports importing the FreeBSD src commit history from a local SVN mirror, which should be more accurate and complete than email parsing. Whether this will be extended to the other commit sources is currently undecided.

One sad loss with this approach is CVS file revision ID's, and also the link with original commit emails. Oh well.

v2 uses Apache Lucene via Solr instead of MySQL, allowing for faster and more flexible searches; e.g. looking for commits to specific files.

v2 also drops the use of Rails, which is bit of an albatross for FreshBSD's needs. It's now using Ramaze, which is rather more lightweight, and a lot less magic. I have plans to deploy using JRuby; with JITing, pages which Ruby 1.8 and 1.9 take 130-200ms to generate, it can render in 50-80ms, and it's only getting faster.

Finally, I expect to be able to run v2 on a "proper" server. FreshBSD now proxies through a RootBSD Xen virtual server, and I think it should be able to manage the beta. I also hope to get a Jump VPS soon, since clearly I'd prefer a server on my own continent.