Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[config-dev] Technical goals summary
  • From: Dmitry Kornilov <dmitry.kornilov@xxxxxxxxxx>
  • Date: Mon, 16 Aug 2021 11:11:46 +0000
  • Accept-language: en-GB, ru-RU, en-US
  • Arc-authentication-results: i=1; 1; spf=pass; dmarc=pass action=none; dkim=pass; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed;; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LPpCYuW9HI1qs74gm9YZ5Un84GTcAh/PuU9Gz5zTXFQ=; b=b+qgScX+ravAxEwN2CjKIiE7z86OVdNCGf9FWLH1nf7XZs+Z/8NprPlLJr8ak7ZWtU5hGHuhejODeLYUslof+qj4f1TdNI85/s6jhxLTcgIBDeqOkhp5ho6crAlFduipEKA9xj/LMk8RWDyOXgnRVNc3XFtvvF7eMdO1qa2K7ZCGvxa1u3n4zTcSWGoUTiHpLECzzEA34UIPBMqbVIF2FkY9agyjg/kT8qJ9VeUBDpfwz3lN11C24v8JUOxMio1XaEBXSNM9NQsn6A0ZQk5ajKpF15V3WuBp+p6+PyddWhzRbxKPBfo5yk/KDPtY3m320lsMagE9quaxCRz+i0a6zA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901;; cv=none; b=k7STr9XQ2XDjsxtFDB9b6ZYFSZCV4XW67PWSNguBlhmltY0Qj+rktyMas1o/h4hL+Im5LUF5FlLS3NwRTsvCREP0seNU4yrQ45e3yIYsCWiP8RpM7+BArloqC4kXQ/Nr2so1angaNHW7zWeDE8de8WLF+Hk7afzr37xOW6KQseWGLSZRfjMvhq/qBZhh/HRaS1dVT5KjGDJa+Fmm1HRbxDpLvcslWwMY1DatMKoIOA9cxc1pRAECzJ8R68wuy5XZDnVIOZvZKg+Ga7Q0cMtmbq1EubwXyIdSTSKP/itqg9OElI4I5AKyt2RaFYqSk+XYrMdshpcRhb42OIFHgZUKMQ==
  • Delivered-to: config-dev@xxxxxxxxxxx
  • List-archive: <>
  • List-help: <>
  • List-subscribe: <>, <>
  • List-unsubscribe: <>, <>
  • Thread-index: AdeSjb+xlUQYQW8ITfOjEGPberwHcg==
  • Thread-topic: Technical goals summary



We made a huge progress at the meeting and finished discussing technical goals. I went through all meeting minutes and created a summary. Before making it official I would like all committers to review it to make sure that I didn’t forget anything.


Jakarta Config technical goals


  • Programmatic API allowing configuring and using configurations at runtime
  • Annotations based API allowing compile time configuration 
  • Meta-config
    • Ability to configure everything programmatically and in an externalized way. 
    • It’s a nice-to-have feature.
  • Support for converters
    • In future we will evaluate switch to using Converters specifications when it’s defined
  • Objects mapping must be supported
    • We need to think more about the technical solution
    • We may restrict mappings to interfaces only
    • We must respect java visibility rules (don’t allow writing to private fields)
  • CDI integration
    • CDI integration must be provided but it should be optional. There must be the ability to use Config API without hard dependency on CDI.
  • Allow empty strings and null as values
    • It must be allowed to use both empty strings and nulls as config values
    • There must be an ability to delete a key in a higher level configuration source
  • Jakarta Config must be designed for adoption by other Jakarta EE/MicroProfile specifications including CDI
  • Support for different configuration profiles (dev, test, prod, etc.)
  • Config sources SPI - layered config sources
    • Agreed this SPI is needed
    • We will decide whether to provide parsers to support different format of properties (yaml, properties, json, etc)
  • Support of mutable and immutable configuration sources. It also includes support of configuration sources with unknown/undefined number of properties
    • Mutable configuration sources have some performance drawbacks and complexities
    • We may support only immutable configuration in version 1.0 or we design a model allowing dealing with mutable configuration minimizing (eliminating) drawbacks
  • Support for flat and hierarchical configuration sources
    • Both flat and hierarchical configuration sources must be supported. Rules for converting between tree and flat structures must be defined by the spec.
    • We haven’t decided what representation should be used as a “native” structure of configuration.
  • Provide built-in config source types such as yaml, json, properties
  • Variable replacements, config expressions
  • OSGi
    • Only in manifest, no annotations, etc.




Back to the top