Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Проект кажется заброшенным, обновление #160

Closed
snooppr opened this issue Nov 17, 2022 · 42 comments
Closed

Comments

@snooppr
Copy link

snooppr commented Nov 17, 2022

Посмотрел проблемы, дату обновлений и словари, мертво. Разработчик молчит.

Может ли кто разветвить проект с принятыми PR и обновленными словарями?

Ссылку предлагайте сюда.

@insolor
Copy link
Member

insolor commented Nov 17, 2022

Я вижу, что @kmike активен на гитхабе, но видимо потерял интерес к проекту.

Мне кажется идеальным был бы вариант, чтобы все что связано с pymorphy2 было перенесено в отдельную организацию, и кого-то из активных контрибьюторов назначить админами. Хотелось бы вместе со всеми issues и pull-requests, но это нужно чтобы @kmike сам перенес.

@ArchiDevil
Copy link

Автор не отвечает даже на прямое письмо на почту, к сожалению. Проект явно требует поддержки, от него, например, зависит неплохая модель для русского языка в spacy.

@Vuizur
Copy link

Vuizur commented Nov 29, 2022

https://github.com/no-plagiarism/pymorphy3 seems to be a fork with some more recent activity, it also hasn't added 3.11 support though. (But I think it updated the dictionaries.)

@insolor
Copy link
Member

insolor commented Nov 29, 2022

@Vuizur from one point of view, it's good to hear that the project is continued by someone.

From the other point of view, they declare that they follow all rules of MIT license, but they have added GNU GPL 3 license (not MIT) and removed AUTHORS.rst, which is an obvious violation of MIT license. And I don't see anywhere that pymorphy2 is licensed as MIT. I don't see any license at all.

So I assume that one does not simply fork the repository and change the license, one need at least a license clarification and some kind of permission from @kmike.

@Vuizur
Copy link

Vuizur commented Nov 29, 2022

It is a very good point about the altered license, maybe you should ask/open an issue in the pymorphy3 project. It really is a bit disappointing that it is more restrictive. Also because I think spacy depends on it, and technically spacy is MIT, so this could be problematic... You're also right about the authors file.

In the Readme of pymorphy2 there is a sentence that this is MIT licensed, so forking the repo should be totally fine without additional permission. 👍

@insolor
Copy link
Member

insolor commented Nov 29, 2022

In the Readme of pymorphy2 there is a sentence that this is MIT licensed, so forking the repo should be totally fine without additional permission. +1

Morphological analyzer (POS tagger + inflection engine) for Russian and Ukrainian languages. License is MIT.

Oh, I see it now. It is very sneaky 😃

@snooppr
Copy link
Author

snooppr commented Nov 29, 2022

@Vuizurс одной точки зрения, приятно слышать, что проект кем-то продолжается.

С другой точки зрения, они заявляют, что соблюдают все правила лицензии MIT, но добавили лицензию GNU GPL 3 (не MIT) и удалили AUTHORS.rst, что является очевидным нарушением лицензии MIT. И я нигде не вижу, чтобы pymorphy2 имел лицензию MIT. Я вообще не вижу никакой лицензии.

Поэтому я предполагаю, что нельзя просто разветвить репозиторий и изменить лицензию, нужно как минимум разъяснение лицензии и какое-то разрешение от @kmike.

В Ридми и на PyPi указано, что лицензия MIT (но должным образом это не оформлено, т.е. лицензия MIT требует от автора определенного лицензионного текста, но этого текста в pymorphy2 нигде нет. Автор неряшливый и сам нарушает условия лицензии MIT).

Лицензия MIT не требует разрешений от автора и совместима с GPL3+, но требует в дальнейшем упоминать везде авторов, так что, да, тот чел, что разветвил и удалил из репозитория авторство нарушил лицензирование, но точно не MIT, вопрос какое именно?!.

ps/ Словари обновил без проблем на GNU/Linux и подсунул их в тч. и на Pymorphy2 в Termux, работает.

@kmike оформи свободную лицензию на pymorphy2 в соответствии с правилами этой лицензии и дай людям возможность продолжить доброе дело, спасибо.

@insolor
Copy link
Member

insolor commented Nov 29, 2022

Написал, посмотрим что ответят: no-plagiarism#3

