Recent

Author Topic: Would like some feedback on my idea for a "fork" or " distro" of Lazarus  (Read 1442 times)

Tony Stone

  • New Member
  • *
  • Posts: 14
Not so sure this is the right spot in the forum but anyway, here I go.

So to get to the point.  I am not a real programmer... I just like putzing around with Lazarus and a couple other Languages.  Started as a kid and never got too serious with it.  Today I am an HVAC Service Tech.  And I keep getting this idea for a industry specific version of Lazarus.

My idea is this, Make a bunch of building automation components that can be drawn on forms and have the ability to be rendered in a web browser...

Have a small form factor PC where the application for BMS or HVAC automation runs.  Like a simple Intel PC... a commercial Carrier product does this, known as Carrier Open, the software they run on it is called iVu.  So my idea is to be able to replace these commercial products with something entirely open sourced.

I would need my set up components to interface with commercial protocols such as BACNet, Lon, Modbuss etc.  Maybe there is currently some components for this?

If I were to get serious would having a "fork" or "distro" of Lazarus, if possible, be a good way to go about this?  The reason I would not want to simply have a set of components is I think for HVAC technicians to be interested in upgrading older buildings they would want a software package with ready to go components and not be overwhelmed with hundreds of components they do not need.  Then the default work space could start with a sample project?

Just curious on the thoughts from some of you who are a little more professionally involved in the Lazarus project.  Would a custom distro be a huge unertaking and be a maintenance nightmare to try and continue using Lazarus as a base?  Am I wasting my time completely as someone knows of an existing product already like Lazarus geared to building automation?

Would love any feedback on this idea I keep having pop into my head.

And if i did have a industry tailored distro would I be able to monentize my components and include them in the distro?  See, these are the issues I hink I would need to work out before wasting any time.

Thank you to anyone who has valueable feedback... and Thank you Lazarus developers!  I LOVE THIS PROJECT!

ojz0r

  • New Member
  • *
  • Posts: 22
Sounds like PascalSCADA.
Maybe have a look at that project.
Just trying to learn.

Seenkao

  • Full Member
  • ***
  • Posts: 152
PascalSCADA
pascalscada.com

В предыдущем у меня почему-то не открывалась ссылка...
Если есть желание потренироваться, но использовать более лёгкие компоненты, то можно использовать Light LCL

Google translate: In the previous one, for some reason the link did not open for me ...
If you want to practice, but use lighter components, then you can use Light LCL

af0815

  • Hero Member
  • *****
  • Posts: 674
Take a professional RasPi with display, run raspbian and on Lazarusside use PascalSCADA :-)

But this not a system only for confuguring like Simatik, Beckhoff, .... But with the new Systems you have to bulid more and more with structured text. If you master this, you can also use pascal direct :-)
regards
Andreas

MarkMLl

  • Hero Member
  • *****
  • Posts: 2554
OP: I suspect you've got a terminology problem :-)

You definitely don't want to fork the Lazarus project, since that would give you an enormous amount of work tracking Lazarus changes and deciding which you wanted to incorporate... and hopefully feeding your experience back to the community as well.

I think that what you're looking for is a custom build/installation mechanism. If you really can't get what you need by manually adding components to the standard IDE and LCL, then I think that what you should be doing is looking at the top-level makefile, and adding a target like "mycustombigide" which you could use to generate the exact mix of packages and components you want.

By and large I think it's safe to say that the top-level makefile is fairly stable, so it shouldn't be too difficult to check that your customisation is still in there after an  svn up  and to patch it back in if not.

Apart from that I echo everybody else's suggestions :-)

MarkMLl
Turbo Pascal v1 on CCP/M-86, multitasking with LAN and graphics in 128Kb.
Pet hate: people who boast about the size and sophistication of their computer.
GitHub repositories: https://github.com/MarkMLl?tab=repositories

Tony Stone

  • New Member
  • *
  • Posts: 14
OP: I suspect you've got a terminology problem :-)

You definitely don't want to fork the Lazarus project, since that would give you an enormous amount of work tracking Lazarus changes and deciding which you wanted to incorporate... and hopefully feeding your experience back to the community as well.

I think that what you're looking for is a custom build/installation mechanism. If you really can't get what you need by manually adding components to the standard IDE and LCL, then I think that what you should be doing is looking at the top-level makefile, and adding a target like "mycustombigide" which you could use to generate the exact mix of packages and components you want.

By and large I think it's safe to say that the top-level makefile is fairly stable, so it shouldn't be too difficult to check that your customisation is still in there after an  svn up  and to patch it back in if not.

Apart from that I echo everybody else's suggestions :-)

MarkMLl

This is the feedback I was looking for.  Yeah, my thought is putting together a development platform that is simplified and targeted to a certain set of users.  Of course I wouldn't want to reinvent the wheel.  I think Lazarus is awesome in so many ways.  I recently started playing around with programming and computers in general after many years away.  So yes, I think a custom build is what I would be looking to put together.  I guess my next step would be to get familiar with the SVN system and how that works.  This will all in the end probably be more a side project I mess with more for gaining my own knowledge...  and maybe there is better ways to go about my idea.  I have also installed the SCADA package others have recomended... so this gives me some stuff to mess with for a few weeks.

