Enterprise Application Framework based on Laminas - Questions regarding opensource

Hi. I am a developer of a Software Framework called “onePlace” - since 2009 its based on Zend Framework, started with Version 1. My 10th Version (PLC X) has now reached end of beta (0.9.8) based on latest Zend Framework … now i’m working on release my next stable by the end of january, (1.0.0) based on the latest Laminas MVC Stable Stack. Also i would like to opensource some of my core modules as some people could may have a use of it to build their own apps based on laminas.

I have some questions regarding the open source (BSD-3) release of my framework. its actually a heavily extended laminas skeleton with a User Module, DB based permission system and a “Skeleton” Module to rapidly build own / new modules. Is anyone here willing to help me with some basic stuff like licencing and correctly crediting everyone? Because its my first opensource project.

There is an initial commit on github so you can see some of my source code and what i want to achieve.

I have over 60+ closed source Zend Framework Modules which i want to migrate and opensource, so any help for getting me used to this process would be very appreciated.

Thanks a lot.

Licensing, especially changing license from proprietary, is a legal matter and I am not sure if anyone here is qualified to give you advice.

Git commit author field is widely accepted as enough of attribution unless overridden by license terms.

Contributions made on github are following inbound=outbound policy as per ToS, again, unless overridden by license or contributor agreement:
So any new contributions would be considered as done under the same BSD-3 license.

In other words, once you figured legal implications of transitioning from your current license it should be a smooth sailing afterwards.

Additional helpful link: https://opensource.guide/legal/

For the modules I would advise to use your vendor prefix/namespace and release them separately from skeleton as packages.

eg user module as OnePlc\PlcXCore\User with composer package named something like oneplc/plcxcore-user

yes thats what i do - i have 60+ repos. each modules has its own version. Only “Application” and “User” and “Skeleton” are shipped in one repo as they directly depend on each other. But maybe i also split them up.

Also i did not fully understand how to utilize composer for my own code. so maybe someone can help me with this or i gonna improve it as soon as i find some time to do my own research / understand it better.

so regarding Laminas. How do i need to credit laminas? Do i have add the original LICENCE.md to my LICENCE.md ? all the code is written by myself, but my application is e.G based on laminas-mv-skeleton app.

Do you have specific questions?
I suggest you read composer docs if you haven’t already and you can also ask us quick questions in chat.

Mentioning in README that it is based on laminas-mvc-skeleton with link to repo would be enough.

1 Like

thanks a lot for your feedback so far and your patience. i know my questions are not super clear, this whole space (open source) is new to me as contributor. at least for commercial software. i already released some small wordpress plugins. so i start with this, mentioning Laminas and other Projects like jQuery UI in Readme.MD with linkt to their repos and credit them everywhere i can. Also i add every author in @author tag if i re-use any code …which i don’t do at all. i always write own code, even if its based on others code because i want to fully understand each char uf my code.

so i hope thats a good start that doesnt get my any problems and then i start releasing under BSD-3 on github now - lets see if anyone makes use of it :slight_smile:

gonna ask some more questions maybe in a few days lets have a quick start and maybe someone has time to read some of the code in the next days.

So i added this section to my Readme.MD


This Project is based on the Laminas MVC Skeleton App and Framework

That is not necessary usually. You almost never see that tag used. Normal and recommended way is to include 3rd party code as vendored library. Usually with the help of composer.

For the code that was committed to version control, change author is already recorded.
Example output of git log:

commit 699e9ba9e61ad41df329d37103e7dacaae45a6f4
Author: Matthew Weier O'Phinney <email edit>
Date:   Mon Dec 30 14:46:15 2019 -0600

    qa: add trailing comma to array

commit 985845ff2e64d99d18f955e7ecec168ec85fb42d
Author: wilcol <email edit>
Date:   Mon Dec 30 11:35:36 2019 +0100

    added use function statements and updated test

commit 70d8b8223675cc99da49c53c65fb83755ce56a86
Author: wilcol <email edit>
Date:   Mon Dec 30 09:01:51 2019 +0100

    added same site directive canonical return value test and restructed code for readability


When we copy someone else’s code into our own codebase we add comment with the link pointing to the source, not the full list of authors. If source is publicly available with some canonical url.

1 Like

ok i see. Thanks for the hint with git log.

Lets take another example.

What about code snippeds that helped me making my code - do you reference that in general?
So in my case thats 99% a stackoverflow questions that gives me some hints. I never copy/paste code there, but its inspired by that answer. is there any common practice regarding crediting such “inspirations” ?

It is hard to keep that list in sync as you update stuff over time and you already have all components listed in composer.json, so repeating it in readme is redundant. The only reason to mention mvc skeleton is because you copied it into your repository.

I edited you readme a bit, they way how i would rearrange it, probably:

I would definitely extract those base modules as anything that is in skeleton application gets copied into new application and then never updated from skeleton. Look at how our skeletons with installers work for ideas on how to setup it for you. Another skeleton to check is for Mezzio: https://github.com/mezzio/mezzio-skeleton This one is more advanced as it was introduced later.

1 Like

I rarely copy any snippets verbatim and where I might have got inspiration is not really helpful in code comments.
Usually I look at whether it would be considered a significant derivative work or help understand the complex code.
Copied nested loop because I was too lazy to write it myself is not a derivative work. Copied complex regex on the other hand is.

Appreciate your help. It really helped to just feel more safe and get along with opensourcing my work. So i think thats a good start. Lets see how that works out.

Now i think thats about it for now regarding licencing and crediting correctly. learned a lot, it may seem like details but that was very important for me to hear from someone with experience. I know its not about legal advice, more about code of conduct which i am not so used to yet.

Now i would like to continue this thread more about the project in general as a showcase and discussion thead. should i close this thread and open a new one or can i just edit the subject to remove the question part and go on with this thread?

@Praesidiarius I moved this thread to Uncategorized as it was not really about showing your project.
You can create new showcase thread now.

1 Like

if it is ok, i will use this thread for upcoming questions regarding licencing and correclty distributing

one question i have is: how to ship my vendor files for UI like jquery-ui, fontawesome, filepond.js and so one - and currently have a ./public/vendor dir and subdirs like ./public/vendor/jquery-ui

so i include those files in my layout files which i commit to github, but added the ./public/vendor to .gitignore, so its not uploaded to github - so thats the safe approach i guess.

now how to tell people they must add these dependencies in docs? is there something like composer for these things besides npm - becuase that needs node.js as far as i know and i dont want that.

any ideas are very welcome, thanks in advance. i want that people can spin up oneplace as easy as possible and fully automated.

so to complete this thread. i decided to go with yarn for frontend plugin distribution.

now i can just composer install & yarn install oneplace. just adding this for anyone facing the same questions.