Но что-то не похоже, что активно занимаются поддержкой. В крайнем случае сделаем свой форк. Единственно скорее всего придется делать отдельное имя для пакета, т.к. pypi.org вряд ли даст от чужого аккаунта выкладывать поверх pymorphy2. Т.к. pymotphy3 уже занято, я бы назвал pymorphy2.1 или 2.5, типа прямой преемник, но точка в названии не очень нравится. Надо подумать.

Ну или случится чудо, и @kmike добавит в соавторы на pypi.org :)

@mvasilkov
Copy link

Удваиваю форк. Просто morphy2, без py-, пока свободно.

@ArchiDevil
Copy link

Написал автору в других соцсетях, может где-нибудь получится узнать о судьбе проекта.

@insolor
Copy link
Member

insolor commented Nov 30, 2022

@mvasilkov еще как вариант - pymorpher. Но я думаю голосование провести, если дело дойдет до форка.

@d9nchik
Copy link

d9nchik commented Dec 1, 2022

@insolor thanks for the opening issue. We've changed our license to MIT

@d9nchik
Copy link

d9nchik commented Dec 1, 2022

Sorry for the late answer, but I would like to mention the key benefits of using pymorphy3 over pymorphy2

TLDR: Main changes between pymorphy2 and pymorphy3

Now, let's dive deeper

Prehistory

The main idea has been to refresh pymorphy2 dictionaries, mainly Ukrainian, that were in betta.
When we've tried to recompile the Ukrainian dictionary error with a small suffix size has been encountered.

Further exploration has shown, that changing this variable makes dictionaries incompatible with each other. (breaking backwards compatible).

Release

We've tried to make a contribution to the project. We've even spoken with the main contributors.
I've written simple instructions for my friends.

1. install original pymorphy2 `pip install pymorphy2`
2. go to venv/lib/pymorphy2/dawg.py
3. Change in 46 line 
`    DATA_FORMAT = str(">HHH")` to
`    DATA_FORMAT = str(">IHH")`
4. Save
5. Copy in venv/lib new pymorphy2_dicts_ru and pymorphy2_dicts_uk
6. happy hacking!

How to create new dictionaries.
1. clone pymorphy2-dicts
2. install all dependencies from requirements.txt
3. Do step 2-4 from the previous instruction
4. Compile wanted dictionary
5. You have a new dictionary

This wasn't helpful for developers, especially for DevOps staff(building containers, testing code in CI and so on), so we've decided to release library pymorphy3 with updated dictionaries.

Summary

I hope, this brief article has shown our aims and our path. Also, we actively hoping to rise up: we're looking for a repo maintainer. Even a small contribution can make the whole world better.

QA

  • Is the API of pymorphy2 fully compatible with pymorphy3
    Yes
  • Can I install pymorphy2 dictionaries in pymorphy3 and vice versa?
    No, versions pymorphy3 and pymorphy2 dictionaries are not forward or backwards compatible, so you can get crazy exceptions in your software.

@d9nchik
Copy link

d9nchik commented Dec 1, 2022

It's worth mentioning, that the last time Ukrainian dictionaries of pymorphy3 were updated on 13 September 2022.
Also, pymorphy3 will replace pymorphy2 in spacy in version 3.5.
Nowadays, we have a problem with python3.11 compatibility, but we will try to fix it soon.

@insolor
Copy link
Member

insolor commented Dec 1, 2022

@d9nchik thank you for the answer. So, we can consider pymorphy3 a successor of pymorphy2.

I was planning to make a fork myself, merge all the pull requests from pymorphy2 and try to sort out the issues.

Probably I can participate in maintainig of pymorphy3. But I can't do it full time, and also I would like to know what you expect from a project maintainer.

@snooppr
Copy link
Author

snooppr commented Dec 1, 2022

@d9nchik thank you for the answer. So, we can consider pymorphy3 a successor of pymorphy2.

I was planning to make a fork myself, merge all the pull requests from pymorphy2 and try to sort out the issues.

Probably I can participate in maintainig of pymorphy3. But I can't do it full time, and also I would like to know what you expect from a project maintainer.

С юридической точки зрения — всё ещё нет. Проблема с лицензией не разрешена сама собой...

@insolor
Copy link
Member

insolor commented Dec 1, 2022

