Re: NetworkManager keyfile instead of ifcfg-rh - Fedora 33 System-Wide Change proposal

2020-08-31 Thread Adam Williamson
On Mon, 2020-06-29 at 23:46 +0200, Thomas Haller wrote:
> On Mon, 2020-06-29 at 12:00 -0700, Samuel Sieb wrote:
> > On 6/29/20 11:44 AM, John M. Harris Jr wrote:
> > > On Monday, June 29, 2020 11:35:55 AM MST Samuel Sieb wrote:
> > > > Is there any easy way to convert profiles from ifcfg-rh to
> > > > keyfile?
> > > 
> > > I don't think that'd be a good idea. The Change shows that ifcfg-rh 
> > > formatted
> > > files will continue to be supported, so it's not required, and
> > > there are many
> > > people that only know the ifcfg-rh formatted configuration, such as
> > > myself.
> > > Additionally, there's a lot that could go wrong in yanking config
> > > files from
> > > one format to the other.
> > 
> > I wasn't suggesting this to happen by default.  I'm just wondering
> > for 
> > my own use if it is possible.
> 
> Hi,
> 
> 
> No convenient way exists. Nor is it strictly necessary at this point.
> 
> If we ever completely move away from ifcfg-rh format, then such a tool
> will be needed. And it would be useful anyway.

THREAD NECRO (found this while reviewing the network criterion
discussion), but figured this might be of interest to others - I only
found out recently that Fedora CoreOS actually did "move away from
ifcfg-rh format" already. It does not ship the NetworkManager ifcfg
plugin, so you can't use ifcfg files to configure networking in it. I'm
not sure how many people this has tripped up/will trip up, but figured
it might be of interest.
-- 
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Twitter: AdamW_Fedora | XMPP: adamw AT happyassassin . net
http://www.happyassassin.net
___
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org


Re: NetworkManager keyfile instead of ifcfg-rh - Fedora 33 System-Wide Change proposal

2020-06-29 Thread Thomas Haller
On Mon, 2020-06-29 at 12:00 -0700, Samuel Sieb wrote:
> On 6/29/20 11:44 AM, John M. Harris Jr wrote:
> > On Monday, June 29, 2020 11:35:55 AM MST Samuel Sieb wrote:
> > > Is there any easy way to convert profiles from ifcfg-rh to
> > > keyfile?
> > 
> > I don't think that'd be a good idea. The Change shows that ifcfg-rh 
> > formatted
> > files will continue to be supported, so it's not required, and
> > there are many
> > people that only know the ifcfg-rh formatted configuration, such as
> > myself.
> > Additionally, there's a lot that could go wrong in yanking config
> > files from
> > one format to the other.
> 
> I wasn't suggesting this to happen by default.  I'm just wondering
> for 
> my own use if it is possible.

Hi,


No convenient way exists. Nor is it strictly necessary at this point.

If we ever completely move away from ifcfg-rh format, then such a tool
will be needed. And it would be useful anyway.

I think the best shot currently is:

  1.) have main.plugins=keyfile,ifcfg-rh configured
  2.) nmcli connection clone "$PROFILE" "$NEW_NAME"

that creates a new profile by copying the existing one, and
NetworkManager will persist it as keyfile. One problem is that this
requires the daemon, and that you cannot directly influence the file
names.


The next step is to expose keyfile API as part of libnm:
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/517
which is blocked due to the licensing issue (the code being GPL-2.0+, while 
libnm
is LGPL-2.1+). Once we have that, we can build useful tools that handle keyfile 
format
directly. For example, nmcli working offline on files, or import/export tools, 
or
nm-connection-editor opening .nmconnection files on double click.


best,
Thomas


signature.asc
Description: This is a digitally signed message part
___
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org


Re: NetworkManager keyfile instead of ifcfg-rh - Fedora 33 System-Wide Change proposal

2020-06-29 Thread Markus Larsson


