Where We Are Going

We want to make Diffuse the best tool for open source developers to resolve merge conflicts and review changes to their code. We are currently focusing on merging and comparing text files. Below are the items we want to accomplish on our way to a "version 1.0.0" release. This roadmap is a work in progress and will evolve as the project moves forward.

Goals For 0.5

We are partitioning Diffuse's code base into three main sections, each with a well defined public API and simple dependency graph. The contents of these sections will basically be:

Core data manipulation classes:

  • simple undo/redo management system
  • line based merge / comparer

Widget implementation:

  • PyGTK widget to visualise and edit the data
  • syntax highlighter

Application:

  • framework for displaying multiple viewers in tabs and managing all buttons and menus
  • integration with popular open source version control systems
  • preferences
  • command line parsing
  • all character encoding and platform specific stuff

These changes should make it easier for other developers to contribute.

Goals For 0.6

  • add the ability to dynamically add and remove comparison panes
  • add a details pane to easily inspect most differences in the currently selected line without needing to scroll a viewport

Goals For 0.7

  • add an optional explicit merge pane with flagged merge conflict blocks

Goals For 0.8

  • add the ability to use regular expressions to specify "minor" differences that can be dimmed in the viewer and skipped when navigating between differences
  • make separate view and editor options per file type
  • improve syntax highlighter so it can identify patterns like nested elements, arbitrary delimiters, and multi-line counted character patterns (eg. Lua style long comments, section headers in reStructured text, search/replace delimiters in Perl)

Goals For Later Releases

  • improve the viewer to support word wrap and display differences within a line at word-level granularity
  • elevate all resource values to preferences that can be changed with the GUI
  • improve Windows shell integration to allow users to open multiple files for mutual comparison