[tc] [ironic] Promoting ironic to a top-level opendev project?
Dmitry Tantsur
dtantsur at redhat.com
Thu Apr 16 09:09:23 UTC 2020
On Thu, Apr 16, 2020 at 10:50 AM Dmitry Tantsur <dtantsur at redhat.com> wrote:
> Hi,
>
> On Wed, Apr 15, 2020 at 9:55 PM Ben Nemec <openstack at nemebean.com> wrote:
>
>>
>>
>> On 4/7/20 5:15 AM, Dmitry Tantsur wrote:
>> > Hi,
>> >
>> > On Mon, Apr 6, 2020 at 11:06 PM Ben Nemec <openstack at nemebean.com
>> > <mailto:openstack at nemebean.com>> wrote:
>> >
>> > At the risk of getting defensive, I do want to make some points
>> > relating
>> > to Oslo specifically here.
>>
> <snip>
>
>> >
>> > > 1) oslo.config is a fantastic piece of software that the whole
>> > python
>> > > world could benefit from. Same for oslo.service, probably.
>> >
>> > oslo.config is an interesting case because there is definitely
>> interest
>> > outside OpenStack thanks to things like the Castellan config
>> backend,
>> > but as Doug mentioned oslo.config is heavily opinionated (global
>> config
>> > object, anyone?) and that's an issue for a lot of people. I will
>> also
>> > point out that the only oslo.* dependency that oslo.config has is
>> > oslo.i18n, which itself has no other oslo dependencies, so there's
>> not
>> > much barrier to entry to using it standalone today.
>> >
>> >
>> > oslo.config currently pulls in 16 dependencies to a clean venv,
>> > including oslo.18n, Babel (why?) and requests (WHY?).
>>
>> Well, it's got translated strings and thus i18n, Babel is used for lazy
>> translation, and requests is used for the remote file driver. It's
>> posssible the latter two could/should be optional deps, but without them
>> you do lose functionality.
>>
>
> Please pardon my ignorance, it's the first time I hear about this driver?
> How many people are using it in the wild? Will it hurt much if we treat
> this dependencies similar to database/tooz backend, i.e. as optional?
>
> More on Babel below.
>
>
>>
>> >
>> >
>> > I would not inflict oslo.service on anyone I liked. :-P
>> >
>> >
>> > So, you don't like us? :-P
>>
>> I don't _think_ I'm responsible for anyone using oslo.service. If I am,
>> it happened years ago before I had dug into oslo.service much. ;-)
>>
>> >
>> >
>> > Seriously though, I would advocate for using cotyledon if you're
>> > looking
>> > for a general purpose service library. It's not eventlet-based and
>> > provides a lot of the functionality of oslo.service, at least as I
>> > understand it. It was also written by an ex-Oslo contributor
>> outside of
>> > OpenStack so maybe it's an interesting case study for this
>> > discussion. I
>> > don't know how much contribution it gets from other sources, but
>> that
>> > would be good to look into.
>> >
>> >
>> > Good to know, thanks!
>> >
>> >
>> > > 2) oslo.utils as a catch-all repository of utilities should IMO
>> be
>> > > either moved to existing python projects or decomposed into small
>> > > generally reusable libraries (essentially, each sub-module could
>> > be a
>> > > library of its own). Same for oslo.concurrency.
>> >
>> > oslo.concurrency has already been decomposed into general purpose
>> code
>> > (fasteners) and OpenStack-specific, at least for the most part. I'm
>> > sure
>> > the split isn't perfect, but it's not like we haven't recognized the
>> > need for better concurrency libraries in Python as a whole. Note
>> that
>> > fasteners also lives outside Oslo in another ex-Osloers personal
>> repo.
>> > Again, I'm not sure whether that was beneficial or not but it might
>> be
>> > worth reaching out to Mehdi and Josh to see how they feel about it.
>> >
>> >
>> > I *think* we mostly use oslo.concurrency for its execute() wrapper,
>> > which seems like it could be a very useful library on its own (can I
>> > suggest better-execute as a name?).
>>
>> Certainly something we could explore. Note that quite a few projects
>> also use interprocess locks from o.c, in which case they're implicitly
>> picking up some standard config opts for setting things like lock_path.
>> I don't know if that's the case for Ironic though.
>>
>
> We only use in-process locks.
>
>
>>
>> >
>> >
>> > I would probably -2 any attempt to split oslo.utils. You'd end up
>> > with a
>> > bunch of single file libraries and a metric ****-ton of
>> administrative
>> > overhead. It's bad enough managing 40 some repos as it is. Also,
>> that's
>> > another library with minimal cross-dependencies with the rest of
>> Oslo
>> > (just oslo.i18n again), which was an intentional design decision to
>> > make
>> > it relatively painless to pull in.
>> >
>> >
>> > I guess I have a personal dislike of libraries without a simple goal
>> > (I've been also fighting with various "utils" modules inside Ironic -
>> > with only limited luck).
>>
>> I guess I should have noted that I agree "utils" and "misc" modules tend
>> to be a code smell, but in this case we had two bad options available
>> and had to pick one. IMHO we've done a reasonable job of keeping
>> oslo.utils pretty minimal, but obviously I'm a bit biased. :-)
>>
>
> I guess I'm fine with that if we stop pulling in Babel :)
>
> By the way, only oslo.i18n imports Babel directly. I'm proposing patches
> to various projects that move it out of requirements.txt. If you see one -
> please review.
>
> E.g. a shameless ping for osc-lib folks: https://review.opendev.org/717737
>
>
>>
>> >
>> > I do suspect that at least some of oslo.utils contents could find a new
>> > home, some maybe even in the stdlib. I also don't want us to end up in
>> > the leafpad situation, on the other hand.
>>
>> That's entirely possible. We kind of lost our stdlib guy when Victor
>> left the Oslo team so there may be things we've overlooked that could
>> have been upstreamed.
>>
>> >
>> >
>> > > 3) I'm genuinely not sure why oslo.log and oslo.i18n exist and
>> which
>> > > parts of their functionality cannot be moved upstream.
>> >
>> > oslo.log basically provides convenience functions for OpenStack
>> > services, which is kind of what the oslo.* libraries should do. It
>> > provides built-in support for things like context objects, which are
>> > fairly domain-specific and would be difficult to generalize. It also
>> > provides a common set of configuration options so each project
>> doesn't
>> > have to write their own. We don't need 20 different ways to enable
>> > debug
>> > logging. :-)
>> >
>> > oslo.i18n is mostly for lazy translation, which apparently is a
>> thing
>> > people still use even though the company pushing for it in the first
>> > place no longer cares. We've also had calls to remove it completely
>> > because it's finicky and tends to break things if the consuming
>> > projects
>> > don't follow the best practices with translated strings. So it's in
>> a
>> > weird limbo state.
>> >
>> >
>> > May I join these calls please? :) Will I break Zanata (assuming anybody
>> > still translates ironic projects) if I switch to the upstream gettext?
>>
>> I don't think you'll break Zanata, I think you'll break anyone who was
>> using lazy translation. I know there are users of it out there, but
>> maybe we should look into getting a user survey question for Oslo that
>> would give us an idea of how widely its used.
>>
>
> I meant changing ironic, which honestly doesn't have real translations any
> more..
>
>
>>
>> >
>> >
>> > I did talk with JP in Shanghai about possibly making it optional
>> > because
>> > it pulls in a fair amount of translation files which can bloat
>> minimal
>> > containers. I looked into it briefly and I think it would be
>> possible,
>> > although I don't remember a lot of details because nobody was really
>> > pushing for it anymore so it's hard to justify spending a bunch of
>> time
>> > on it.
>> >
>> >
>> > I'd be curious to hear more.
>>
>> Upon reflection, I think the thing we were looking to make optional was
>> the Babel dep of oslo.i18n. It pulls in something like 6 MB of
>> translation files
>
>
> Oh, yeah. When building our ramdisk, we have to manually delete these
> files to make it smaller.
>
>
>> and is only used to look up the available languages
>> for lazy translation. I think code changes were needed though, it wasn't
>> as simple as moving Babel to optional. There's probably an argument that
>> we shouldn't be making that call when lazy translation is disabled
>> anyway though.
>>
>
> Is it something I can help with?
>
> It seems that Babel is only used in get_available_languages. Can we make
> it an optional dependency for projects that do use this call (ironic does
> not)?
>
I've prepared a patch: https://review.opendev.org/#/c/720404/ comments are
welcome.
It seems that we need to update all projects using get_available_languages
(mostly "core" projects) to depend on Babel explicity.
Dmitry
>
> Dmitry
>
>
>>
>> >
>> > Dmitry
>> >
>> >
>> > TLDR: I think Oslo provides value both in and out of OpenStack
>> > (shocking, I know!). I'm sure the separation isn't perfect, but
>> what is?
>> >
>> > There are some projects that have been split out of it that might be
>> > interesting case studies for this discussion if anyone wants to
>> follow
>> > up. Not it. ;-)
>> >
>> > -Ben
>> >
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-discuss/attachments/20200416/413e0aed/attachment-0001.html>
More information about the openstack-discuss
mailing list