Новая GUI библиотека
Себя пока в эту категорию включить не могу поскольку Линукс себе поставил относительно недавно, а до того всю жизнь под винду писал (исключая серверные вещи. Те под FreeBSD).
А поставив таки Линукс столкнулся с тем, что написать в нем что-либо пользовательское (с кнопками и окошечками) для неподготовленного человека занятие довольно трудоемкое. Если я правильно понял, IDE со встроенными GUI дизайнерами не существует, а что делать с файлом, сгенеренным внешним редактором (Glade например или QT) не особо понятно. Приходится кучу доков перерывать. Не видел еще среды, интуитивно понятной на столько, что можно просто сесть, нарисовать диалог, парой щелчков привязать к его элементам события (как бы они не назывались) и все это хозяйство скомпилить. Смотрел на KDevelop и Anjuta как на собравших больше всех положительных отзывов. Кроме уже описанных сложностей (как я понял следствие доведенной до абсолюта модульности) они еще и глючат (может и не они, а используемые ими модули типа того же QT дизайнера, но сути это не меняет).
В общем решил я написать свою библиотеку подобную QT или GTK с полноценной IDE (включающую GUI дизайнер). Приблизительно представляя сколько времени это потребует я понимаю, что один с этим делом не справлюсь (мне еще и за деньги работать надо :) ). Потому предложение: если есть тут энтузиасты, которым интересно принять участие в разработке такого масштабного проекта, милости просим. Пишите сюда или в личку.
Немного о том, что я хочу:
1. Кроссплатформенную (linux/windows) C++ библиотеку, содержащую удобные классы для работы с диалогами, кнопками, прочими GUI элементами, а так же строками, списками и иными мелкми приятностями.
2. IDE с GUI дизайнером, оболочками для отладчика, компилятора и т.д.
3. Идеалом RAD системы считаю Delphi (люди ничего в ней сами не делавшие могут морщиться сколько угодно), а потому основные принципы построения проектов и библиотек намерен взять оттуда.
Чего я не хочу:
Флуда на тему того, что это на фиг никому не надо, все написано и все можно сделать в vim. Кому не надо, просто не пишите и все. Эта мессага для тех, кому надо.
Что я могу (имея столько времени сколько я имею):
1. Координация проекта
2. Разработка базовых классов
3. Превращение одного из своих компов в SVN сервер для участников проекта.
Что у меня есть:
1. Желание
2. Достаточно подробное представление о структуре будущей библиотеки.
Идея IDE для QT пока просто не возникала. Следует подумать..
Разобраться с QT Designer в принципе тоже можно. Но хочется удобного средства разработки. И надежного. Чтобы все делалось в одном приложении и не валилось при этом.
Я не утверждаю, что QT Designer или Glade объективно плохие. Уверен, что многим они нравятся и вполне заслуженно. Но они не нравятся мне. Потому хочу сделать что-то, что поможет мне работать максимально быстро и без напряга. Кроме того это может пригодиться другим кодерам, только что перелезшим с винды.
Ага, а повыше написано -->
Т.е. Вы хотите набрать команду интузиазистов с огромным интузиазизмом, что бы они в большей степени за Вас все делали? или как?
Вот с этого и надо было начинать, если они не нравятся Вам, то думаю не стоит собирать команду, что бы писать что-то для Вас :) А если все же идея написания IDE не только для Вас, но и для Всех, то почему бы не обдумать свои окончательные идеи, изучить существующие аналоги, побольше разобраться в UNIX/Linux и создать свой проект допустим на http://sourceforge.net/ и кинуть ссылку уже сюда. Люди и потянутся ;) А так -это бессмысленное сотресание воздуха.
Т.е. Вы хотите набрать команду интузиазистов с огромным интузиазизмом, что бы они в большей степени за Вас все делали? или как?
Или как конечно. Я слишком давно увлечен этой идеей чтобы просто отдать ее на откуп кому бы то ни было. Если что-то и будет делаться, то, уж поверьте, я намерен принимать в этом активнейшее участие.
Вот с этого и надо было начинать, если они не нравятся Вам
Я вроде с этого и начал. Разве нет?
, то думаю не стоит собирать команду, что бы писать что-то для Вас :)
Странная логика. Я задумал open source проект, который на мой взгляд имеет будущее (хотя вряд ли коммерческое), может принести кому-то пользу. Пусть даже этим кем-то буду в первую очередь любимый мной я. Сам я с этим не справляюсь по причине его масштабности. Неужели есть какое-то более логичное действие, чем собрать желающих поучаствовать в этой затее? Что я проморгал?
А если все же идея написания IDE не только для Вас, но и для Всех, то почему бы не обдумать свои окончательные идеи, изучить существующие аналоги, побольше разобраться в UNIX/Linux и создать свой проект допустим на http://sourceforge.net/ и кинуть ссылку уже сюда. Люди и потянутся ;) А так -это бессмысленное сотресание воздуха.
Как я и говорил чуть выше, это open souce проект (если команда не решит иначе). Описание я начал приводить в удобоваримый вид буквально вчера. Причины просты.
1. Писал я сюда без особой надежды на то, что кто-то откликнется (к счастью все-таки откликнулись, за что этим людям огромное спасибо), потому еще ничего не оформлял.
2. Первоначально я не планировал выкладывать инфу в общий доступ, а распространять ее только среди членов команды. Правда благодаря совету одного из форумчан (ему тоже спасибо) начал готовить что-то типа странички с описанием каждого класса. Как только их накопиться хотя бы десяток, здесь обязательно появится ссылка. Правда, это будет не sourceforge. По крайней мере пока.
Ранее верно заметили, что стоит обратить внимание на существующие средства и поскольку большая часть из них open source, может есть смысл приложить усилия на их развитие возможносно со своими идеями.
смотрели ли Вы VDK Builder? проект какое-то времы был в спящем состоянии, сейчас вроде как его возобновили, но почему-то особого движения не заметно.
в общем было бы любопытно посмотреть на Ваши задумки, но было бы плохо, если бы они сбрасывали со счетов все те объёмы кода в библиотеках GTK+ и Qt
Вообще, сам давно думал о подобном. Смотрел на кут и гтк и есть причины, которые неустраивают не только меня, но и других.
Qt: основная причина, это её лицензия. Их 2: GPL и коммерческая. Сам поддерживую GPL, но когда подваливает заказ, например для корпоротивного ПО, заказчики которого точно не захотят открывать код, то сталкиваешься с выбором, покупать лицензию за $2к(что не разумно, не факт что будут ещё заказы и лицензия окупится) или смотреть в сторону библиотек с лицензией не запрещающей закрытия кода.
Gtk: скачал, поставил, посмотрел, удалил. Одним словом: помойка. Отсутствие какой либо концепции и стандартов с целью налепить побольше, это не гуд.
Вообще моё представление о правильной лицензии выглядит так:
- Если создаёшь бесплатный или открытый продукт, пользуйся.
- Если создаёшь платный продукт, помогай нам в разработке, в рамках наших стандартов и концепции. Если не можешь помочь в разработке, помоги материально(например отчислениями от прибыли продукта)
- Сообщай обо всех багах, и если знаешь как исправить, исправляй в рамках стандартов и концепции
Так же должны быть прописаны эти стандрты(в плоть до размера отступов и названия скрытых переменных)
И только так можно попытаться сделать красивый читабельный код разных людей в одном проекте. Что в принципе и должно являться частью концепции. А типа, пришёл написал, пришёл 2 написал, ещё 5, ещё 200... а 201 начинает читать и пытаться понять, на что у него уйдёт много времени, потом он плюнет, и купит лицензию платного но красивого продукта.
Поэтому писать нужно с нуля, используя только стандартные библиотеки и API. Для винды 0 = std+winapi, Для nix 0 = std + x.
Вот в принципе моё мнение.
вообще дурацкая формула. можно подумать winapi - не стандартная библиотека. но если вам угодно -
0 = std + http://ru.wikipedia.org/wiki/Xlib
удачи.
прежде чем творить новое - нужно досконально знать старое.
А что вы имеете ввиду под старым?
а вы не в курсе, что стандарт может быть платформозависимым? ;-)
пример - функция fork() определена стандартом POSIX, но не работает на Windows.
я имею ввиду, что прежде чем заниматься реализацией новой библиотеки для разработки GUI интерфейсов, надо хорошо ознакомится с имеющимися - QT, Athena, Motif, GTK и т. п.
а не так, как автор топика, который "Линукс себе поставил относительно недавно", но уже выяснил, что все там плохо и нужно делать свое.
Не спорю, автор не писал под XLib и другие никслибы, но он писал под win, а значит знаком с winapi. Поэтому он предлогает другим, а сам будет писать общие классы и классы под winapi.
Вообще стоит попробывать, идея действительно хорошая. Хуже никому не будет, зато опыт в портировании под разные оси будет неплохой, что в перспективе понадобится. Плюс лицензию, удобную для нас, а не буржуйскую.
Мне вот интересно ваше мнение по поводу: Qt vs Gtk
Напомню, что между компанией-разработчиком QT и KDE (Trolltech) и FSF не раз возникали конфликты, т.к. Trolltech пользовалась чужими OpenSource наработками, не предоставляя свой продукт под лицензией GPL. Что является прямым нарушением этой лицензии.
А автору темы я бы посоветовал лучше написать ООП-библиотеку и IDE для GTK, и тогда все преимущества QT перед ним сошли бы на нет.
и что?
т.к. бесплатная версия есть только для Linux'а.
да ну? почитайте лицензию на сайте trolltech и не говорите глупостей.
Поэтому наш выбор - это GTK. Открытый и бесплатный, как и сама Линукс.
это ваш выбор. "бесплатность и открытость" != качество.
Напомню, что между компанией-разработчиком QT и KDE (Trolltech) и FSF не раз возникали конфликты, т.к. Trolltech пользовалась чужими OpenSource наработками, не предоставляя свой продукт под лицензией GPL. Что является прямым нарушением этой лицензии.
как страшно жить...
уважаемый Ден Зурин! с криками "FSF roxxx", "Open Source - форева", "Проприетарщина - мастдай" и прочими красноглазыми бреднями - на ЛОР.
тут принимаются ОБЪЕКТИВНЫЕ доводы, касающиеся исключительно программирования. за holywar - опять же - ступайте на ЛОР.
ни одного вменяемого довода в пользу GTK вы не привели. так что делаю вам предупреждение. в следующий раз - закрою вам доступ к форуму. я ясно выразился?
У Trolltech множество различных лицензий. В последнее время кажется появилось ещё что-то. Информацию почерпайте на сайте компании все же ))
Для того и существует OpenSource, если уж на то пошло))) Нарушения лицензионного соглашения со стороны Trolltech врятли наблюдалось, так как по лицензии необходимо полностью выкладывать исходники, что помоему Trolltech и сделало, разве не так??? + к Вашему сведению, анонсируемаю библиотека QT имеет множество демо примеров, а так же обширную и все объемлющую документацию, чего не скажешь про доки GTK+(к моему великому сожалению).
А лично я бы этому автору посоветовал и дальше продолжать писать проприетарное ПО и так же по возможности не лазить в то, с чем не сталкивался никогда (если нет желания изучать уже существующие аналоги, причем достаточно неплохие). Критиковать любую из сторон можно до безобразия и до бесконечности, а вот реально решить проблему удается не каждому. Очень закоренелым маздаеведам, которые в большинстве своем "переходять" на .nix не для того чтобы писать проги под UNIX, а в большем случае для того что бы позаимствовать идеи для реализации своих проприетарных проектов под Win32 ветки ОС или же просто для того , чтобы покаить UNIX системы, я бы от себя лично пожелал особо не волноваться по поводу QT и GTK+ и тем более не стараться писать что-то хотябы отдаленно напоминающее, а продолжать писать по Win и исправлять критические ошибки в пакетах и серверном ПО и дальше))))))) Мне вот лично не понятно, если вам на Linux/UNIX-подобных системах все так не нравится, а Windows по вашему это идеал системы для "безруких", тогда, извиняюсь за выражение, какого хрена вы туда лезете????
squirL, а можно я попробую??? :)
Лично сам использовал и то и то. Остановился на GTK+. Понравилась больше, в силу того, что:
-в ней лучше реализован подход модульности. Это собственно и была изначальная идея UNIX-вея, когда программист может оперировать и манипулировать объектами-модулями как ему заблагорассудится. (А что делать если мне не нравятся некоторые реализации классов в QT??))))
-в GTK+ присутствуют такие возможности, кот. к сожалению, нет в QT; например, в QT в поле кнопки можно вставить только текст (не в курсе как обстоит сейчас дело в QT4.), а в GTK+ в кнопку можно вставить хоть виджет!
-хоть GTK+ и написана на Си, но считается ООП библиотекой и в некоторых ситуациях за счет модульности выигрывает (например в wxWidgets есть привязки к GTK+. Так же их проще реализовать самостоятельно, чем в QT).
-в GTK+ лучше всех реализованы привязки к высокоуревневому средству межпроцессного взаимодействия DBus, кот. для UNIX систем для многих приложений стандарт де-факто. Например HAL, Skype, Gnome и многие другие используют DBus (к слову, в QT версии 4 полностью осуществляется переход на DBus).
-в Solaris 10 (кот. я лично использую, взамен FreeBSD и не жалею о выборе) написан JDK - типа прототип от среды GNOME но полностью написан на Java. Почему ставка Sun была сделана на GTK+ , так это потому, что имеют все же силу те преимущества, кот. я перечислил. Полностью доку о выборе именно GTK+ можно прочесть на сайте Sun.
--что на мой взляд записываю в минус, так это прорисовка окошек намного хуже чем в QT (возмите окошко и потоскайте его мышкой как следует и поймете о чем я говорю))))
squirL, зачем ты так бойко реагируешь на подобных людей? ну не нравиться им UNIX хоть убей))) И подобных чайников на этом форуме мноооооогооооо, сам знаешь.
squirL, зачем ты так бойко реагируешь на подобных людей? ну не нравиться им UNIX хоть убей))) И подобных чайников на этом форуме мноооооогооооо, сам знаешь.
настроение хреновое было. а забанить за мной не заржавеет :)
Цитата: "В общем решил я написать свою библиотеку подобную QT или GTK ..." ;
Цитата: "я хочу: 1. Кроссплатформенную (linux/windows) C++ библиотеку, содержащую удобные классы для работы с диалогами, кнопками, прочими GUI элементами, а так же строками, списками и иными мелкми приятностями."
Я тут открыл Synaptic в музыкальном Live дистрибутиве, основанном на Debian GNU/Linux, и обнаружил, что в нём использованы не только QT и GTK, но и ещё libcdk5 (247 kB), libdirectfb-0.9-25 (1843 kB), libfltk1.1 (897 kB), libfox1.4 (2855 kB), libfox-1.6-0 (3539 kB), OpenGL : (libgl1-mesa-dri (33 MB), libgl1-mesa-glx (508 kB), libglu1-mesa (602 kB)), libmagick9 (4194 kB), libopenexr2c2a (902 kB), wxWidgets : (libwxbase2.6-0 (1425 kB), libwxgtk2.4-1 (4428 kB), libwxgtk2.6-0 (7741 kB)), tk8.4 (2630 kB). Я бы отметил FLTK и FOX, как лёгкие альтернативы GTK и QT.
Предположим теперь, что Ваше начинание будет успешным. Это будет означать, что к вышеприведенному списку добывится ещё одна графическая библиотека... При нынешнем состоянии дел это будет скорее недостатком, который заставит позавидовать монопольному единству включённой в ядро графической библиотеки Windows. Не хочу отговаривать, но по крайней мере ясно, что новая библиотека должна иметь значительно больше преимуществ перед всеми вышеназванными, чем одно только удобство!
2.
Цитата: "я хочу: 2. IDE с GUI дизайнером, оболочками для отладчика, компилятора и т.д."
Цитата: "IDE со встроенными GUI дизайнерами не существует, а что делать с файлом, сгенеренным внешним редактором (Glade например или QT) не особо понятно"
Цитата: "как я понял следствие доведенной до абсолюта модульности"
А вот эта идея очень и очень кстати! Только хотелось бы, чтобы она была реализована не в контексте создания ещё одной - новой графической библиотеки (пусть даже супер удобной и интуитивно понятной), а в контексте сближения уже существующих библиотек ...
Прежде, однако, надо уяснить причину отсутствия в среде linux (ну ладно относительной непопулярности и неразвитости) IDE . Я думаю, что модульность тут как раз и ни при чём. Вся причина в различных традициях и подходах к созданию и распространению программного обеспечения:
- в Windows IDE c GUI дизайнером является основным средством создания программного обеспечения, а также подготовки его к распространению - т.е. средством "пакетирования", ибо фирма Microsoft делает всё возможное, чтобы все разработчики пользовались только MVS (кстати - небезуспешно, ибо существуют GNU проекты, которые для среды Windows можно скомпилировать только при помоши MVS );
- в Linux (и во многих других свободных "Unix вариантах") IDE c GUI дизайнером являются лишь дополнительным средством, ибо любой проект должен компилироваться и без них при помощи простых команд, вроде:
./configure
make
make install
При этом аналог MVS (или того же Delphi, кстати есть проект создания его свободного аналога - Lazarus) для GNU/Linux создать гораздо сложнее ввиду того, что:
- как компилятор, так и прочие файлы разработчика (статические библиотеки и включаемые заголовки) в GNU/linux просто должны быть независимы от IDE и GUI дизайнера,
- при этом, напротив, IDE и GUI дизайнер должны хорошо интегрироваться, а также обязаны оперативно следить за всеми новшествами разработок как графических библиотек (а их даже я на вскидку могу назвать более пяти!), так и самих компиляторов, ядра, базовой библиотеки, ...
- существует множество дистрибутивов с различными форматами программных пакетов и способами их создания, а также способами установки и обновления программного обеспечения, находящиеся при этом в постоянной независимой разработке; аналог MVS должен поддерживать их всех!
- linux вообще-то поддерживает значительно больше компьютерных архитектур, чем Windows; аналог MVS не должен вносить ограничений в этом аспекте (т.е. конечный релиз не должен быть платформенно зависимым)...
3.
Цитата: "Идеалом RAD системы считаю Delphi "
По этому поводу сразу возникает вопрос: "Что Вы собираетесь делать иначе, чем в проекте Lazarus?"
Ответ на этот вопрос очень важен для потенциального участника проекта, ибо Вы заявляете об ориентации на среду Delphi, а в FSF уже есть проект подобного типа - Lazarus/Free Pascal.
4.
Выводы:
4.1. Предлагаю заменить "Кроссплатформенную (linux/windows) C++ библиотеку, содержащую удобные классы для работы с диалогами, кнопками, прочими GUI элементами, а так же строками, списками и иными мелкми приятностями" на
"Кроссплатформенную (GTK, QT, FOX, FLTK , WxWidgets, Tk/Tcl, WinAPI, ...) C++ библиотеку, позволяющую по удобочитаемому и интуитивно понятному xml файлу на лету генерировать графический интерфейс, с возможностями динамической генерации вышеназванного xml-представления, а также самого графического интерфейса. При этом подразумевается максимальное абстрагирование от конкретной графической библиотеки, с возможностью учёта её особенностей."
4.2. Предлагаю взять за основу Glade, но поставить целью принципиально расширить возможности этого программного продукта (Можно даже предположить, что разработчики Glade окажут в этом существенную поддержку).
4.3. Хорошо бы было изначально обозначить дополнительной целью проекта создания программного продукта в любом из самых популярных программных пакетов (deb , rpm ,Gentoo ebuild ,Slackware tgz, autopackager , ... )
P.S. Это взгляд со стороны пользователя. Надеюсь, что моя некомпетентность в области программирования не помешает Вам понять саму идею моего предложения.
Совсем нет. Обычно нужен только msbuild и компиляторы (т.е. по факту только SDK).
В целом по предложению согласен. Могу предложить посмотреть в сторону MonoDevelop - выполнена в стиле MVS: удобный редактор GUI, концепция модульности - возможа интеграция в среду других языков.