All streams
Search
Write a publication
Pull to refresh
50
-0.1
Alex Gusev @flancer

Я кодирую, потому что я кодирую…

Send message
Даже коммерческие пользователи без дохода никаким образом не ограничиваются.

Посмотрел внимтаельно — про доход ничего не сказано "В случае коммерческого использования данного ПО" Значит, нужно заменить на "В случае получения дохода при коммерческом использовании данного ПО" — будет меньше ограничений.

Что насчёт производных проектов? Можно ли форкнуть, переименовать проект и использовать бесплатно?

Это зависит от базовой лицензии. Предложенные три пункта не накладывают на подобные вещи никаких ограничений.


Что насчёт приёма патчей? Автор каждого патча становится соавтором и должен принимать участие в выборе агентов? Или отказываться от прав на код и отдавать все права владельцу проекта? А если этот код частично используется в своих проектах и автор не хочет передавать на него права?

В BSD-лицензии используется термин "Владельцы авторских прав" (copyright holders). Полагаю, что они эти вопросы должны согласовывать между собой. Если кто-то не хочет передавать никому права на свой код — это его право. В Magento, например, если ты создаешь pull request, то ты передаешь им право собственности на свой код. Этот функционал уже встроен в github.


Если владелец авторских прав на проект хочет развивать свой проект при помощи контрибьюторов, а не только самостоятельно, то он может подсчитать вклад каждого контрибьютора в проект (самое тупое — в строках кода) и разделить доход между ними. Более того, все контрибьюторы и сами могут делить доход от проекта между собой. Было бы, что делить, а вариантов, как поделить, можно придумать очень много. Самые удачные может быть даже встроят в github ;)


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


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


Смысл идеи в том, что по-умолчанию любой может стать Агентом для всех проектов, если только владелец авторских прав на проект не указал обратного. Если твой соавтор заблокировал какого-то Агента, может у него есть на это какие-то основания? Вы же с ним в какой-то мере оба заинтересованны в получении дохода. Вот и разбирайтесь друг с другом. А может он просто от конкурента пришел? Пролез в код проекта и заблокировал самого выгодного Агента. Так тоже может быть. Я бы в таком случае на его месте вообще всех Агентов заблокировал. Но даже в этом случае положение не станет намного хуже, чем есть сейчас. Сейчас нет монетизации и в описанной мной ситуации не станет. Но зато у гипотетического конкурента, от которого пришел "соавтор", дела пойдут лучше, я полагаю.


С такой лицензией невозможно будет использовать чужой код от проектов под GPL

Вполне возможно.


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

Это зависит от лицензии, под которой этот "автор" выпускает свой форк. Как я уже отметил, предложенные три пунта эти вопросы не регулируют. Если вы посмотрите тексты модифицированной при помощи AJFA-инъекции BSD-лицензии выше, то там нигде не сказано, что кто-то не может забирать код от проекта под этой лицензией в свой проект.


Я бы хотел отметить, что AJFA-инъекция никаким образом не ограничивает разработчиков или некоммерческих пользователей. Даже коммерческие пользователи без дохода никаким образом не ограничиваются. Единственное ограничение: в случае получения дохода при использовании программы нужно потратить часть дохода на программу, с помощью которого этот доход получен. Даже не ограничиваются размеры затрат — да хоть один цент. Заплатил цент Агенту — и все, ты полностью выполнил условия AJFA-инъекции.

На английском 3-clause BSD license с добавлением AJFA-пунктов могла бы выглядеть примерно так:


Copyright (c) <year>, <copyright holder>
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of the <organization> nor the
      names of its contributors may be used to endorse or promote products
      derived from this software without specific prior written permission.
    * Any individual or organization that has legal rights on realization 
      of financial operations and acknowledges the terms of the license, is 
      entitled to act as an agent and represent commercial interests of the
      copyright holders, if only the copyright holders obviously did not limit 
      the list of the agents admissible to him.
    * A final beneficiary is obliged to purchase the commercial use rights 
      from any agent admissible to the copyright holders in case of direct 
      commercial use of this software.
    * A final beneficiary is obliged to purchase the commercial use rights 
      on the whole set of the software bundle from any agent admissible to 
      the copyright holders in case of commercial use of this software in 
      composition of other software bundle.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Это не юридически выверенный перевод дополнительных пунктов, но для начала и это сгодится.

OpenSource != Свободное ПО.

Абсолютно верно, коллега. С этим не поспоришь.


предлагает сделать всё свободное ПО несвободным.

Не все — только то, разработчики которого хотят монетизировать свои усилия по разработке своего ПО более эффективным способом, чем донат.


В этом нет ничего нового, несвободный OpenSource уже есть.

И с этим не поспоришь.


Лицензия != Модель продаж. Автор говорит про лицензию, но, при этом, на самом деле описывает модель продаж.

