Использование библиотеки с открытым исходным кодом для критической функции приложения

#angular #architecture #software-design #angular-gridster2

#angular #архитектура #программное обеспечение-дизайн #angular-gridster2

Вопрос:

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

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

https://github.com/tiberiuzuld/angular-gridster2

Об этой библиотеке:

  • всего 20 вопросов об этом в stack overflow.
  • 494 звезды github
  • Один активный участник
  • 7 тыс. загрузок npmjs в неделю, что не так много
  • Я открыл проблему на странице Github этой библиотеки 16 дней назад, и к ней не было никаких действий или комментариев.
  • Мы используем Angular Framework, и каждый раз, когда обновляется версия Angular, эту версию библиотеки необходимо обновлять, что станет проблемой, когда эта библиотека больше не будет поддерживаться

Вопрос в том, что правильно делать:

  • Реализуем наше собственное решение для этого с нуля
  • Продолжайте использовать такого рода библиотеки для критически важной функции приложения и будьте готовы к форку кода при необходимости

Комментарии:

1. Нет правильного решения, это зависит только от вашего выбора. Лично я, когда оказываюсь в такой ситуации, стараюсь реализовать что-то свое, потому что это дает мне больше контроля над этим. Обычно я устанавливаю только uber-библиотеки, такие как flex layout или material, и в противном случае реализую свои собственные (я имею в виду библиотеки Angular)

Ответ №1:

Ну, это называется открытым исходным кодом не просто так, как насчет того, чтобы помочь улучшить библиотеку? Если создатели не согласятся с вашими изменениями, вы все равно можете разветвить репозиторий и настроить его по своему усмотрению.

Создать что-то подобное с нуля, безусловно, выполнимо, для меня это больше похоже на изобретение колеса, но если у вас есть ресурсы, сделайте это.

Комментарии:

1. PS: перечитывая ваш вопрос, у меня такое чувство, что вы хотите создать функцию самостоятельно, и вы пытаетесь убедить кого-то сделать это, спрашивая здесь, так ли это? (Просто любопытно, не осуждаю)

2. Я не обязательно хочу убеждать кого-то, что необходимо создавать это с нуля. Это может показаться предвзятым, потому что я упомянул все недостатки библиотеки, но это просто для того, чтобы можно было полностью понять вопрос. Также потому, что все уже знают недостатки создания этой вещи с нуля. Эта библиотека продемонстрировала неожиданное нежелательное поведение в нескольких сценариях, вот почему я искренне хочу знать, каково наилучшее решение этой проблемы.

3. Я согласен с @gfels, что здесь нет правильного решения. Вы должны принять решение, основанное на имеющихся у вас ресурсах и опыте. Честно говоря, я бы не стал ее переписывать, есть и другие (возможно, лучшие) библиотеки, которые предоставляют ту же функциональность. Возможно, вы захотите попробовать это раньше.