|
Student_Project_Ideas
IntroductionThis page lists some of the ideas we've come up with that students could tackle for student projects. Proposals can be made based on items in this list, or you can propose something entirely new. You can also look at our bugs marked ExtensionIdea for more ideas. Diff Viewer ProjectsBetter Moved/Renamed FilesWe've started to make progress in showing better diffs when files have been moved or renamed, but so far the work has been limited to git. In most other cases, we show two entries: one showing the file removed, and one showing the file added under the new name. If the content was changed, we don't have a clear way of showing that. This increases the amount of code that has to be reviewed. Instead, we should take advantage of info from the diff that says if the file has been moved/renamed. We should set a flag in the FileDiff (see STATUSES) indicating so, and show one entry. This will require updating post-review to add support for setting the status correctly for various other SCMs. Code coverage:
Inline File AttachmentsReview Board 1.6 introduced support for file attachments. They were standalone and tied to a review request. We should also allow them to be uploaded and tied to a diff, for binary files that otherwise wouldn't be able to be displayed. This would involve updating the FileAttachment model to contain a source revision field, which, along with its filename, would match data in a FileDiff. These file attachments should be filtered out from the main review request display. The diff viewer, upon encountering a binary file that can't be displayed, should look up a matching FileAttachment and display an entry for that inline. A good addition would be to have a clean mechanism for registering a class that would know how to render a file attachment in the diff viewer. It would be keyed off by a mimetype. A built-in one could render images. The fallback would be to display a UI similar to that of the file attachments on the review request page. The web API would need to be updated to know how to filter, to take params for the source revision, and to be able to get a related FileAttachment from a FileDiff. post-review would need to be updated to optionally upload binary files (under a certain size) using this API. Code coverage:
Review Request ProjectsReview Request CollaborationMore and more, users are wanting to collaborate on a given review request. We'd like to add the ability for two or more people to make changes to the review request or post diffs, and have some way of warning each other that there are existing drafts from other users. This will require adding a user relation to the draft model, and tracking when there are multiple drafts for a single review request. This will also require making some changes to allow users to give each other permission to collaborate on a review request. Extension ProjectsPluggable Review UIsWe'd like to allow extensions to provide UIs for reviewing file types other than diffs. The most basic of these would provide a review UI for plain text files (which would satisfy a long-running feature request to allow reviewing only the current version of a file instead of a diff to it). More complicated UIs could allow reviewing Microsoft Word or PDF documents, diagrams, etc. Automated Static AnalysisLots of languages have static analysis tools to help keep code clean, safe, and functional. Python, for example, has the pep8 tool to help do style clean-ups. Perhaps we could have an extension that allows users to activate various static analysis tools for changes to files with particular extensions. So, for example, we could set pep8 to analyze changes to .py files. The extension could then be an automated reviewer that comments on any offending sections of code. If no offending areas of code are found in the changeset, the automated reviewer gives a Ship It. Reviewable PasteLike pastie.orb, or pastebin, but with inline commenting. Web API ProjectsPolish and Land Python Web Client ToolsThere's been an ongoing effort to replace the useful, yet convoluted post-review tool with a set of smaller tools and scripts that operate with the Review Board Web API. Some of this work has already been completed, but has not been merged, and is likely a bit out of date. We would like someone to take over this project, and drive it through to the point where it can be merged. Integration ProjectsBetter Bugzilla IntegrationBugzilla is a web-based bug-tracking application used by companies such as Mozilla, Red Hat, GNOME, KDE, the Apache Project, and NASA (among others). Bugzilla currently ships with a built-in code review tool called "Splinter" that, while mostly functional, leaves much to be desired. We would like someone to design and develop a nice way to integrate a Bugzilla instance and a Review Board instance. This is a large, somewhat exploratory project, and will likely involve creating Bugzilla addons and Review Board addons. We would want a detailed design for the workflow provided to us before any implementation would occur. General Web UI ProjectsFewer ReloadsMany operations today reload the page. For example, publishing a draft of a review, or discarding, or closing a review request. Ideally, we would be able to make some of these changes more dynamic. Instead of doing a full reload, it would just dynamically update the page content. The one trick with this work is making sure we don't have too many redundant bits of UI. If we're rendering some stuff on initial page load from the templates and then rendering separately on demand via JavaScript, we could get into some inconsistencies down the road. So this would need a solution. An option would be to have URLs that render the page content instead. Change history descriptions, for example. Then it's handled in one place. Some simple tasks here would be to handle the case of review drafts, so that they don't reload the page. There, we're talking simple CSS class changes, or removing elements. This is a bit of a general task, and we'd need to figure out the specifics. Code coverage:
|
Java API for review board.
http://code.google.com/p/jreviewboardapi/