I just think it would be really cool to put together a handful of components that make it very easy for HVAC technicians to go into a building and make a system actually work.  I run into it ALL THE TIME.  Go to a building and the controls contractor doesn't have the proper knowledge for the mechanical side of the equipment.  Most of the mechanical guys don't have the knowledge in the many different control systems out there.  I think it would be awesome to put together a set of tools that gives the tech the ability to some what easily interface with existing mechanical equipment and devices and it could be a great way in troubleshooting a system as well.

My only other issue would be to fully understand the licensing of Lazarus.  Would I be within the rights of the license to distribute a custom build for commercial use?  I wouldn't be trying to sell it and profit from it.  That is not my goal...

marcov

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 9283
  • FPC developer.
If I were to get serious would having a "fork" or "distro" of Lazarus, if possible, be a good way to go about this? 

Get working on those component sets to whip them into shape, integrated bugfree. Making an own distribution is only the cherry on top of the end of a long process.

IOW, it is the content, not the packaging that is make or break.

Anyway, the inno setup files are in lazarus\tools>install\win\innoscript. I would forget about non Windows packaging for now, since it is rather more complicated

MarkMLl

  • Hero Member
  • *****
  • Posts: 2554
I guess my next step would be to get familiar with the SVN system and how that works.

No, your next step is to find out what components are available- both for Lazarus and Delphi- and then to learn how to write the other stuff you need (ladder diagrams or whatever). You would be most unwise to depart in any way from the standard Lazarus build while doing this, since /any/ departure from the standard IDE and components would make it /much/ more difficult for people to help you.

The licenses are some variant of GPL and LGPL for the IDE and LCL respectively. These are well-documented and well-debated, but the bottom line is that if you distribute the IDE (modified or otherwise) the recipients have to be able to obtain the complete source in usable form, while you can write separate programs using the LCL while keeping the source confidential. The gotcha is that if you carelessly incorporate something- no matter how tiny- that is GPLed into your own software, then you are under an obligation to give your "crown jewels" to anybody on request.

It's worth emphasising that the intent of the (L)GPL is to make software "free as in speech" rather than "free as in beer": there's nothing in there that says that you must not sell it and make a profit from doing so... but beware of picking up a nasty dose of the GPL because you make the mistake of thinking "I can do this just once and get away with it".

Obviously though, the Lazarus project could probably find imaginative ways of using any contribution you thought appropriate to make (underwriting book publication or whatever :-)

MarkMLl

Turbo Pascal v1 on CCP/M-86, multitasking with LAN and graphics in 128Kb.
Pet hate: people who boast about the size and sophistication of their computer.
GitHub repositories: https://github.com/MarkMLl?tab=repositories

Handoko

  • Hero Member
  • *****
  • Posts: 4215
  • My goal: build my own game engine using Lazarus
If I were to get serious would having a "fork" or "distro" of Lazarus, if possible, be a good way to go about this?

And if i did have a industry tailored distro would I be able to monentize my components and include them in the distro?

First of all, I'm not a lawyer. What I'm going to say may not be legally correct.

Someone ever improved (which I believe can be consider as to fork) Lazarus by adding some new features. He created a website for the project and 'sold' his professional service to provide, work and maintain the improved edition of Lazarus.

Everything seemed okay but until a guy who believed that was wrong. He spread his belief (or maybe hatred) so strong. Eventually, the project stopped due to the high pressure. That project was called Sparta.

You can search the old discussions for more information.

Some think it is okay to commercialize a fork of Lazarus as long as no license term is violated. But some think that is morally wrong. What I know is we can make money on open source software, but because Lazarus is license in GPL we have to license the modified version of Lazarus in GPL too.

ojz0r

  • New Member
  • *
  • Posts: 22
Wouldnt you be able to monetize a "HVAC"-package like a tool kit for Lazarus?

Just trying to learn.

kupferstecher

  • Sr. Member
  • ****
  • Posts: 432
