On Sun, 09 Sep 2007 16:56:25 -0000 vladimir.chujkov wrote:
бНОПНЯ НРМНЯХРЯЪ МЕ Й ЪГШЙС Ada, Ю Й ОНМХЛЮМХЧ КХЖЕМГХХ GNU GPL, МН ГЮДЮЧ ЕЦН Б ЩРС ЦПСООС, Р.Й. ОПНДСЙР ЯНАХПЮЕЛЯЪ ОХЯЮРЭ МЮ Ada.
[...]
В заголовках указана кодировка koi8-r, а на самом деле... В общем, бнопня...
WBR
--
Boris Samorodov (bsam)
Research Engineer, http://www.ipt.ru Telephone & Internet SP
FreeBSD committer, http://www.FreeBSD.org The Power To Serve
Воистину бНОПНЯ получилась! Буду внимательнее... Далее текст мессаги в правильной (как я надеюсь) кодировке.
Вопрос относится не к языку Ada, а к пониманию лицензии GNU GPL, но задаю его в эту группу, т.к. продукт собираемся писать на Ada.
Скоро стартует коммерческий проект компьютерной игры "про танки,
авиацию и артиллерию".
Целевые ОС, под которыми будет идти игрушка - Windows - 90%, MacOS - 9.9%, Linux - 0.1% (в процентах указаны приоритеты оптимизации и
тестирования). В этом проекте мы хотим полностью мигрировать с Visual C++ на Ada, благо язык нам знаком (все когда-то учились на ФКН в
университете им. Каразина). Первые "прицельные выстрелы" -
собственный бинд для OpenGL 2.1, интеграция с MESA 3D, создание
тестов для прогонки шейдеров под Win/Lin и т.д. потихоньку делаются, результаты говорят о том, что игровой проект среднего размера на Ada можно сделать так же успешно, как и на С++.
Купить Gnat Pro молодой команде не по карману (за 14 000 евро можно полностью студию организовать, а не только годовую лицензию купить), поэтому используем Gnat GPL.
Возникают вопросы:
1. Можно ли приложение, скомпилированное с помощью Gnat GPL,
выпускать по проприетарной лицензии?
Все используемые библиотеки - из обычной поставки Gnat GPL.
2. Игровой продукт - это ПО и некая база данных для него (диалоги, сценарии, модели, анимации, текстуры). Можно ли выпустить ПО по GPL, а базу данных к нему - по проприетарной?
3. Если приложение построено по архитектуре клиент/сервер, причем сервер не будет распространяться, может ли он быть скомпилирован с использованием GNU, но исходники открываться не будут, т.к. не было факта распространения?
Вопросы очень болезненные, так как издатель не будет смотреть в
сторону игрушки, выпускаемой по GPL лицензии, а собрав проект
полностью на opensource и GNU компонентах и уменьшив тем самым
стоимость разработки, мы не сможем продавать его по лицензии EULA.
Варианты "забить на лицензию и делать как все" даже не
рассматриваются :).
vladimir.chujkov wrote:
Возникают вопросы:
В данной тусовке есть люди, которые заведомо лучше меня разбираются
в тонкостях, но я все же попробую ответить в меру своего понимания.
1. Можно ли приложение, скомпилированное с помощью Gnat GPL,
выпускать по проприетарной лицензии?
Все используемые библиотеки - из обычной поставки Gnat GPL.
99.9% за то, что НЕЛЬЗЯ.
2. Игровой продукт - это ПО и некая база данных для него (диалоги,
сценарии, модели, анимации, текстуры). Можно ли выпустить ПО по GPL,
а базу данных к нему - по проприетарной?
Почему бы и нет?
3. Если приложение построено по архитектуре клиент/сервер, причем
сервер не будет распространяться, может ли он быть скомпилирован с
использованием GNU, но исходники открываться не будут, т.к. не было
факта распространения?
"Нет трупа - нет убийства". Здесь я вообще не вижу проблем. Вы совершенно
НЕ ОБЯЗАНЫ так или иначе РАСПРОСТРАНЯТЬ GPL-программу.
Варианты "забить на лицензию и делать как все" даже не
рассматриваются :).
То есть, вы ребята серьезные, так? :)
1. Можно ли приложение, скомпилированное с помощью Gnat GPL,
выпускать по проприетарной лицензии?
Все используемые библиотеки - из обычной поставки Gnat GPL.
Нет, нельзя. (Бестолковый случай когда можно юлить: это когда программа не линкуется со стандартными библиотеками GNAT: libgnat и libgnarl.)
Второй вариант - использование GNAT из GNU GCC. Может быть вполне приемлимым вариантом если не стремиться яростно использовать "продвинутые" возможности Ada95 и избежать использования Ada2005. Кстати, даже при использовании GNAT GPL использовать "продвинутые" возможности Ada2005 не рекомендую ("простейшие" можно использовать спокойно).
(GNAT из GCC 3.4.x мы использовали много лет к ряду, пока не появилась возможность купить официальную версию)
2. Игровой продукт - это ПО и некая база данных для него (диалоги,
сценарии, модели, анимации, текстуры). Можно ли выпустить ПО по GPL,
а базу данных к нему - по проприетарной?
Запросто.
3. Если приложение построено по архитектуре клиент/сервер, причем
сервер не будет распространяться, может ли он быть скомпилирован с
использованием GNU, но исходники открываться не будут, т.к. не было
факта распространения?
Даже исходники клиентской части Вы не обязаны распространять. Единственное, что Вы действительно обязаны - предоставить их по первому требованию лица, официально получившего от Вас программу.
Вопросы очень болезненные, так как издатель не будет смотреть в
сторону игрушки, выпускаемой по GPL лицензии, а собрав проект
полностью на opensource и GNU компонентах и уменьшив тем самым
стоимость разработки, мы не сможем продавать его по лицензии EULA.
В нынешних играх уже нередко используются LGPL части, и вполне успешно.
On Sun, Sep 09, 2007 at 05:38:36PM -0000, vladimir.chujkov wrote:
Присоединяюсь к ответам, присланным выше. А именно:
Возникают вопросы:
1. Нет
2. Да
3. Да
По поводу компилятора, можно попробовать gnat-3.15p - последнюю
версию от AdaCore с runtime под GMGPL. Был довольно стабильный
релиз. Хотя есть несколько минусов:
- для Linux нужно немного
пропатчить runtime (т.к. поменялась модель потоков в glibc)
это обычно делается если ставить gnat из какго-то дистрибутива
Linux (Debian, Gentoo, etc).
- для MacOs наверное прийдеться собирать его самому :-/
- там Ада 2005 и не пахнет :)
Из плюсов, только субьективное мнение :)
--
Maxim Reznik
Здравствуйте,
я с очередной проблемой линковки разноязыких модулей.
Есть программа с порядком вызовы функций.
Delphi.exe => Ada.dll => Delphi.dll, т.е. нужно написать на аде библиотеку, которая будет вызывать функции из dll на Delphi.
При помощи мастера проектов GPS был создан проект dll
--------mid.gpr------------------------------
project Mid is
for Source_Dirs use (".\/**");
for Library_Name use "mid";
for Library_Dir use ".";
for Library_Ali_Dir use "ali";
for Library_Kind use "dynamic";
for Library_Version use "1.0";
for Library_Src_Dir use ".";
for Object_Dir use "obj"
for Library_Auto_Init use "False";
package Linker is
for Linker_Options use ("-lPdll");
end Linker;
end Mid;
------------------------------------------------
Спецификация пакета
---------mid.ads------------------------------
package mid is
procedure midtest(i: integer);
pragma Export(C,midtest);
end mid;
-------------------------------------------------
Тело пакета
---------mid.adb----------------------------------
package body mid is
procedure test(i: integer);
pragma Import(C,test);--импортируется из "Pdll.dll"
procedure midtest(i: integer) is
begin
test(i);
end midtest;
begin
null;
end mid;
-------------------------------------------------
Попытка скомпилировать этот проект неизбежно приводит к сообщению: " undefined reference to `test'"
------------------------------------------------------------
gnatmake -PC:\Ada_Projects\dlltest\mid.gpr -d
building dynamic library for project mid
C:\GNAT\2007\bin\gcc.exe -shared -o c:\ada_projects\dlltest\mid.dll -LC:/GNAT/2007/lib/gcc/pentium-mingw32msv/4.1.3/adalib/
c:\ada_projects\dlltest\obj\mid.o ...
-LC:/GNAT/2007/lib/gcc/pentium-mingw32msv/4.1.3/adalib/ -lgnat-2007 c:\ada_projects\dlltest\obj\mid.o:mid.adb:(.text+0x17): undefined reference to `test'
collect2: ld returned 1 exit status
gnatmake: gcc execution error
process exited with status 4
---------------------------------------------------------------------------
При переключении Library_Kind в "static" проект успешно компилируется в lib*.a
Если не вызывать внешние функции ("test"), то проект успешно компилируется в *.dll
При компиляции dll gnat не требует def-файл, но экспортирует из библиотеки всё подряд с неизвестным соглашением о вызовах.
Также при компиляции dll gnat не позволяет вызвать Adainit (аналогично функции test).
При использовании утилиты gnatdll для линковки библиотека собирается нормально.
Вариант с gnatdll меня устраивает всем, но возникает сомнение, удастся ли использовать встроенный отладчик GPS.
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.5.487 / Virus Database: 269.13.21/1010 - Release Date: 15.09.2007 19:54
Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти