Skip to content
Paul Thornthwaite edited this page Apr 2, 2015 · 2 revisions

Roadmap

Our plans with fog have gotten a bit lost amongst issues and comments on them.

This is going to be a consolidated roadmap / work in progress document to keep track of things.

It covers fog (the project and library) and it's component parts (fog-core, fog-json/xml, fog-providers).

Remember fog uses Semantic Versioning so this covers the MAJOR bumps mostly mainly because they WILL break things by definition.

Notes:

  • FaaL - fog as a Library; related to using require "fog"
  • FaaC - fog as a Console; related to using fog from a shell, entering IRB

Objective: To resolve critical issues before we start redeveloping

Community

  • Making the Roadmap public...
  • Encourage users to track ~> 1.x.0 in their applications and be ready for testing

Code

  • Resolve require "fog" slowdown - #3430

Objective: Remove 1.8.7 support and existing deprecations

On some tickets this appears to be the solution to everything. Apologies for that. The "2.0" branding isn't really useful for a series of major changes coordinated across numerous modules.

Community

  • Create a public list of providers and their maintainers
  • Deprecate providers lacking maintainers (in documentation)
  • Declare scheduled release dates (code freezes, release candidates and monthly release on a known date)

Code

  • Remove support for Ruby 1.8.7
  • Remove and document any existing deprecations in fog
  • Remove and document any existing deprecations in providers (where possible)
  • Remove dependency lock on nokogiri #3099

2.x Series

Community

  • Document existing ENV settings (FOG_RC, FOG_DEBUG, FOG_CREDENTIAL, FOG_MOCK) for FaaC users
  • Map ENV settings to settable, internal configuration - setting an ENV variable should not be required to trigger an effect in FaaL
  • No more gems added to fog but should await/use provider registry

Code

  • [fog] Loosen dependencies to minimum
  • Split "console" behaviour into cleaner classes separate from Fog so FaaC does not interfere with FaaL
  • [fog-core] Finalise "specs" for providers to test with
    • Clearer service definitions and specs #1252
      • Compute
      • Storage
      • Load Balancers
      • DNS Services
      • CDN
  • [fog-core] Internal provider registry - allow a required provider declare services separately from fog in separate gem
  • [fog-generator] Tool to generate provider skeletons
  • MiniSpec tests to replace all low level unit tests
  • Add ENV["FOG_INSECURE"] to set internal configuration to allow HTTPS to services with invalid SSL certs (i.e. development systems)

3.x Series

Objective: Really start to clean up the codebase

Community

  • Document provider requirements strictly and accurately

Code

  • Remove provider testing from main gem, up to provider maintainers to fully test their code
  • Remove providers without maintainers from the main gem
  • All providers use new registry to load themselves
  • Isolate requests from underlying providers
    • "Connection" should be fully wrapped with mocks #1418
    • Fog.mock! proposal to allow experimenting with Excon Stubs #2629
    • Homogenize error handling #3190
    • Remove "Mock" functionality as a core feature. If providers wish to implement it they may but no need for a duplicate code path
    • fog should allow a pluggable http access layer #19
  • Provider gem layout
    • Idiomatic gem layout
    • Idiomatic namespacing
    • How to organize raw request files? #22

4.x Series

Objective: Make fog a standalone tool and it's libraries available for reuse

Code

  • Make current behaviour of fog accessible as fog console
  • Enable fog to accept subcommands to build a cloud independent
  • gem install fog gets you the CLI/console and fog-core - fog will warn/raise when no providers are installed separately