On 29 June 2020 18:40:23 CEST, Ben Cotton  wrote:
>https://fedoraproject.org/wiki/Changes/NetworkManager_keyfile_instead_of_ifcfg_rh
>
>== Summary ==
>Change the default settings plugin of NetworkManager so that new
>profiles will be created in keyfile format instead of ifcfg-rh format.
>
>== Owner ==
>* Name: [[User:Thaller| Thomas Haller]]
>* Email: 
>
>== Detailed Description ==
>NetworkManager supports settings plugins to persist connection
>profiles to disk. There is the native ''keyfile'' format and the
>Fedora/RHEL specific ''ifcfg-rh'' format originally from initscripts.
>The keyfile plugin is always enabled in NetworkManager and can handle
>any supported type of profile. It stores profiles under
>`/{etc,usr/lib,run}/NetworkManager/system-connections` and is
>documented in 
>[https://developer.gnome.org/NetworkManager/stable/nm-settings-keyfile.html
>nm-settings-keyfile manual]. The ifcfg-rh format is in part compatible
>with the network-scripts package from initscripts, however both
>network-scripts and NetworkManager define their own extensions
>([https://developer.gnome.org/NetworkManager/stable/nm-settings-ifcfg-rh.html
>[1]]). Since network-scripts and NetworkManager are fundamentally
>different, the same ifcfg file is not treated exactly the same by both
>systems. In the past, having the ifcfg-rh format made it easier for
>users familiar with initscripts to migrate to/from NetworkManager.
>
>The settings plugins are configurable in
>[https://developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html
>NetworkManager.conf] via the `"main.plugins"` option. Multiple plugins
>can be configured and on Fedora 32 and older, the compile time default
>for the option is `"ifcfg-rh,keyfile"`. This means, that when
>NetworkManager stores a new profile to disk, it will first try to
>persist it in ifcfg-rh format before falling back to keyfile format,
>if the ifcfg-rh plugin doesn't support the profile type. When reading
>profiles from disk, NetworkManager will read and expose profiles from
>both settings plugins and when modifying an existing profile, it will
>update the existing file and preserve the settings plugin.
>
>This Change is about to change the default for `"main.plugins"` from
>`"ifcfg-rh,keyfile"` to `"keyfile,ifcfg-rh"`.
>
>== Feedback ==
>This was brought up on the NetworkManager mailing list
>([https://mail.gnome.org/archives/networkmanager-list/2020-May/msg2.html
>[1]]]).
>
>Fedora CoreOS doesn't use ifcfg-rh files at all, only keyfile. Also,
>RHEL CoreOS uses the `"main.plugins=ifcfg-rh,keyfile"` configuration
>too. For CoreOS this of course is simpler, because they don't deal
>with existing user configurations and tools that would break during
>upgrade.
>
>== Benefit to Fedora ==
>The long term goal of NetworkManager is to move away from ifcfg-rh
>files. That will be difficult as it affects existing installations and
>will require migration of existing configurations. This change is only
>a first step and affects how NetworkManager by default persists new
>profiles to disk.
>
>The ifcfg-rh format arguably has an uglier syntax and, contrary to
>keyfile, does not support all profile types. Also, keyfile plugin is
>available on every NetworkManager installation because that is the
>only plugin that supports all profiles. Having multiple plugins and
>file formats is confusing. By now, initscripts' `network-script`
>package is deprecated in Fedora and upstream wants to move away from
>that format in the long term. Also maintaining multiple settings
>plugins is a maintainance burden, and in the past there were subtle
>bugs where ifcfg-rh did not implement all settings (e.g.
>[https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2020-10754
>CVE-2020-10754]). On other Linux distributions NetworkManager uses the
>keyfile format by default. It is a general goal that NetworkManager
>works similar on all distributions.
>
>== Scope ==
>
>* Proposal owners: The default settings for `"main.plugins"` can
>already be selected at compile time. This only requires building the
>package with a different default
>([https://src.fedoraproject.org/rpms/NetworkManager/blob/a06b38bcbe8f9a38badab4f37e8c6fae240428b7/f/NetworkManager.spec#_759
>[3]]).
>* Other developers: N/A (not needed for this Change)
>* Policies and guidelines: N/A (not needed for this Change)
>* Trademark approval: N/A (not needed for this Change)
>
>== Upgrade/compatibility impact ==
>This affects most users, unless they explicitly set the option in
>NetworkManager.conf configuration. The biggest effect of this change
>is that new profiles will now preferably be persisted in keyfile
>format. This changes behavior for users who expect NetworkManager to
>write ifcfg-rh files, or who have scripts or tools that expect that.
>What will still work is that existing ifcfg files are loaded after
>upgrade. Users who only use the D-Bus API (via one of the client
>applications like nmcli or the GUI), shouldn't notice the difference.
>
>As before, 

Re: NetworkManager keyfile instead of ifcfg-rh - Fedora 33 System-Wide Change proposal

2020-06-29 Thread Samuel Sieb

On 6/29/20 11:44 AM, John M. Harris Jr wrote:

On Monday, June 29, 2020 11:35:55 AM MST Samuel Sieb wrote:

Is there any easy way to convert profiles from ifcfg-rh to keyfile?


I don't think that'd be a good idea. The Change shows that ifcfg-rh formatted
files will continue to be supported, so it's not required, and there are many
people that only know the ifcfg-rh formatted configuration, such as myself.
Additionally, there's a lot that could go wrong in yanking config files from
one format to the other.


I wasn't suggesting this to happen by default.  I'm just wondering for 
my own use if it is possible.

___
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org


Re: NetworkManager keyfile instead of ifcfg-rh - Fedora 33 System-Wide Change proposal

2020-06-29 Thread Neal Gompa
On Mon, Jun 29, 2020 at 2:44 PM John M. Harris Jr  wrote:
>
> On Monday, June 29, 2020 11:35:55 AM MST Samuel Sieb wrote:
> > On 6/29/20 9:40 AM, Ben Cotton wrote:
> >
> > > https://fedoraproject.org/wiki/Changes/NetworkManager_keyfile_instead_of_i
> > > fcfg_rh
>
> > > == Summary ==
> > > Change the default settings plugin of NetworkManager so that new
> > > profiles will be created in keyfile format instead of ifcfg-rh format.
> >
> >
> > Is there any easy way to convert profiles from ifcfg-rh to keyfile?
>
> I don't think that'd be a good idea. The Change shows that ifcfg-rh formatted
> files will continue to be supported, so it's not required, and there are many
> people that only know the ifcfg-rh formatted configuration, such as myself.
> Additionally, there's a lot that could go wrong in yanking config files from
> one format to the other.
>
> Maybe an alternative option would be to store as a keyfile instead of ifcfg-rh
> if modified by one of the NetworkManager dbus clients, but otherwise leave
> ifcfg-rh?
>

This already happens for things that don't fit into ifcfg-rh format.



-- 
真実はいつも一つ!/ Always, there's only one truth!
___
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org


Re: NetworkManager keyfile instead of ifcfg-rh - Fedora 33 System-Wide Change proposal

2020-06-29 Thread John M. Harris Jr
On Monday, June 29, 2020 11:35:55 AM MST Samuel Sieb wrote:
> On 6/29/20 9:40 AM, Ben Cotton wrote:
> 
> > https://fedoraproject.org/wiki/Changes/NetworkManager_keyfile_instead_of_i
> > fcfg_rh
 
> > == Summary ==
> > Change the default settings plugin of NetworkManager so that new
> > profiles will be created in keyfile format instead of ifcfg-rh format.
> 
> 
> Is there any easy way to convert profiles from ifcfg-rh to keyfile?

I don't think that'd be a good idea. The Change shows that ifcfg-rh formatted 
files will continue to be supported, so it's not required, and there are many 
people that only know the ifcfg-rh formatted configuration, such as myself. 
Additionally, there's a lot that could go wrong in yanking config files from 
one format to the other.

Maybe an alternative option would be to store as a keyfile instead of ifcfg-rh 
if modified by one of the NetworkManager dbus clients, but otherwise leave 
ifcfg-rh?

-- 
John M. Harris, Jr.

___
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org


Re: NetworkManager keyfile instead of ifcfg-rh - Fedora 33 System-Wide Change proposal

2020-06-29 Thread Samuel Sieb

On 6/29/20 9:40 AM, Ben Cotton wrote:

https://fedoraproject.org/wiki/Changes/NetworkManager_keyfile_instead_of_ifcfg_rh

== Summary ==
Change the default settings plugin of NetworkManager so that new
profiles will be created in keyfile format instead of ifcfg-rh format.


Is there any easy way to convert profiles from ifcfg-rh to keyfile?
___
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org


Re: NetworkManager keyfile instead of ifcfg-rh - Fedora 33 System-Wide Change proposal

2020-06-29 Thread John M. Harris Jr
On Monday, June 29, 2020 9:40:23 AM MST Ben Cotton wrote:
> https://fedoraproject.org/wiki/Changes/NetworkManager_keyfile_instead_of_ifc
> fg_rh
 
> == Summary ==
> Change the default settings plugin of NetworkManager so that new
> profiles will be created in keyfile format instead of ifcfg-rh format.
> 
> == Owner ==
> * Name: [[User:Thaller| Thomas Haller]]
> * Email: 
> 
> == Detailed Description ==
> NetworkManager supports settings plugins to persist connection
> profiles to disk. There is the native ''keyfile'' format and the
> Fedora/RHEL specific ''ifcfg-rh'' format originally from initscripts.
> The keyfile plugin is always enabled in NetworkManager and can handle
> any supported type of profile. It stores profiles under
> `/{etc,usr/lib,run}/NetworkManager/system-connections` and is
> documented in
> [https://developer.gnome.org/NetworkManager/stable/nm-settings-keyfile.html
> 
 nm-settings-keyfile manual]. The ifcfg-rh format is in part compatible