Хм. Сделал поиск в тексте по ключу "прода". Единственный найденный отрывок — "На каких условиях Агент продает его продукт? Да на каких продается — продукт стоит столько, за сколько его можно продать." Ну что ж, на слона можно смотреть с разных сторон, наверное можно увидеть в тексте и "описание модели продаж".


На самом деле автор пытался сформулировать пункты, при помощи которых большая часть лицензий на свободное ПО могла легко превращаться в лицензии на несвободное ПО. Например, лицензия BSD очень просто превращается в лицензию BSD+AJFA:


Copyright © <ГОД>, <ВЛАДЕЛЕЦ>


Разрешается повторное распространение и использование как в виде исходного кода, так и в двоичной форме, с изменениями или без, при соблюдении следующих условий:


  • При повторном распространении исходного кода должно оставаться указанное выше уведомление об авторском праве, этот список условий и последующий отказ от гарантий.
  • При повторном распространении двоичного кода должна сохраняться указанная выше информация об авторском праве, этот список условий и последующий отказ от гарантий в документации и/или в других материалах, поставляемых при распространении.
  • Ни название <Организации>, ни имена её сотрудников не могут быть использованы в качестве поддержки или продвижения продуктов, основанных на этом ПО без предварительного письменного разрешения.
  • Любая институция, имеющая законные права на проведение финансовых операций и признающая условия данной лицензии, может выступать Агентом, представляя коммерческие интересы Владельца данного ПО, если только Владелец в явном виде не ограничил список приемлемых для него Агентов.
  • В случае прямого коммерческого использования данного ПО конечный выгодополучатель обязуется приобрести право коммерческого использования у любого Агента, приемлемого для Владельца данного ПО.
  • В случае коммерческого использования данного ПО в составе другого ПО, конечный выгодополучатель обязуется приобрести право коммерческого использования на весь комплект программного обеспечения у любого Агента, приемлемого для Владельца данного ПО.

ЭТА ПРОГРАММА ПРЕДОСТАВЛЕНА ВЛАДЕЛЬЦАМИ АВТОРСКИХ ПРАВ И/ИЛИ ДРУГИМИ СТОРОНАМИ «КАК ОНА ЕСТЬ» БЕЗ КАКОГО-ЛИБО ВИДА ГАРАНТИЙ, ВЫРАЖЕННЫХ ЯВНО ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ, ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ И ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. НИ В КОЕМ СЛУЧАЕ НИ ОДИН ВЛАДЕЛЕЦ АВТОРСКИХ ПРАВ И НИ ОДНО ДРУГОЕ ЛИЦО, КОТОРОЕ МОЖЕТ ИЗМЕНЯТЬ И/ИЛИ ПОВТОРНО РАСПРОСТРАНЯТЬ ПРОГРАММУ, КАК БЫЛО СКАЗАНО ВЫШЕ, НЕ НЕСЁТ ОТВЕТСТВЕННОСТИ, ВКЛЮЧАЯ ЛЮБЫЕ ОБЩИЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ ИЛИ ПОСЛЕДОВАВШИЕ УБЫТКИ, ВСЛЕДСТВИЕ ИСПОЛЬЗОВАНИЯ ИЛИ НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ПРОГРАММЫ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ПОТЕРЕЙ ДАННЫХ, ИЛИ ДАННЫМИ, СТАВШИМИ НЕПРАВИЛЬНЫМИ, ИЛИ ПОТЕРЯМИ ПРИНЕСЕННЫМИ ИЗ-ЗА ВАС ИЛИ ТРЕТЬИХ ЛИЦ, ИЛИ ОТКАЗОМ ПРОГРАММЫ РАБОТАТЬ СОВМЕСТНО С ДРУГИМИ ПРОГРАММАМИ), ДАЖЕ ЕСЛИ ТАКОЙ ВЛАДЕЛЕЦ ИЛИ ДРУГОЕ ЛИЦО БЫЛИ ИЗВЕЩЕНЫ О ВОЗМОЖНОСТИ ТАКИХ УБЫТКОВ.


С MIT несколько сложнее (Данная лицензия разрешает лицам… безвозмездно использовать Программное Обеспечение без ограничений), но тоже возможно, IMHO (… при соблюдении следующих условий:). С GPL все о-очень сложно — ее разрабатывали профессионалы и явно не с целью монетизации проектов (скорее даже наоборот).


Хотелось бы еще раз отметить, что дополнительные требования по оплате предъявляются только в случае коммерческого использования ПО. Все остальные свободы, включая "свободу 0" (запуск программ в любых целях), данные пункты не ограничивают — они вовсе не запрещают запускать программы с целью заработать. По большому счету единственный запрет, который они вводят — запрет не делиться доходом с создателем инструмента, который этот доход обеспечил. Да, в этом отношении ПО становится несвободным. Но только в этом.

