Am 16.06.19 um 10:06 schrieb Adam Johnson:
> * Your “homepage” link on PyPI is example.com <http://example.com>.
> The usual thing to do here is link to your source host or docs. Set
> this as url in your setup.py.
Sure. Forgot this when switching from setup.py to setup.cfg. Corrected,
thanks.
> * I see you list pretix as an inspiration - did you see Raphael have a
> talk at Djangocon Europe in April on this?
> https://youtu.be/QbitxAEEZjI It may be old news to you though if
> you’re familiar

Didn't know this talk, thanks. But I had an email conversation with him
a while ago about that and he was the one who I learned a lot from about
how to create GDAPS. Basically my implementation does not differ too
much, and I even am considering using his "PretixPluginMeta" inner class
in the AppConfig of GDAPS plugins too. I just think about other ways ATM
- but I'm pretty sure I'll implement his way - in a more generic style.

It even could be that GDAPS plugins are so similar that Pretix *could*
switch it's underlying plugin system to GDAPS without changing very much.

He did a really great job there and I never would be able to do this on
my own, without the insights he gave me to Pretix. Same goes for PyUtilib.

> * GPL can make your project hard to use, because depending on the
> lawyers it can be interpreted as having to make the website source
> code public. In the one dependency audit I went through, GPL and AGPL
> were disallowed and we had to strip a dependency or two because of this.

Yes, you are right too. This was another too fast shot - I'd like to
release my project which is using GDAPS under the GPL/AGPL later. GDAPS
is a library, and here the GPL doesn't help much. I need to think about
it a bit, a little part of the code is from PyUtilib (which is BSD), and
a bit copied from Graphene-Django (which is MIT). So maybe I'll switch
to BSD too. Recommendations here for Django libraries, or specially GDAPS?

> * What do you think are the implications for Django core? Is there
> anything Django could do better to support this and all the other
> plugin systems you’ve looked at? Also I’m totally sure you can
> contribute, it’s not scary and there is a lot of information on
> getting started! See 
> https://docs.djangoproject.com/en/dev/internals/contributing/

Yes, I'll have a deeper look at the contributing guidelines.
The most parts where I had to struggle within Django were:

* The settings, to let each module provide it's own setting. There is no
standardized way of having settings saved. I borrowed the
graphene-django way - which had copied it from DRF ;-)

* Django doesn't allow to easily add apps to the running server when
already started. Even adding apps to INSTALLED_APPS after loading Django
is impossible, it has to be done within the setup process - I solved
that using a Pluginmanager method (find_plugins) which is called after
declaring INSTALLED_APPS in settings.ps, and which returns an
INSTALLED_APPS compatible array which can be merged into INSTALLED_APPS.
This method is certainly not able to call DB commands in that early
startup point of time.
So what I initially planned, downloading apps from a connected "app
store" for my application, installing it "on the fly" (including
makemigrations/migrate paths) and hooking in the plugin into the running
process is not possible in Django.

I don't have a big problem here, as installing a plugin ATM in GDAPS is
just (for projects without SPA/frontend support):

stop server
pip install fooplugin
./manage.py makemigrations
./manage.py migrate
start server

which is perfectly ok for what I need.

* URL routing was easy to integrate - the only thing which is remaining
IMHO is - django does not help to "weigh" the rules. But this is a thing
I want to implement in GDAPS - to give plugin apps the possibility to
add a "weight" to URL paths so they are "ordered" in a more
deterministic way.
I just created a ticket where I described that a bit:
https://gitlab.com/nerdocs/gdaps/issues/4

Same could go to the INSTALLED_APPS ordering. A "weight" ordering is not
ideal here, I think that a dependency resolution system would be much
better here. Here Django could help a bit - Django apps are depending on
other apps, declared in setup.py or setup.cfg. If this meta information
would be available to Django (or GDAPS), the loading of apps (GDAPS
plugins) could be at least done automatically in a way that dependant
apps are loaded after their dependencies.

So far... much to do.
I hope earth is going to spin slower soon, so a day gets more than 24h. ;-)

Christian

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To post to this group, send email to django-developers@googlegroups.com.
Visit this group at https://groups.google.com/group/django-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/aba23fb4-1ab5-4ed1-b4c3-28068d7d50be%40nerdocs.at.
For more options, visit https://groups.google.com/d/optout.

Attachment: pEpkey.asc
Description: application/pgp-keys

Reply via email to