> with the network-scripts package from initscripts, however both
> network-scripts and NetworkManager define their own extensions
> ([https://developer.gnome.org/NetworkManager/stable/nm-settings-ifcfg-rh.htm
> l
 [1]]). Since network-scripts and NetworkManager are fundamentally
> different, the same ifcfg file is not treated exactly the same by both
> systems. In the past, having the ifcfg-rh format made it easier for users
> familiar with initscripts to migrate to/from NetworkManager. 
> The settings plugins are configurable in
> [https://developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html
> NetworkManager.conf] via the `"main.plugins"` option. Multiple plugins can
> be configured and on Fedora 32 and older, the compile time default for the
> option is `"ifcfg-rh,keyfile"`. This means, that when
> NetworkManager stores a new profile to disk, it will first try to
> persist it in ifcfg-rh format before falling back to keyfile format,
> if the ifcfg-rh plugin doesn't support the profile type. When reading
> profiles from disk, NetworkManager will read and expose profiles from
> both settings plugins and when modifying an existing profile, it will
> update the existing file and preserve the settings plugin.
> 
> This Change is about to change the default for `"main.plugins"` from
> `"ifcfg-rh,keyfile"` to `"keyfile,ifcfg-rh"`.
> 
> == Feedback ==
> This was brought up on the NetworkManager mailing list
> ([https://mail.gnome.org/archives/networkmanager-list/2020-May/msg2.html
> 
 [1]]]).
> 
> Fedora CoreOS doesn't use ifcfg-rh files at all, only keyfile. Also,
> RHEL CoreOS uses the `"main.plugins=ifcfg-rh,keyfile"` configuration
> too. For CoreOS this of course is simpler, because they don't deal
> with existing user configurations and tools that would break during
> upgrade.
> 
> == Benefit to Fedora ==
> The long term goal of NetworkManager is to move away from ifcfg-rh
> files. That will be difficult as it affects existing installations and
> will require migration of existing configurations. This change is only
> a first step and affects how NetworkManager by default persists new
> profiles to disk.
> 
> The ifcfg-rh format arguably has an uglier syntax and, contrary to
> keyfile, does not support all profile types. Also, keyfile plugin is
> available on every NetworkManager installation because that is the
> only plugin that supports all profiles. Having multiple plugins and
> file formats is confusing. By now, initscripts' `network-script`
> package is deprecated in Fedora and upstream wants to move away from
> that format in the long term. Also maintaining multiple settings
> plugins is a maintainance burden, and in the past there were subtle
> bugs where ifcfg-rh did not implement all settings (e.g.
> [https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2020-10754
> CVE-2020-10754]). On other Linux distributions NetworkManager uses the
> keyfile format by default. It is a general goal that NetworkManager
> works similar on all distributions.
> 
> == Scope ==
> 
> * Proposal owners: The default settings for `"main.plugins"` can
> already be selected at compile time. This only requires building the
> package with a different default
> ([https://src.fedoraproject.org/rpms/NetworkManager/blob/a06b38bcbe8f9a38bad
> ab4f37e8c6fae240428b7/f/NetworkManager.spec#_759
 [3]]).
> * Other developers: N/A (not needed for this Change)
> * Policies and guidelines: N/A (not needed for this Change)
> * Trademark approval: N/A (not needed for this Change)
> 
> == Upgrade/compatibility impact ==
> This affects most users, unless they explicitly set the option in
> NetworkManager.conf configuration. The biggest effect of this change
> is that new profiles will now preferably be persisted in keyfile
> format. This changes behavior for users who expect NetworkManager to
> write ifcfg-rh files, or who have scripts or tools that expect that.
> What will still work is that existing ifcfg files are loaded after
> upgrade. Users who only use the D-Bus API 

NetworkManager keyfile instead of ifcfg-rh - Fedora 33 System-Wide Change proposal

2020-06-29 Thread Ben Cotton
https://fedoraproject.org/wiki/Changes/NetworkManager_keyfile_instead_of_ifcfg_rh

== Summary ==
Change the default settings plugin of NetworkManager so that new
profiles will be created in keyfile format instead of ifcfg-rh format.

