Hi Willem, Thanks for your valuable feedback!
Best, Dianjin Wang On Thu, Dec 26, 2024 at 3:42 PM Willem Jiang <willem.ji...@gmail.com> wrote: > Please check out my comments in the below email. > > Willem Jiang > > Twitter: willemjiang > Weibo: 姜宁willem > > On Wed, Dec 25, 2024 at 5:07 PM Dianjin Wang <wangdian...@gmail.com> > wrote: > > > > Hi all, > > > > As source code cleanup work is in progress, I would like to start a > discussion thread on the License headers strategy. > > > > Our project includes codes from Greenplum and PostgreSQL, so we need to > handle the license headers carefully. I believe we all hope to align with > the ASF policies while maintaining traditional code conventions for better > engineering practices. > > > > /* > > Here are some related tasks for reference. Feedback is welcome via > GitHub: > > * For NOTICE and LICENSE files, see PR #812[1] (not ready for review). > > * For renaming the old brand in files to align the Apache brand, see PR > #731[2] (ready for review). > > * For GitHub workflows regarding brand name checks, see PR #787[3] > (ready for review). > > > > We must complete the cleanup work before creating any releases as > requested by ASF( > https://incubator.apache.org/guides/transitioning_asf.html). > > */ > > > > For this discussion, I referred to the `ASF Source header policy`[4] > page and practices from other ASF projects like HAWQ[5] & Pekko[6]. Hope we > can work together to achieve consensus on the following proposal points > before taking action. Welcome to have your suggestions and feedback, > especially from our mentors and members familiar with ASF rules. > > > > ## Proposed Cases > > > > I divided the scenarios into four cases: > > > > - Case 1: Completely original, new files created by the Cloudberry > community. > > - Case 2: Modifications/additions to the 3rd-party source files with > existing copyright headers. > > - Case 3: Modifications/additions to the 3rd-party source files without > copyright headers. > > - Case 4: No modifications/additions to the 3rd-party (PG/GP) source > files. > > > > I will share my thoughts on each case below. > > > > ## Case 1: New, Original Files > > > > For completely original, new files (created either before or after the > donation to ASF), we can use the standard Apache License header. > > > > Standard version (use Clang as an example): > > ``` > > > /*------------------------------------------------------------------------- > > * > > * example.c (option) > > * use for one example of how to add a licenser header (option) > > * > > * Licensed to the Apache Software Foundation (ASF) under one > > * or more contributor license agreements. See the NOTICE file > > * distributed with this work for additional information > > * regarding copyright ownership. The ASF licenses this file > > * to you under the Apache License, Version 2.0 (the > > * "License"); you may not use this file except in compliance > > * with the License. You may obtain a copy of the License at > > * > > * http://www.apache.org/licenses/LICENSE-2.0 > > * > > * Unless required by applicable law or agreed to in writing, > > * software distributed under the License is distributed on an > > * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > > * KIND, either express or implied. See the License for the > > * specific language governing permissions and limitations > > * under the License. > > * > > * IDENTIFICATION (option) > > * src/timezone/zic.c (option) > > * > > > *------------------------------------------------------------------------- > > */ > > ``` > > > > As we adopt the PostgreSQL coding conventions and align the style, add > the `file name`, `description`, `IDENTIFICATION` and `file path` fields as > the options. They're not required, but should be encouraged. > > The new fileds may affect the auto License identification process. > You may think about put these options fields below the License header. > Ok, will provide another new standard version for this later. > > > > > ## Case 2 Modifications/Additions to Files with Existing Copyright > Headers > > > > When we have modifications/additions to the existing 3rd-party (PG/GP) > source files with copyright headers, we're asked to `Do Not` listed in the > following. Instead, we can use a short Apache License version. > > > > /* Reference: ASF Rules [7] > > 1. Do not modify or remove any copyright notices or licenses within > third-party works. > > 2. Do not add the standard Apache License header to the top of > third-party source files. > > 3. Minor modifications/additions to third-party source files should > typically be licensed under the same terms as the rest of the third-party > source for convenience. > > 4. The project's PMC should deal with major modifications/additions to > third-party source files on a case-by-case basis. > > */ > > > > Short version 1 (use Clang as an example): > > ``` > > > /*------------------------------------------------------------------------- > > * Licensed to the Apache Software Foundation (ASF) under one or more > > * license agreements; and to You under the Apache License, version 2.0: > > * > > * https://www.apache.org/licenses/LICENSE-2.0 > > * > > * This file is part of the Apache Cloudberry project. > > * > ------------------------------------------------------------------------- > > */ > > ``` > > > > When we want to add the license header in bulk to mounts of 3rd-party > files, we can directly insert the short version to the file header, this > way is accepted but not gorgeous. Here is one example of how to insert the > short header version into the existing files with the legacy copyright info: > > > > ``` > > I don't think we have the right change the License of the original > source code and relicense the source code in Apache License. > We just need to keep the original License header and make sure these > licenses are compatiable with Apache License. > You may find more information here > > https://www.apache.org/legal/resolved.html#handling-public-domain-licensed-works So we can remove Case #2. For Case #3, I believe all the files without copyright license headers are under the PostgreSQL license or the AL 2; from my understanding, there is also no need to take care of them anymore. Per this suggestion, we need only one case to handle: that's Case #1, which will be much simpler for the team.