
- Interfaces
  - Add an interactive mode to knotty (similar to the interactive mode we dropped)
  - Fix up or drop the ncurses interface? Currently too limited to be useful.
  - Concerns about whether teamcity interface works. No testing.

- Improve exception handling:
  - dropping fatal/SystemExit/sys.exit usage in favor of raising
    appropriate exceptions
  - Audit bb.fatal usage - these should all be able to be replaced with
    exceptions

- Continue pylint / pyflakes / pychecker / pep8 fixups - focus on real issues
  or performance issues, not cosmetic ones.

- Drop os.system usage in favor of direct subprocess usage or a subprocess
  wrapper

- BUG: if you chmod 000 local.conf, it silently doesn't parse it, when it
  should really fail, so the user can fix the problem.


Long term, high impact:

  - Consider changing the behavior when a variable is referenced and is unset
    Today, it evaluates to ${FOO} and then shell has a chance to expand it, but
    this is far from ideal.  We had considered evaluating it to the empty string,
    but that has other potential problems.  Frans Meulenbroeks has proposed just
    erroring when this occurs, as we can always define default values for the
    variables in bitbake.conf.  This seems reasonable.  My only concern with
    that is the case where you want to reference a shell variable with odd
    characters in it -- where you'd have to use ${} style shell variable
    expansion rather than normal $.  To handle that case, we'd really need a
    way to escape / disable bitbake variable expansion, \${} perhaps.