== Owner ==
* Name: [[User:Thaller| Thomas Haller]]
* Email: 

== Detailed Description ==
NetworkManager supports settings plugins to persist connection
profiles to disk. There is the native ''keyfile'' format and the
Fedora/RHEL specific ''ifcfg-rh'' format originally from initscripts.
The keyfile plugin is always enabled in NetworkManager and can handle
any supported type of profile. It stores profiles under
`/{etc,usr/lib,run}/NetworkManager/system-connections` and is
documented in 
[https://developer.gnome.org/NetworkManager/stable/nm-settings-keyfile.html
nm-settings-keyfile manual]. The ifcfg-rh format is in part compatible
with the network-scripts package from initscripts, however both
network-scripts and NetworkManager define their own extensions
([https://developer.gnome.org/NetworkManager/stable/nm-settings-ifcfg-rh.html
[1]]). Since network-scripts and NetworkManager are fundamentally
different, the same ifcfg file is not treated exactly the same by both
systems. In the past, having the ifcfg-rh format made it easier for
users familiar with initscripts to migrate to/from NetworkManager.

The settings plugins are configurable in
[https://developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html
NetworkManager.conf] via the `"main.plugins"` option. Multiple plugins
can be configured and on Fedora 32 and older, the compile time default
for the option is `"ifcfg-rh,keyfile"`. This means, that when
NetworkManager stores a new profile to disk, it will first try to
persist it in ifcfg-rh format before falling back to keyfile format,
if the ifcfg-rh plugin doesn't support the profile type. When reading
profiles from disk, NetworkManager will read and expose profiles from
both settings plugins and when modifying an existing profile, it will
update the existing file and preserve the settings plugin.

This Change is about to change the default for `"main.plugins"` from
`"ifcfg-rh,keyfile"` to `"keyfile,ifcfg-rh"`.

== Feedback ==
This was brought up on the NetworkManager mailing list
([https://mail.gnome.org/archives/networkmanager-list/2020-May/msg2.html
[1]]]).

Fedora CoreOS doesn't use ifcfg-rh files at all, only keyfile. Also,
RHEL CoreOS uses the `"main.plugins=ifcfg-rh,keyfile"` configuration
too. For CoreOS this of course is simpler, because they don't deal
with existing user configurations and tools that would break during
upgrade.

== Benefit to Fedora ==
The long term goal of NetworkManager is to move away from ifcfg-rh
files. That will be difficult as it affects existing installations and
will require migration of existing configurations. This change is only
a first step and affects how NetworkManager by default persists new
profiles to disk.

The ifcfg-rh format arguably has an uglier syntax and, contrary to
keyfile, does not support all profile types. Also, keyfile plugin is
available on every NetworkManager installation because that is the
only plugin that supports all profiles. Having multiple plugins and
file formats is confusing. By now, initscripts' `network-script`
package is deprecated in Fedora and upstream wants to move away from
that format in the long term. Also maintaining multiple settings
plugins is a maintainance burden, and in the past there were subtle
bugs where ifcfg-rh did not implement all settings (e.g.
[https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2020-10754
CVE-2020-10754]). On other Linux distributions NetworkManager uses the
keyfile format by default. It is a general goal that NetworkManager
works similar on all distributions.

== Scope ==

* Proposal owners: The default settings for `"main.plugins"` can
already be selected at compile time. This only requires building the
package with a different default
([https://src.fedoraproject.org/rpms/NetworkManager/blob/a06b38bcbe8f9a38badab4f37e8c6fae240428b7/f/NetworkManager.spec#_759
[3]]).
* Other developers: N/A (not needed for this Change)
* Policies and guidelines: N/A (not needed for this Change)
* Trademark approval: N/A (not needed for this Change)

== Upgrade/compatibility impact ==
This affects most users, unless they explicitly set the option in
NetworkManager.conf configuration. The biggest effect of this change
is that new profiles will now preferably be persisted in keyfile
format. This changes behavior for users who expect NetworkManager to
write ifcfg-rh files, or who have scripts or tools that expect that.
What will still work is that existing ifcfg files are loaded after
upgrade. Users who only use the D-Bus API (via one of the client
applications like nmcli or the GUI), shouldn't notice the difference.

As before, users still can explicitly configure the settings plugins
in NetworkManager.conf. This only affects the default, but it affects
existing 

NetworkManager keyfile instead of ifcfg-rh - Fedora 33 System-Wide Change proposal

2020-06-29 Thread Ben Cotton
https://fedoraproject.org/wiki/Changes/NetworkManager_keyfile_instead_of_ifcfg_rh

== Summary ==
Change the default settings plugin of NetworkManager so that new
profiles will be created in keyfile format instead of ifcfg-rh format.

== Owner ==
* Name: [[User:Thaller| Thomas Haller]]
* Email: 

== Detailed Description ==
NetworkManager supports settings plugins to persist connection
profiles to disk. There is the native ''keyfile'' format and the
Fedora/RHEL specific ''ifcfg-rh'' format originally from initscripts.
The keyfile plugin is always enabled in NetworkManager and can handle
any supported type of profile. It stores profiles under
`/{etc,usr/lib,run}/NetworkManager/system-connections` and is
documented in 
[https://developer.gnome.org/NetworkManager/stable/nm-settings-keyfile.html
nm-settings-keyfile manual]. The ifcfg-rh format is in part compatible
with the network-scripts package from initscripts, however both
network-scripts and NetworkManager define their own extensions
([https://developer.gnome.org/NetworkManager/stable/nm-settings-ifcfg-rh.html
[1]]). Since network-scripts and NetworkManager are fundamentally
different, the same ifcfg file is not treated exactly the same by both
systems. In the past, having the ifcfg-rh format made it easier for
users familiar with initscripts to migrate to/from NetworkManager.

The settings plugins are configurable in
[https://developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html
NetworkManager.conf] via the `"main.plugins"` option. Multiple plugins
can be configured and on Fedora 32 and older, the compile time default
for the option is `"ifcfg-rh,keyfile"`. This means, that when
NetworkManager stores a new profile to disk, it will first try to
persist it in ifcfg-rh format before falling back to keyfile format,
if the ifcfg-rh plugin doesn't support the profile type. When reading
profiles from disk, NetworkManager will read and expose profiles from
both settings plugins and when modifying an existing profile, it will
update the existing file and preserve the settings plugin.

This Change is about to change the default for `"main.plugins"` from
`"ifcfg-rh,keyfile"` to `"keyfile,ifcfg-rh"`.

== Feedback ==
This was brought up on the NetworkManager mailing list
([https://mail.gnome.org/archives/networkmanager-list/2020-May/msg2.html
[1]]]).

Fedora CoreOS doesn't use ifcfg-rh files at all, only keyfile. Also,
RHEL CoreOS uses the `"main.plugins=ifcfg-rh,keyfile"` configuration
too. For CoreOS this of course is simpler, because they don't deal
with existing user configurations and tools that would break during
upgrade.

== Benefit to Fedora ==
The long term goal of NetworkManager is to move away from ifcfg-rh
files. That will be difficult as it affects existing installations and
will require migration of existing configurations. This change is only
a first step and affects how NetworkManager by default persists new
profiles to disk.

The ifcfg-rh format arguably has an uglier syntax and, contrary to
keyfile, does not support all profile types. Also, keyfile plugin is
available on every NetworkManager installation because that is the
only plugin that supports all profiles. Having multiple plugins and
file formats is confusing. By now, initscripts' `network-script`
package is deprecated in Fedora and upstream wants to move away from
that format in the long term. Also maintaining multiple settings
plugins is a maintainance burden, and in the past there were subtle
bugs where ifcfg-rh did not implement all settings (e.g.
[https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2020-10754
CVE-2020-10754]). On other Linux distributions NetworkManager uses the
keyfile format by default. It is a general goal that NetworkManager
works similar on all distributions.

== Scope ==

* Proposal owners: The default settings for `"main.plugins"` can
already be selected at compile time. This only requires building the
package with a different default
([https://src.fedoraproject.org/rpms/NetworkManager/blob/a06b38bcbe8f9a38badab4f37e8c6fae240428b7/f/NetworkManager.spec#_759
[3]]).
* Other developers: N/A (not needed for this Change)
* Policies and guidelines: N/A (not needed for this Change)
* Trademark approval: N/A (not needed for this Change)

== Upgrade/compatibility impact ==
This affects most users, unless they explicitly set the option in
NetworkManager.conf configuration. The biggest effect of this change
is that new profiles will now preferably be persisted in keyfile
format. This changes behavior for users who expect NetworkManager to
write ifcfg-rh files, or who have scripts or tools that expect that.
What will still work is that existing ifcfg files are loaded after
upgrade. Users who only use the D-Bus API (via one of the client
applications like nmcli or the GUI), shouldn't notice the difference.

As before, users still can explicitly configure the settings plugins
in NetworkManager.conf. This only affects the default, but it affects
existing