And if i did have a industry tailored distro would I be able to monentize my components and include them in the distro?
In such details the licences are a bit complicated. In general the GPL states, that any work derived from a gpl'ed work has to be published as GPL. If you modify the IDE and sell it together with your preinstalled components this probably is a combined work under some jurisdictions. If you provide this two parts seperately, the IDE under GPL and your components under your license and let the users install it themselfes then I don't see problems. (But I'm no expert on that).

In the gpl-v2 it says:
"These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it."

MarkMLl

  • Hero Member
  • *****
  • Posts: 2554
Someone ever improved (which I believe can be consider as to fork) Lazarus by adding some new features. He created a website for the project and 'sold' his professional service to provide, work and maintain the improved edition of Lazarus.

Everything seemed okay but until a guy who believed that was wrong. He spread his belief (or maybe hatred) so strong. Eventually, the project stopped due to the high pressure. That project was called Sparta.

I think the major issue there- but please correct me if I'm wrong- was that it wasn't a clean fork. Sparta continued updating itself with bugfixes etc. from the Lazarus repository, but refused to feed anything back... that sort of behaviour was guaranteed to result in bad blood.

MarkMLl
Turbo Pascal v1 on CCP/M-86, multitasking with LAN and graphics in 128Kb.
Pet hate: people who boast about the size and sophistication of their computer.
GitHub repositories: https://github.com/MarkMLl?tab=repositories

Martin_fr

  • Administrator
  • Hero Member
  • *
  • Posts: 7095
  • Debugger - SynEdit - and more
    • wiki
I think the major issue there- but please correct me if I'm wrong- was that it wasn't a clean fork. Sparta continued updating itself with bugfixes etc. from the Lazarus repository, but refused to feed anything back... that sort of behaviour was guaranteed to result in bad blood.

Well, technically they only need to publish (and allow re-integration) any changes the make to the (L)GPLed code (mainly the IDE code itself).

If they base their packages on IdeIntf and LCL, those are LGPL (+linking exception), and this license afaik is made with the very intent, that you can build your own closed source and commercial packages, including IDE extensions.

On top of distributing such packages, one can always distribute copies of the IDE.

Now the only point is, that if you put your closed packages in the same installer (installler with any GPL work (source or compiled)), then it is a problem, because it becomes a combined work.
Afaik (I am no lawyer), 2 separate installers on the same media (same webpage, same mem-stick, same dvd, ...) are allowed.

If one makes changes (additions, features, fixes) to either the IDE or LCL code, then those changes must be published (the entire resulting new IDE or LCL source must be published).
But only the changes in IDE or LCL (or other GPL/LGPL) code. No parts of code in your own package.

That means, if you add new code to the LCL, that you need for your package to work. And even if that added code is meaningless without your package code, then that code must be published. But again your package is still closed source.

Also, you only need to publish such code (and be aware, that it falls under (L)Gpl). You do not actively need to give it back to the origin project.
We would have to monitor, and extract the changes ourself.

Of course, if you fixed IDE/LCL code, using and benefiting from the LCL, and you would leave others in the dark that there even is a fix, that would send a message about your personality. But that is not a legal matter.

-----------------
In Short. (My understanding / again I am no lawyer)
Both LGPL and GPL require that when you make change to existing code, and use that changed code in work that is not limited to your strict own personal use, then you must publish those changes.

- Lets say you change code (for any reason) in e.g. "unit Forms"
- And You write code (a Program) that uses this modified "unit Forms".

1) If you use that program only for yourself, and never give it to anyone else => you do not need to publish anything

2) If you give that program, in any form (open/close source, charging money, free of charge, gift, afaik even service "i.e.: access via webpage where your code runs on a server and only the result of its work is avail to others") to any person, then you must publish the changes you made to "unit Forms".
That new unit forms, including your changes will then be LGPL (+linking exception).
Your code (the program) can still be closed source and commercial...


That also applies, if you copy code from the "unit Forms" to an other unit. Then that other unit, must be LGPL (+link.except.), and be published.

---
If you do the same with "unit SourceEditor", which is GPL in the IDE.
Then your entire code (including your program, if it uses SourceEditor) will be GPL too, must be open source and published.
« Last Edit: April 14, 2021, 04:05:35 pm by Martin_fr »

Handoko

  • Hero Member
  • *****
  • Posts: 4215
  • My goal: build my own game engine using Lazarus
Sparta continued updating itself with bugfixes etc. from the Lazarus repository, but refused to feed anything back...

I didn't fully follow the story. But it said:

Quote
FreeSparta is free with full source code. Sparta commercial plugins (Sparta Basic, Sparta Starter, Sparta Professional) are closed source - they are installed separately.
Source: https://forum.lazarus.freepascal.org/index.php/topic,25640.msg155998.html#msg155998

[edit - some text removed, so it won't go off topic]
« Last Edit: April 14, 2021, 05:55:41 pm by Handoko »

lucamar

  • Hero Member
  • *****
  • Posts: 3898
2) If you give that program, in any form (open/close source, charging money, free of charge, gift, afaik even service "i.e.: access via webpage where your code runs on a server and only the result of its work is avail to others") to any person, then you must publish the changes you made to "unit Forms".

The "bolded" part is incorrect. The equivalent would be that someone gives you a bunch of data and expects some massaging/result, which you can do with any tool you want (so it's "internal use" and you can be considered the end-user). Like, say, if you're a carpenter and someone gives you some wood for you to make a table for them.

That's why the FSF had to make yet another license for these situations: the A(fffero) GPL.
« Last Edit: April 14, 2021, 07:23:59 pm by lucamar »
Turbo Pascal 3 CP/M - Amstrad PCW 8256 (512 KB !!!) :P
Lazarus/FPC 2.0.8/3.0.4 & 2.0.12/3.2.0 - 32/64 bits on:
(K|L|X)Ubuntu 12..18, Windows XP, 7, 10 and various DOSes.

 

TinyPortal © 2005-2018