Реальные велосипеды реального мира, если что:
image

Есть велосипеды со специальными колесами для езды по ступенькам и на них действительно удобно ездить по ступенькам.


image


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

Полностью согласен с коллегой DexterHD. Если все данные в системе хранятся и обрабатываются в UTC, то остается всего одна проблема — определить желаемую временнУю зону при представлении этих данных конечному пользователю. Другие варианты не обладают универсальностью и хороши лишь в определенных условиях и до тех пор, пока эти условия не изменятся.

Коллега SbWereWolf, впечатлен поисковым SQL'ом в полной мере. Универсальность подразумевает сложность. Вернее даже многоступенчатую связность причин-следствий. "Почему здесь Ж? Вот смотрите: из А следует Б, из Б — В,… а из Ё — Ж!" Принцип "7 плюс-минус 2" описывает кол-во объектов, на которых одновременно может фокусироваться человек. Популярные решения ориентированы на тех, кто "5". А "Ж" — это уже 8. Еще подъемно, но уже не всем. Мне, например, тяжело понять, как работает "общепоисковой SQL", но я восхищен вашей способностью его составить.

не зря в офисе весит такой девиз.

ну тогда не все так безнадежно, как мне казалось :)

Коллега maghamed, может у Вас есть идея, как бы злосчастный PR-5145 протолкнуть в ближайший релиз?

Перевел свой проект в production mode — да, класс \Magento\Sales\Api\Data\OrderStatusHistory\Repository имплементирующий интерфейс \Magento\Sales\Api\OrderStatusHistoryRepositoryInterface появился в файле .../var/generation/Magento/Sales/Api/Data/OrderStatusHistory/Repository.php.


Будем надеяться, что положительные изменения в багфиксах станут скорее правилом, а не исключением. Могут ведь иногда и за 2 минуты смержиться:
image

Woo нацелен на очень маленького продавца

Alexa Top 1K:


  • Magento: 10
  • Woo: 4

Может все-таки на "не очень маленького продавца"? Очень маленькие в "топ 1000" не попадают.


при этом удерживая сегменты, которые заняла М1

Миграция клиентов в феврале 2017:


  • Magento: -754
  • Woo 2.6: 10,189
  • Woo: 4,696
  • Woo 2.5: -1,625
  • Woo 2.4: -527
  • Woo 2.3: -361
  • Woo 2.2: -209
  • Woo 2.1: -179
  • Woo 2.0: -147
  • Woo 1.6: -44

Данные говорят, как минимум, о том, что миграция в Woo несколько проще, чем в Magento, а не о том, что Magento удерживает сегменты. Magento 2 может и "начала ориентироваться на мерчанта с годовым оборотом 20+ млн. $", но ориентируются ли эти мерчанты на Magento 2?

Несколько не ожидал увидеть мой SQL именно в таком, не совсем классическом виде, но мое любопытство удовлетворено в полной мере. Спасибо.

У меня легкий когнитивный диссонанс:


выбор продиктован тем что не во всех СУБД возможно ...

IMHO, несколько в противоречии с


есть такая нотация и она в PostgreSql продвигается

Я не совсем понял, мы привязываемся к Postgres'у или пытаемся быть универсалами? Я, кстати, также ожидал увидеть "parent_id" в "element_tree".


Исходя из моего опыта работы с EAV структурой в Magento я несколько опасаюсь увидеть ваш SQL для постраничной выборки данных с фильтрацией и сортировкой (типовой use case). Но тем интереснее будет взглянуть на в следующей статье. Удачи.

имеет смысл эту команду обучать, а не топор точить

И. Не "а", а "и". Имеет смысл и инструментарий содержать в порядке, и навыки его использования нарабатывать. Вы, дружище, бросаетесь в крайности, пролетая мимо золотой середины.

аннотация типов

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


А я вообще весьма категоричный хрен.

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

Полностью согласен, программирование — это craft, а не art. Воспроизводимость, дополняемость, инженерность, если хотите, здесь важнее уникальности или самобытности. Понимание этого приходит со временем и не ко всем.

Чтобы оно, это ваше IDE, разобралось в типах, — языку типизация вообще не нужна

Объяснитесь, пожалуйста. Если досуг, разумеется.

Весьма категоричное заявление, коллега. Причем в нем не охвачены средние программисты, к коим я и себя отношу и коих по моему мнению — большинство. Мне, например, типизация (если она есть) весьма помогает ориентироваться не только в чужом коде, но и в собственном тоже (разумеется, при поддержке IDE). Не спасает, но и не мешает.

Information

Rating
Does not participate
Location
Рига, Латвия, Латвия
Date of birth
Registered
Activity

Specialization

Fullstack Developer
Lead
From 3,000 €
JavaScript
HTML
CSS
Node.js
Vue.js
Web development
Progressive Web Apps
PostgreSQL
MySQL
GitHub