Jump to >
Announcing RBTools 0.2 beta 1

Along with the Review Board 1.0 beta 1 release, we're also announcing a new package called RBTools, which had its first release tonight.

RBTools is the new home of post-review, and will in time contain new useful scripts for use with Review Board. No longer do users have to grab the latest version of post-review from our source trees. We'll be providing formal releases from now on.

To install, simply run the following (as root):

$ easy_install -U RBTools

Along with the new package comes some new features and fixes for post-review. A full summary is provided below:

Bugs Fixed in post-review:
  • The help output for --repository-url and the error output used for when --parent isn't supported was referencing the wrong names for some parameters.
  • Patches generated against a git tree were broken when running post-review inside a subdirectory of the root of the tree. Patch by Luke Lu. (Bug #928)
  • Fixed a parsing error when using diffs generated by Git. Patch by Stacey Sheldon.
  • Removed a duplicate CVSClient class, which added to the file's size and possibly caused some errors. Patch by Lepton Wu.
  • Fixed a deprecation warning when using post-review on Python 2.6. Patch by Eric Huss.
  • Fixed parsing Perforce changesets that include binary files. Patch by Raghu Kaippully. (Bug #585)
New Features in post-review:
  • Added new --guess-summary and --guess-description parameters for Git repositories that provide defaults for both the summary and description based on the commit messages on the branch. Patch by Luke Lu. (Bug #927)
  • post-review can now look up the Review Board server URL from Perforce counters. See the documentation inside post-review or on the website for examples on how to set this up.
Review Board 1.0 beta 1

We've just taken one big step toward our 1.0 tonight with the release of Review Board 1.0 beta 1. This is an important release, and introduces new features, many performance enhancements, and a whole lot of bug fixes.

Two of the big highlights include the ability to disable user registration and some major performance enhancements.

The review request page now handles large numbers of reviews and comments in a much more elegant way. Previously, we'd fetch a diff fragment per comment from the server, which mean that if there were 100 comments, we'd fetch 100 diff fragments, slowing down loading. Now, we're only performing one fetch per reviewed file, no matter how many comments are on that file.

The other major improvement is in the diff viewer. Some deep profiling work was done on the comment and diff loading code in the diff viewer, and we've managed to speed things up significantly. In one of our tests, a large file with only 15 comments would take over 1 second of browser time to load and place comments on the diff. With the new improvements, that has dropped to about 150 milliseconds.

A full summary of the changes are below:

Bugs Fixed:
  • Fixed index errors shown during some interdiffs and empty diffs. (Bug #892)
  • Interdiffs would break when one revision had a newly added file. (Bug #847)
  • Interdiffs no longer pre-load all files on a page before showing anything. They now load each file independently, like normal diffs.
  • We no longer display the "Download Diff" button on interdiffs. (Bug #873)
  • Clicking the "ghost" comment flag in the diff viewer wasn't triggering a comment dialog for that line.
  • We now correctly parse Git diffs that don't include "a/" and "b/" prefixes in the filenames. Patch by Andrey Fedorov. (Bug #883)
  • We now forward on the Perforce Empty Changeset error, instead of returning an Internal Server Error.
  • Fixed some problems with Perforce errors on newer versions of the P4 API, and fixed some issues where we were sometimes stripping valuable data from an error message. (Bug #710)
  • Fixed an Internal Server Error when showing the review dialog with a comment made on a screenshot with no caption.
  • The "Ship It" label in the review dialog is now associated with the checkbox, meaning the label can be clicked to check/uncheck "Ship It." (Bug #922)
  • For LDAP backends, we now log on as an anonymous user before searching for the real user to log in as. This fixes some breakages with people encountered. Patch by Alexey Morozov.
  • Changed the default LDAP scope to SUBTREE, in order to fix authentication on some LDAP servers. (Bug #959)
  • We now use the review request's draft summary, if set, on the screenshot detail page. (Bug #981)
  • HTML tags are no longer interpreted in the Description and Testing Done fields. (Bug #894)
  • The "branch" field in change descriptions no longer escape entities (such as arrows). (Bug #898)
  • Fixed some XHTML validation errors in the dashboard. Patch by Onkar Shinde. (Bug #932)
  • We no longer require logging in for read-only API calls, if anonymous access is enabled on the site. (Bug #767)
  • Fixed some small breakages with Django 1.1.
Feature Improvements:
  • Added a faster, more scalable version of diff fragment loading. We used to make a call to the server for each comment shown in a review, which became very slow on large reviews. We now only make one call per file, regardless of how many comments are made against that file. This speeds up load times of the review page considerably. (Bug #906)
  • Greatly improved performance in the diff viewer. Loading comments and placing them in the diff viewer wasn't nearly as fast as it could have been. Due to these new improvements, a sample diff with 15 comments that used to take over 1 second now takes ~150ms to load. Other improvements have also been made, and should make a noticeable difference in large deployments.
  • Improved accessibility for inline editors on the review request page. The "edit" icons can now be activated using the Enter key. Patch by Brad Taylor. (Bug #965)
  • Added a new icon for the "My Comments" column in the dashboard that's used when you've specifically posted a review marked "Ship It." (Bug #909)
  • Change descriptions are now a lot more readable for the Description and Testing Done fields. (Bug #913)
  • Added a dependency on Pygments, in order to install it by default.
New Features:
  • Added support for disabling user registration. This provides a checkbox in the General Settings page for disabling user registration. This only takes effect when using standard authentication, and will hide the "Register" link and redirect requests made to /account/register/ to the /account/login/ page instead.
  • Added new administration, user documentation, and a FAQ. This is available on http://www.review-board.org/docs/, and is also available in the reviewboard/docs/ directory.
New and Improved Documentation!

Traditionally, our documentation hasn't been as in-depth and fleshed out as our users and ourselves would have wanted. We've used our Wiki to store various small pieces of documentation, and while better than nothing, too many people were still getting stuck.

I'm pleased to announce that we've fully rewritten our documentation and made it available directly on our website. There's a new Users Guide, Administration Guide, FAQ, and the beginnings of Code Base Documentation.

There's still more planned for the documentation. The goal is to prevent it from getting stale, and to update it any time something related updates in Review Board. Over time we'll add more details on various pieces of Review Board, allow users to give feedback on pages, and more.

We've tried to make sure to address everything that the old documentation addressed, but please file a bug if something is missing or confusing.

Participation in Summer of Code 2009

This year, Review Board has been accepted as a mentoring organization in Google's Summer of Code. This will give students an opportunity to contribute to Review Board and to get paid to do so, and it should result in some awesome features added in the next version of Review Board.

Students who would like to participate should look at our ideas page for possible projects and our Summer of Code Information page for some helpful links and details on participating.

We've also decided to continue offering Review Board hosting for projects participating in Summer of Code, even ones that aren't related to Review Board. This can help mentors to review students' code, keep track of what was done, and to introduce students to good code review practices.

If you have project proposals or questions, you can reach us privately or on our reviewboard-gsoc@googlegroups.com mailing list.

Review Board 1.0 alpha 4 released

Some last-minute brokenness snuck into alpha 3, so we're releasing a quick alpha 4 that should fix it. If you installed alpha 3, upgrade immediately.

Bugs Fixed:
  • post-review should now work with SVN regardless of the locale set. (Bug #888)
  • Fixed an infinite loop in the Git diff parser. Patch by Dennis Schön. (Bug #887)
  • The first file in the diff viewer would sometimes come back as escaped HTML. It's now embedded correctly.
  • The comment dialog's "dirty" state wasn't being reset for new comments. This would leave reviewers unable to make new comments.
Review Board 1.0 alpha 3 released

Review Board 1.0 alpha 3 has just been released. This release fixes a few major bugs introduced by 1.0 alpha 2 (over-aggressive caching primarily) and several browser-compatibility problems. Safari and Internet Explorer both had compatibility issues with some of the features we introduced, and we've since worked around them.

To upgrade from a previous alpha, just run:

$ sudo easy_install -U ReviewBoard
$ rb-site upgrade /path/to/site

A full summary of the changes are below:

Bugs Fixed in rb-site:
  • Generated settings_local.py files no longer have DEBUG=True enabled by default.
  • The generated FastCGI and Apache config files should now work better out of the box. We had path issues in reviewboard.fcgi. We also now set the PYTHON_EGG_CACHE directory and default to processing .htaccess files in htdocs (which some distros don't have enabled by default).
Bugs Fixed in the Diff Viewer:
  • Fixed some major performance issues when typing in the diff viewer. This was the cause of many reports of slowdown and visual oddities when creating comments.
  • Unchanged files should no longer show errors in interdiffs.
  • Fixed file-based navigation ("<" and ">" keys) in the diff viewer. (Bug #696)
  • We no longer show a nonsensical error when SVN logins fail. (Bug #721)
  • Fixed anchors in the diff viewer. (Bug #828)
  • Fixed the "Expand/Collapse Diffs" toggle in the diff viewer. (Bug #862)
Bugs Fixed in Reviews:
  • The review request page is no longer cached across login sessions. We were over-aggressive in the caching and are now a lot more careful.
  • Upload Diff/Screenshot dialogs on Safari are now centered instead of being docked to the far-left side.
  • Uploading diffs and screenshots now works on Safari.
  • Empty Changeset errors in Perforce should now properly be shown to the user. They were in some cases triggering a server-side error.
  • The Change Description field no longer animates open on page load.
  • Sentences containing the word "bug" or "issue" no longer generate links unless followed by either specifically a number or a "#" followed by alphanumeric characters.
  • Fixed some escaping issues in the review request summary, which would cause characters (such as quotes) to appear incorrectly. (Bug #860)
  • Fixed some issues with auto-linking text in the Description and Testing Done fields. There were issues on initial page loads with linking URLs that were followed by quotes, "<" and ">". (Bug #864)
Feature Improvements:
  • We now pre-load the first file on a page in the diff viewer, in order to make it appear that the page is loading faster. Many people felt the new, faster diff viewer was slower because even after the initial page load, they had to wait to see any diffs. They're now able to work with the first diff the moment the diff viewer loads.
  • Added hover/clicked styling for the review request action buttons.
Review Board 1.0 alpha 2 released

We've just put out a release of Review Board 1.0 alpha 2. This release has some major improvements and bug fixes over alpha 1, and we recommend that everybody upgrades.

The main improvements are performance-related. We've added aggressive browser-side caching support, as well as reorganized load times in our pages in order to reduce load times. The diff viewer now loads almost instantly and then progressively loads diffs on the fly, meaning you can start reviewing right away.

If you have mod_expires and mod_deflate (Apache) or mod_gzip (lighttpd) enabled, you'll see the cache and load time improvements. Apache users will get the new configuration for taking advantage of this for free, but if you're a lighttpd user, you'll need to update your configuration based on our lighttpd.conf template.

Going forward, upgrades using easy_install will not grab nightlies. They will only be grabbing stable releases. If you want to continue using nightlies, please refer to the Getting Started guide.

A full summary of the changes in this release are below:

Bugs Fixed in post-review:

  • We now strip the filename coming in from Perforce. There can be a trailing newline sometimes, resulting in a failed upload. (Bug #726)
  • We set the correct locale now when invoking svn. Patch by Łukasz Jernaś. (Bug #822)
  • Fixed backwards version comparison logic in post-review's GitClient. Patch by Stacey Sheldon.
  • Added support for hgsubversion. Patch by Augie Fackler
  • Added support for Clearcase. Patch by Daniel Belz.

Bugs Fixed in rb-site:

  • rb-site now sets "postgresql_psycopg2" as the DATABASE_ENGINE for PostgreSQL installs. Patch by Rusty Burchfield. (Bug #822)
  • rb-site should now generate config files that work correctly on Windows servers.

Bugs Fixed in Review Board:

  • Whitespace from usernames are now stripped on LDAP accounts, which prevents duplicate user accounts in the database. (Bug #728)
  • Fixed a bug where anchors in comment flags were incorrect and were getting lost when setting the comment count for the flag. This was breaking anchors to parts of the diff. (Bug #820)
  • The fields in the comment dialog are now disabled if the user is not logged in. (Bug #827)
  • Key presses in dialogs or in the review request details box no longer trigger navigation in the diff viewer. (Bug #828)
  • The "Review" link on a review request is no longer displayed if the user is not logged in.
  • Trailing whitespace wasn't shown in diff fragments on the review request page.
  • Trailing whitespace wasn't always shown in the diff viewer, if it appeared in the middle of a comment block.
  • Removed some old YUI files that were still in the repository.

Feature Improvements:

  • Improved lighttpd and Apache+fastcgi support. A Review Board install using either lighttpd or Apache+fastcgi should now work out of the box without setting up any custom scripts for launching fastcgi.
  • The diff fragments placeholders in the review request page are now set to the same size as the fragment itself. This means that progressively loaded fragments should no longer cause the page to jump nearly as much, resulting in a smoother loading experience.
  • When displaying the Review form, we now make sure that the form is scrolled to the top. This fixes a bug where the page was often scrolled to the bottom of the list of comments.
  • Several improvements were made to Bazaar support. We now use bzrlib and support revid information in the diff header.
  • The comment dialog is now slightly wider and has slightly smaller text, resulting in more room for comments.

New Features:

  • Load times for nearly all parts of Review Board have greatly increased. The browser is now instructed to aggressively cache media files and many pages, meaning fewer downloads when going to any particular page.

    We optimize the order in which resources are loaded in order to take advantage of the browser's ability to parallelize downloads of similar resources types (such as CSS files or JavaScript).

    The results of these files are GZip'd to further increase transfer speeds.

    Apache users will get these improvements for free. lighttpd users will need to upgrade their lighttpd config file based on the template provided with Review Board in the contrib/conf/ directory.

    On top of this, we now use jQuery 1.3.1, which is many times faster than the previous version of jQuery we were using, and we also have a number of improvements such as progressive loading of the diff viewer.

  • Added progressive loading of the diff viewer. This is one of the main features of this release. Regardless of the size of the diff, the diff viewer now loads quickly, and loads each file's diff progressively. This gives people the ability to review code before all the diffs have even been generated.

    This also fixes some major scalability issues we've had with large diffs. In theory, it's now possible to review very large diffs that span many pages.

  • Added support for linkifying pieces of text in the Description and Testing Done fields. (Issue #258)

    The following formats are supported:

    • URLs
    • /r/123 numbers (even /r/123/diff and such)
    • bug/issue numbers (in the form of "bug abc123", "bug #abc123", "issue abc123" and "issue #abc123")
  • Added support for Clearcase repositories. This depends on a mounted view on the Review Board server. Patch by Daniel Belz.
New Website

Back in the early days of Review Board, just before we were set to announce, I threw together a little website for the project. We were small then, with just a few users (no companies outside VMware, really), and the website didn't need to have much.

We've grown considerably since then, and the website was starting to feel really stuffy and outdated. It also wasn't built to handle some of the things we have planned for it, such as a documentation browser in the site or community features for third party developers and users. So, I decided it was time to give the site a makeover.

The new site is a lot cleaner and leaves room to breathe. There's still more planned for the site, and there's probably a few breakages here and there, but it's a definite improvement over the old one.

In the next week, I hope to begin bringing new parts of the site online. We also have a 1.0 alpha 2 release planned.

If you find any breakages, please let us know.

Review Board 1.0 alpha 1 released

After a long time in development, we're finally approaching our landmark 1.0 release. Today we've released Review Board 1.0 alpha 1, which can be downloaded by following the instructions on our downloads page or through our Getting Started guide.

This release has been considered stable enough for production use. A number of companies have been using the nightlies leading up to this release for quite a while. If you've been using nightly releases until now, you'll automatically be switched over to the 1.0 alpha 1 release the next time you upgrade. If you want to keep using nightlies to help test the latest and greatest, see the "Nightly Releases" section in our Getting Started guide for instructions on switching back.

In the following months, we expect to release one more alpha, two betas, a release candidate, and the final 1.0 release. The plans leading up to the 1.0 release are available in our roadmap. We're going to be focusing on complete installation, administration and user documentation, as well as enhancing usability and stabilizing the product. This also means we're going to begin entering a feature freeze, where we'll only accept new features if we agree they're critical to this release. Most new features will be saved until after 1.0.

We'd like to thank the 100+ contributors who have helped make Review Board such an awesome code review tool. If you have questions, need support, or would like to help out with the project, you can contact us on our mailing list or file bug reports. And if you're a happy user, we'd love to hear from you too!

New Review UI

Review Board has been around for a couple of years now, and the UI really hasn't changed much. The initial UI we wrote worked well enough, but had a number of usability problems we were all too aware of. We knew we needed to address these for the 1.0 release.

During the past month or two, we've been rewriting much of the Review Board UI. It's now based on jQuery, an elegant cross-platform JavaScript toolkit, which allows us to maintain clean code with minimal browser-specific hacks. This means better compatibility with Firefox, Internet Explorer 6/7/8, Safari, and Opera.

In an effort to streamline the code review process, we've made several key changes.

Commenting

The comment/review dialog has been split up and simplified. The old dialog was confusing to many users for a number of reasons. Mainly, it tried to do too much by handling not only commenting on a diff line or screenshot but the reviews as well.

People often tried using the old dialog to reply to existing comments, which led to brand new reviews instead of replies. This was largely due to the way we represented comments on the old dialog.

Now we have a simple comment dialog for both the diff viewer and screenshot pages. The green portion representing the new draft comment provides a single text area for the comment, and Save and Cancel buttons. To the left is a list of existing comments for that region (if any). Each item contains "View" and "Reply" buttons. Clicking these will jump to the reviews page, and in the case of "Reply," a new comment will be added below the comment being replied to on the reviews page. This will hopefully make replying more straightforward. We have some further improvements we'll make in this area in the future.

Comment Dialog

Editing reviews

The review portion of the dialog is now its own entity. When clicking on "Review" on the review request details box, or when clicking "Edit Review" on the new draft banner (which is docked to the top of a review request page when there's a pending review), a modal box will pop up containing the review.

Review Banner

This new box is a vast improvement over the old review dialog. Like actual reviews, the screenshot and diff fragments are displayed inline, and progressively loaded. Users can make changes to existing comments they've made. The review can be saved, published, or discarded straight from there, or from the banner itself.

No more lost comments

It's harder to lose comments now. When there's a pending comment on a page and the user attempts to move away from the page, a confirmation dialog will appear. This currently happens on the diff viewer and screenshot dialogs only. The functionality will be added in a later change to reviews and the review form.

Unsaved Changes Warning

Feedback and comment previews

There's more feedback now when making changes. When saving or deleting a comment, little bubbles briefly float up near the comment flag or region and let the user know what just happened.

The selected region of the diff viewer used to be indicated by a little arrow in the left-hand column. This was sometimes hard to notice. We now make the border around that region more bold, making it quite clear where you are in the diff viewer.

Hovering over a comment flag or a comment region now shows a little tooltip with the comments. It's very brief. No author information is shown, just the text, but clicking the area provides that additional information.

We provide slightly better error feedback now. The error banners at the top of the page now contain any debug information, such as a backtrace, when something goes wrong. In DEBUG=True installs, this information is very valuable. This certainly makes debugging Review Board itself much easier.

Better action placement

Review request actions ("Set Submitted", "Add Screenshot", etc.) have been moved to the top of the review request box where they're more easily seen. "Set Submitted," "Discard" and "Delete" are no longer top-level actions. They now exist in a "Close" drop-down menu. This saves space and groups them together under one concept -- you're in some way closing a review request out.

Actions

More descriptive dialogs

We're working to add some better help to the dialogs. The Upload Diff dialog, for instance, now has descriptions below each field. In the future, we'll add better inline helping throughout the product.

Update Diff Dialog

Better browser compatibility

We have much better browser compatibility now. The new UI should work quite well on IE6/7/8, Firefox, Opera, Safari, and Konqueror.

Upgrade Notes

It's very important to clear your server-side cache when upgrading Review Board, or some things just won't work. If using memcached, restart the service.

You may also need to tell your users to clear their browser cache if they run into problems.

Problems?

Please let us know if there are major issues with this rewrite. It's been tested fairly heavily, but may still have unforeseen problems. As always, you can report bugs or post to the mailing list for help.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 pages