@snooppr уже изменили лицензию на MIT и вернули файл авторов.

@d9nchik
Copy link

d9nchik commented Dec 1, 2022

Probably I can participate in maintaining of pymorphy3. But I can't do it full-time, and also I would like to know what you expect from a project maintainer.

In my perspective maintainer is a person, that is ready to spend a couple of hours every day to support a codebase (fix issues, review PR), and be involved in GitHub discussions connected to the project, update documentation. To become a maintainer you should send(2-3 maybe more depending on difficulty, that fixes issues not connected with typos and documentation) several PRs to pymorphy3. Previous PRs approved in pymorphy2 also count, because codebases are similar.


В моем понимании мейнтейнер — это человек, который готов ежедневно уделять пару часов поддержке кодовой базы (исправление ошибок, проверка PR), а также участвовать в дискуссиях на GitHub, связанных с проектом, обновление документацию. Чтобы стать мейнтейнером, вам нужно отправить (2-3, а может и больше, в зависимости от сложности проблем. Проблемы связанные с опечатками и документацией не считаются.) несколько PR на pymorphy3. Предыдущие PR, одобренные в pymorphy2, также учитываются, поскольку кодовые базы похожи.

@d9nchik
Copy link

d9nchik commented Dec 1, 2022

Для того чтобы стать мейнтейнером, достаточно открыть Issue(шаблон в скором времени добавлю) где описать ваш вклад в проект. После чего мы с комьюнити решим достоин ваш вклад роли ментейнера или вам стоит попробовать в другой раз.

@ArchiDevil
Copy link

@d9nchik, has pymorphy3 been updated for Russian language?

@d9nchik
Copy link

d9nchik commented Dec 1, 2022

@d9nchik, has pymorphy3 been updated for Russian language?

Yes, pymorphy3 has been updated for the Russian language using open corpora

@kmike
Copy link
Collaborator

kmike commented Dec 21, 2022

Hey! What do you think about creating an organization for pymorphy2 with a few more maintainers, moving pymorphy2 repo there, and merging back pymorphy3 improvements?

@kmike
Copy link
Collaborator

kmike commented Dec 21, 2022

Thanks for picking it up!

@insolor
Copy link
Member

insolor commented Dec 23, 2022

@kmike I think in general everyone agrees with this.
So, what are our further actions? Will you create an organization, or someone else should create it, and then you transfer repositories?

@kmike
Copy link
Collaborator

kmike commented Dec 23, 2022

For now I've moved pymorphy2 and pymorphy2-dicts to https://github.com/pymorphy2 org, and invited @d9nchik and you @insolor as members (because you have a track of contributions). Next would be to setup pypi releases from CI. I'll figure out member/owner access a bit later.

@kmike
Copy link
Collaborator

kmike commented Dec 23, 2022

It'd be also great to move https://github.com/dchaplinsky/LT2OpenCorpora to this org (cc @dchaplinsky), so that everything is in a single place.

@Kowalski0805
Copy link

Hey! What do you think about creating an organization for pymorphy2 with a few more maintainers, moving pymorphy2 repo there, and merging back pymorphy3 improvements?

Hello @kmike,
As part of the pymorphy3 team, I am interested in supporting the pymorphy2 project and its pymorphy2-dicts-uk package. Although in current circumstances (particularly the Russo-Ukrainian War and the 2022 Russian invasion of Ukraine), as citizens of Ukraine, our team can't allow ourselves to be contributors to a project with Russian origin without it having an explicit statement about the war, condemning Russia and supporting Ukraine (e.g. mentioned in README.md or docs/readme.rst).

If you (as an author) or the pymorphy2 community decide not to make such a statement, then our team will not take part in maintaining pymorphy2; instead, we will keep supporting the fork (until we find an alternative to use for NLP for the Ukrainian language). Reference to the authors of pymorphy2, MIT license and link to the original repo will be kept, but we will abstain from supporting pymorphy2, although maintainers of pymorphy2 may feel free to copy improvements and modifications from pymorphy3 to pymorphy2, just without any mentions of pymorphy3 members as contributors or authors to pymorphy2. In that case, the name pymorphy3 will be changed to something else to express differentiation from the pymorphy2 team.

