Ray,

I don't think that this is a desirable rule.

I want to create feature packages that bundle frequently used together existing 
capabilities.  See the NetworkFeaturePkg for an example.  I also want to make 
feature packages for the USB stack, debug capabilities, and the like that are 
often aggregations of existing modules.

The Minimum Platform Architecture spec targets advanced features that are easy 
to enable for relatively inexperienced developers.  One way of doing that is to 
leverage the UEFI PI arch and its binary component support features.  The 
Minimum Platform Architecture aims to use this to enable a use case leveraging 
Firmware Volumes that looks like:
1:  Build NetworkFeaturePkg (this produces an FV, customized via PCD and/or 
static libraries as needed)
2:  Load FV (from shell, by injecting into an existing image using FMMT, Fiano, 
etc)
3:  Use network features and functionality

The model where the only way people extend a UEFI firmware image is by 
rebuilding a complete solution needs to end.  It is a misuse of the 
architecture in my estimation.  We have not had much success with fine 
granularity component binary use, i.e. individual PEIM and drivers.  Perhaps 
there is too much expertise needed.  Minimum Platform Architecture and Advanced 
Features aim to improve this by enabling larger granularity binary components 
that require less UEFI knowledge to use effectively.

I recognize that there is a competing vision that wants to make many small 
feature packages that are easy to build in or out based on simple PCD feature 
flags.  As that may improve developer's experience, it is not something I am 
strongly contesting.  However, I just don't see it as any different than 
MdeModulePkg.  It is the same strategy, just using packages to organize instead 
of directories.

The other consideration should include that we have a lot of existing users.  I 
don't want to move existing code around to make usable features.  If we move 
existing code to create the feature in the first place, we affect all the 
existing users, often for no immediate benefit.  If features become successful 
and widely used, then is a good time to refactor the code.  The difference is 
that at that time, the change is essentially behind an abstraction and so the 
change doesn't cause as much pointless work.

Regards,
Isaac


-----Original Message-----
From: Ray Ni <niru...@users.noreply.github.com> 
Sent: Thursday, March 12, 2020 5:41 AM
To: devel@edk2.groups.io
Cc: Ni, Ray <ray...@intel.com>; Dong, Eric <eric.d...@intel.com>; Chan, Amy 
<amy.c...@intel.com>; Chaganty, Rangasai V <rangasai.v.chaga...@intel.com>; 
Oram, Isaac W <isaac.w.o...@intel.com>
Subject: [PATCH] Features/Intel/Readme.md: Document meaning of "Complete" for 
features

Today's document doesn't forbidden creation of a feature package with only 
interfaces and no code to implement the interfaces. Such feature package is 
useless.

Signed-off-by: Ray Ni <ray...@intel.com>
Cc: Eric Dong <eric.d...@intel.com>
Cc: Amy Chan <amy.c...@intel.com>
Cc: Rangasai V Chaganty <rangasai.v.chaga...@intel.com>
Cc: Isaac W Oram <isaac.w.o...@intel.com>
---
 Features/Intel/Readme.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Features/Intel/Readme.md b/Features/Intel/Readme.md index 
9729f90a41..f0923e3d56 100644
--- a/Features/Intel/Readme.md
+++ b/Features/Intel/Readme.md
@@ -18,7 +18,7 @@ document as needed.
 Advanced features should be:
 * _Cohesive_, the feature should not contain any functionality unrelated to 
the feature.
 * _Complete_, the feature must have a complete design that minimizes 
dependencies. A feature package cannot directly
-  depend on another feature package.
+  depend on another feature package. A feature package must contain module(s) 
to implement the feature interfaces.
 * _Easy to Integrate_, the feature should expose well-defined software 
interfaces to use and configure the feature.
   * It should also present a set of simple and well-documented standard EDK II 
configuration options such as PCDs to
   configure the feature.
--
2.21.0.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#55826): https://edk2.groups.io/g/devel/message/55826
Mute This Topic: https://groups.io/mt/71904631/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to