libsoup 2.22 plan

This page looks awful, but it's the wiki's fault.

Overview

  • Goals / Drivers
  • Constraints
    • Try not to break API/ABI too much. (Breaks are noted with (*).)

      • But also try to lay groundwork for future API/ABI break plans...
    • Not a whole lot of time: 2.22 feature freeze is January 14

Requirements

Desktop-wide HTTP

  • Easy GnomeKeyring integration for passwords

  • Cookie parsing/setting. Storage?
  • GnomeKeyring/Cryptoki integration for certificate stuff

  • Cache support?
  • Read GConf proxy settings (gvfs?). Better proxy settings?

Binding support

  • Clean up API; hide types/methods that shouldn't be public (*)
  • Use GObject properties more

  • use GDestroyNotify and/or GClosure to make callbacks more bindable

  • Further gtypification
    • glib-mkenums

    • register boxed/pointer types for important structs
  • Make better opaque types for message headers and body (*)
  • Fix up memory-management oddities
    • soup_message_new does not dup the method string (*)

    • SoupOwnership does not translate well

    • SoupMessage refcounting semantics may work better with floating refs? (*)

  • SoupServer auth is a disaster. Server handlers are only slightly better. (*)

  • SOAP and XML-RPC APIs expose libxml types (*)

Outstanding bugs/issues

  • Bugs
    • gnomebug:266516 - SoupUri shouldn't decode URI parts (*)

    • gnomebug:334021 - client certificate support
    • gnomebug:347108 - improved SoupServer digest auth support (*)

    • gnomebug:396081 - Icecast support
    • gnomebug:471380 - improved client digest auth support
    • gnomebug:491639 - Avahi-using SoupServer

    • gnomebug:491653, gnomebug:493686, gnomebug:494128 - misc minor SoupServer fixups (*)

  • Company's suggestions

    • Improve docs
    • avoid g_thread_init() requirement if not using threads?
    • consolidate handlers and signals (*)
    • add getters for object fields to make it clearer what's public
    • SoupOwnership is weird. Refcounted buffers are better. (*)

  • tbf's suggestions
    • basically "SoupServer needs more love"

  • Zombie's suggestions
    • Streaming improvements
      • Sync pull API
      • Allow caller-provided buffers to avoid extra copies
      • cancellability of individual reads, not just whole message
    • depending unconditionally on libgconf would be bad
    • msg->status vs msg->status_code is confusing (*)

  • Misc mailing list suggestions
    • Turn authenticate signal into callback (*)
    • XML-RPC server support
  • ../ToDo, etc

    • 100 Continue processing is currently useless

    • SoupMessageFilter sucks in various ways and would work better as a SoupSession signal (*)

    • HTTP I/O is currently split oddly between SoupSession, SoupConnection, and SoupMessage in ways that make the code confusing and buggy

    • NTLM auth is implemented in ways that make the code confusing and buggy
    • A "soup_simple_..." API would be nice
    • Handle non-GET redirects properly. (*)
    • XML-RPC API is not fabulous (*)

NSS / FedoraCryptoConsolidation

  • Unless this goes together with GnomeKeyring/Cryptoki, this requires us to keep our own NSS databases

  • No obvious way to API-compatibly abstract between NSS and GnuTLS. (*)

To Actually Do

(To do...)

Projects/libsoup/Roadmap222 (last edited 2013-11-22 15:51:50 by DanWinship)