If the authors/community of pymorphy2 decide to publish such a statement, then we will happily take part in contributing to and maintaining pymorphy2 (although not full-time).

@kmike
Copy link
Collaborator

kmike commented Dec 23, 2022

The work on adding Ukrainian language support to pymorphy2 was started in 2014, originating from the work of Ukrainian NLP community - @dchaplinsky, @mariana-scorp and a few other people. I've been refactoring pymorphy2 internals to make it happen. The timeline is not a coincidence. For me personally, rewriting pymorphy2 to support the Ukrainian language was a response to the Crimea annexation; that was the thing I could do to help. I'm not from academia, and obviously there is no financial motivation whatsoever.

My heart wants to do what you suggest, but brain tells not to do so. For various reasons I need to stay in Russia. Because of recent laws it doesn't feel safe for me, my wife and my son to become targets. It's not a right time for me to take a stand and use software I wrote as a political platform. I can understand if that's a reason for you not to collaborate. That's a sad reality. Please tell if there is some other way I could help.

I wonder if it's not just the Russian origin of the author which bothers you, but if there is a more deep sentiment "they put Russian and Ukrainian laguages in the same package, suggesting that they are the same language and the same country". That's definitely something we can clarify in the readme.

@Kowalski0805
Copy link

Hello @kmike! Sorry for the late response.

Thank you for the answer! We discussed this as a team and decided that it'd be better for all parties if we continued supporting the fork. All pymorphy2 licenses will be kept and abided by, and you are welcome to port any developments to the main pymorphy2 project. However, we will refrain from contributing to pymorphy2 directly.

Rest assured that we will rename the fork as soon as possible to make the pymorphy3 name available.

Thank you for understanding.

@kuk
Copy link

kuk commented Jan 18, 2023

@kmike I would like to do some work on the project, current plan:

@bt2901
Copy link

bt2901 commented Feb 3, 2023

Oh, I wanted to say here that I was working on generating pymorphy2 dictionaries for Interslavic language (maybe potentially for other Slavic languages, if there is an interest), and I'd really like if someone took a look at my PR into pytries organization: pytries/DAWG-Python#4

DAWG and DAWG-Python are dependencies of pymorphy2 and the fix in my PR is really needed for diacritic substitution to function correctly. That's not just a niche conlang thing: if someone wanted to extend pymorphy2 to Czech/Slovak/Polish, then they will likely encounter some issues with u/ú/ů, o/ó/ô, and z/ź/ż.

The last version of my dictionaries (and the code that generates them) is here, just in case: https://github.com/medzuslovjansky/ISV_pymorphy2_dicts/releases/tag/v0.88

@insolor
Copy link
Member

insolor commented Feb 16, 2023

@kmike, we still need someone with rights to merge pull requests to move on

@elementary-charge
Copy link

elementary-charge commented Mar 28, 2023

For those who need support pymorphy2 for 3.11 right now, there is patch-like solution.

def pymorphy2_311_hotfix():
    from inspect import getfullargspec
    from pymorphy2.units.base import BaseAnalyzerUnit

    def _get_param_names_311(klass):
        if klass.__init__ is object.__init__:
            return []
        args = getfullargspec(klass.__init__).args
        return sorted(args[1:])

    setattr(BaseAnalyzerUnit, '_get_param_names', _get_param_names_311)
def pymorphy2_example():
    pymorphy2_311_hotfix()
    morph = pymorphy2.MorphAnalyzer()
    parse_result = morph.parse('хочу')
    print(parse_result[0].normal_form)  # >>> хотеть

@insolor
Copy link
Member

insolor commented Mar 28, 2023

@kmike, no, seriously. I'm sure it won't take much time to assign reviewers. I suggest assigning @kuk as well, since he seems to be interested in maintaining the project.

Another thing we need from you is to set up an automatic package release. Other things from @kuk's list we can handle ourselves, I think (I hope).

@insolor
Copy link
Member

insolor commented May 11, 2023

@kmike, so, probably this week (or at least in the nearest future) I'll create a new organization for the further development of the project, because in the current state we cannot do anything.

@insolor
Copy link
Member

insolor commented May 13, 2023

Here it is: https://github.com/pymorphy2-fork

Roadmap: https://github.com/orgs/pymorphy2-fork/projects/3

