taazz, there is at least one misunderstanding now. I am not against dynamic package feature in Lazarus. Quite the opposite, it is one of the missing pieces ....
Your customers have a limited selection of platforms, maybe just Windows. I believe a dynamic package is the right solution for you. I did not think about all use cases clearly.
The problem with BPLs is that they suffer from the same versioning as delivering .o's and .ppu's. ...
...
Its far better to have a stone axe to build your ...
than to wait around until the copper is discovered, which I think it has already been discovered.
In my humble opinion, tazz's suggestion (about dynamic package) is the most reasonable:
Dynamic package is the highest priority bottle neck that's needed to be solved soon over other pending features of Lazarus/fpc. This way seem as clear in several many case, such as :
Delphi is sold, Lazarus is demanded to allow proprietary pascal code used by Pascal community.?
--> it maybe solved by dynamic-package- enrich Lazarus design tools / editor productivity, gain more (multi) purpose IDE, more customizable to user need, etc.
--> it maybe possible by dynamic-package (similar to Delphi 'expert' things) - start funding (finance) and enhance Lazarus/FPC development tasks
--> by commercial vendor's joining - reduce time on user-side of developing a component (bacause IDE wouldn't need to be recompiled each time component's modified). ==> Disk is cheap, but time is cost.
--> by dinamic type / dynamic package allowed. - Any other IDE provider has their own marketplace / code-exchange, Lazarus has wiki which is not trully integrated over its pages (hard to search). Dynamic package would be a new commodity to Lazarus community. ?
--> just similar to iTunes for music commodity, we need a serious place for package-exchange/market - and so on.
Let we go more detail.
If I may sum up, the side-effect (known problems) of dynamic package implementation are:
- Commercial component vendor, don't want to share their proprietary source code
- Commercial vendor, maybe want to to share only their binary (compiled) component
- Component (LCL/RTL) in binary format for Lazarus should be available for all platform supported by Lazarus/FPC
- The number for platform supported by Lazarus/FPC is skyrocketing, let say : a component in binary format should be compiled 100 times because of the amount of OS multiplied with Processor multiplied to Widgetset (OS x Processor x Widgetset)
- In fact, current commercial vendor must provide twice of amount above in case to support both FPC 3 + FPC 2.x to gain maximum possibilities of various developer need.
- Finally, Lazarus+binary_(commerical)_packages would be very very very large to download.
- conclusion: That situation can be simplified, can be eliminated by just distribute their (commercial) source code, which is impossible.
Anyway, Lazarus is different from Delphi. The IDE itself can be installed in many platforms. Easier cross-compilation would be nice but it does not really help with component installation. To utilize the full potential of Lazarus all its platforms should be supported, and that requires source code.
Well, the solution by tazz (at least in my own comprehension) is to
let the component provider to solve this problem by them self.
It mean: when you open your gate, everyone could enter and join. If you close the gate, nobody would join.
It also mean, component vendor want to say : "don't worry about your 'problem', I have my own solution to run business gracefully over that limitation. When you have solved that, that's better for me too."
So, if I were one of Commercial Component for Lazarus/fpc, Sure I have many solution :
- I can provide all 200 binary combination downloaded from my website (disk is cheap nowdays)
or keep all binaries in sourceforge or github - I can provide a few binaries for major platform, and provide addition one by request
- I will provide those binaries for evalutation only, such as will stop running when run outside Lazarus debug, so it only for evalution in debug mode. So only serious/paid user got the source code.
- I can suggest to Lazarus team to provide only my binary to be included in related Lazarus download, so my Win32 binary included in Lazarus for win32 download, not the whole combination. When user require cross-compile, they should download what they need separately from my website by just opening my metapackage file (*.lpk)
- I can provide the download of files needed by cross-compile inside my component via Property Inspector, just similar as About property dialog box +download links, you know.
- Sure, I have many hidden+unpredicable solution over this hard situation, you and I will know when later we make more progress.
It is clear that non-opensource's source code is
not a must. The package it self will be.
if we could build a good dynamic-package ecosystem, no matter source code or binary, it would be okay.
IMHO, the only way required by both component's provider + component user is = easy access.
Yes !!!!, it's the good time for Lazarus community to have similar market of Eclipse's MarketPlace, Python's Pypy, or what ubuntu have had.
Meaning: developer doesn't require the whole binaries, just what they need when they need them (such when crosscompiling): the package should be available, somewhere, by easy access (command line, download click?)
Its far better to have a stone axe ...than to wait around until the copper is discovered, ..
Lazarus/FPC team's sould supply a nice place of what tools/component available in the market for Lazarus/FPC, by providing a dedicated website of this demand. (before somebody else take over this opportunity by stale this great idea)