@insolor
Copy link
Member

insolor commented May 19, 2023

Мне нужна обратная связь.

Я сделал форк (ссылка выше), но теперь не понимаю, насколько в этом есть смысл, при наличии pymorphy3. @Kowalski0805, @d9nchik, напишите, пожалуйста, готовы ли принимать пулл-реквесты, и в целом есть ли планы по дальнейшему развитию проекта.

С другой стороны, в идеале было бы продолжить развивать pymophy2, но для этого как минимум нужны права на вливание пулл-реквестов, ну и настроенная публикация на pypi.org. В идеале, конечно, хотелось бы иметь админские права :) Я не знаю что за ситуация у @kmike, считаю что не имею права как-то давить и убеждать. @kmike, напишите, пожалуйста.

У меня есть опыт длительного (10+ лет) ведения относительно крупного проекта (https://github.com/dfint), опыт настроек CI/CD через Github Actions, опыт код-ревью, опыт написания юнит тестов (в общем-то впервые в юнит-тестированием познакомился в проекте pymorphy2, см. #69, дальше уже использовал в своих проектах).

Есть желание долговременно развивать/поддерживать проект pymorphy*, есть примерный план развития проекта (https://github.com/orgs/pymorphy2-fork/projects/3, https://github.com/orgs/pymorphy2-fork/projects/4). Планы пока в основном инфраструктурные, для более глубоких доработок нужно вникать в код. В процессе, я думаю, смогу разобраться.

С новым форком еще не понятно, какое выбрать имя - pymorphy4? pymorphy2.5? Какой-нибудь pymorpher?..

В общем, пока не понятно, куда двигаться дальше, пока сплошные сомнения.

@BLKSerene
Copy link

BLKSerene commented Jul 29, 2023

Hi, I'm wondering whether there are any updates on the maintenance discussion? To have so many different contributors working on several different forks with different project names is not a good choice I suppose. I suggest that we have one unified platform and more permissions be given to active contributors to this project so that those who have time could first start working.

@insolor
Copy link
Member

insolor commented Jul 29, 2023

@BLKSerene there are no other maintenance discussions. We are still stuck.

@snooppr
Copy link
Author

snooppr commented Jul 30, 2023

У проекта в исходном коде отсутствует какая-либо лицензия. Поэтому просто бессмысленно делать какие-либо, подающие надежды, форки на его основе. Для начала, если автор соизволит, то пусть оформит свои труды под свободной лицензией, выполнив требования этой самой лицензии, чтобы разработчики не являлись пиратами и чтобы этот вопрос их не тревожил в дальнейшем. IMHO, автор все понимает и не желает на данный момент, чтобы что-то вышло за рамки Pymorphy2.

@snooppr snooppr closed this as completed Jul 30, 2023
@bt2901
Copy link

bt2901 commented Aug 8, 2023

@snooppr
I don't quite agree. Yes, the project doesn't conform to MIT license despite claiming that the license is MIT both in README and whitepaper (https://arxiv.org/pdf/1503.07283v1.pdf). That's not ideal, but isn't a deal-breaker. @kmike stated his intentions loud and clear enough for us to reasonably believe the lack of LICENSE.rst to be just an oversight. It's obvious to me that MIT license statement is credible and was made in a good faith.

I'd suggest fixing the licensing issue in a fork (the fork by @insolor seems to be the most natural choice), coming up with a catchy name and proceeding with the development.

@snooppr
Copy link
Author

snooppr commented Aug 8, 2023

@bt2901 Недосмотр с лицензией легко исправить, шаги не требуют от разработчика ничего, кроме 5 минут действий. Неважно на сколько громко и везде разработчик заявил, что pymorphy2 под MIT. Его желание вторично, по отношению к юридическим обязательствам, которые ТРЕБУЕТ сама лицензия MIT.

Я желаю и заявляю, чтобы этот мой комментарий был под лицензией GPL3+. Но он не будет таковым НИКОГДА, пока я не выполню требования лицензии GPL3+.

Все требования у свободных лицензий простые и не требуют от разработчика ничего кроме 5 минут потраченного из жизни на их оформление.

Когда разработчик оформит лицензию на проект, только тогда и лишь только тогда можно будет с чистой совестью планировать, разветвлять проект.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests