Re: Is a modern build system acceptable for older platforms

Lists: pgsql-hackers
From: Catalin Iacob <iacobcatalin(at)gmail(dot)com>
To: Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Is a modern build system acceptable for older platforms
Date: 2018-04-19 05:30:08
Message-ID: CAHg_5grEV_gT0845XbEQXYMPJichVKL74J5_m4bMr-4+rMzyzw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

There have been several discussions of replacing PG's autoconf +
src/tools/msvc system. The last example is happening now at the bottom of
the Setting rpath on llvmjit.so thread.

I see potentially big advantages to moving but also to PG's conservative
approach that keeps it running on edge and old platforms so I set to look
more carefully what could be problematic or a showstopper for a more modern
build system. Here are my findings, hope they help.

Unlike autoconf, all newer alternatives that I know of (certainly CMake and
Meson which were floated as alternatives so far) require themselves to be
present on the build machine when building. I know they have good reasons
to do this but that means they impose new dependencies for building PG.
Let's see what those are for CMake and Meson to get an idea if that's
acceptable and a feeling for how much friction they will introduce.

CMake
=====

* needs a C++11 compiler (since 3.10, before it used to only need C++98)
* needs libuv (since 3.10 apparently, I know that some years ago it had no
library dependencies besides the C++ standard library)
* has a make backend so no new depedency (it maybe works with non GNU make
so maybe it lowers one dependency)
* can bootstrap on a number of Unix systems, see
https://gitlab.kitware.com/cmake/cmake/blob/master/bootstrap

For the platforms in "CMake's buildfarm" see
https://open.cdash.org/index.php?project=CMake

The C++11 requirement caused 3.10 and higher to not build anymore for HP-UX:
https://gitlab.kitware.com/cmake/cmake/issues/17137

Meson
=====

* needs Python >= 3.4
* needs ninja
** meson has no make backend see
http://mesonbuild.com/FAQ.html#why-is-there-not-a-make-backend for rationale
** as a small positive, this would mean not having to explain "you need
GNU make, BSD make is not enough"

Ninja:
* needs C++
** I think C++98 is enough but not 100% sure, with a quick look at the
code I noticed no newer C++ features and the bootstrap script does not pass
any -std arguments to the C++ compiler so it should be 98
* https://github.com/ninja-build/ninja/pull/1007 talks about adding AIX
support and is in a release already
* https://github.com/ninja-build/ninja/blob/master/configure.py is the
bootstrap script which lists these as known platforms: 'linux', 'darwin',
'freebsd', 'openbsd', 'solaris', 'sunos5', 'mingw', 'msvc', 'gnukfreebsd',
'bitrig', 'netbsd', 'aix', 'dragonfly'

Python 3:
* points to ActivePython for HP-UX: https://www.python.org/download/other/
* some googling suggests Python > 3.2 works well on AIX and there are some
links to binaries

If I look at the requirements above versus what Postgres has in
src/template and in the build farm it seems like HP-UX and AIX could be the
more problematic or at least fiddly ones.

A related issue is that future versions of CMake or Meson could move their
baseline dependencies and desupport old platforms faster than PG might want
to but there one could make the case to just use the older meson or CMake.

So before the discussion whether the gains from switching build systems
would offset the pain, I think the project needs to decide whether a newer
build system is acceptable in the first place as it has a chance of
desupporting a platform alltogether or at least making it more painful for
some platforms by adding the bootstrap step for the build system with
potentially cascading dependencies (get Python 3 working, get ninja
bootstrapped, get PG built or get libuv built, get CMake built, get PG
built).

The above is all about getting the build system to work at all. If that
isn't a showstopper there's a subsequent discussion to be had about older
platforms where one could get the build system to work but convenient
packages are missing. For example not even RHEL7 has any Python3 packages
in the base system (it does in Software Collections though) which means
some extra hoops on getting meson running there. And RHEL5 is in an even
worse spot as it has no Software Collections, who knows if Python 3 builds
on it out of the box etc.


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Catalin Iacob <iacobcatalin(at)gmail(dot)com>
Cc: Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-04-19 08:07:55
Message-ID: CANiD2e8dPfejfVEKa0stGUfRuykfiADsnn6q+NfKvwZqnYrB2Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

About CMake:
We can use 3.9 version very well, it has all features for us, at least for
my postgres_cmake branch and I have the experience to introduce features to
cmake special for postgres build.
Also, cmake very easily build even for Solaris or AIX (on my webpage I have
examples to build postgres with cmake on this systems).

But, I totally agree with this topic, we can't keep same support matrix and
can't keep 100% same behavior and a "build" interface. Maybe, behavior
should be the second question.
In my opinion, I made too much now without the answer to this
important question.

2018-04-19 14:30 GMT+09:00 Catalin Iacob <iacobcatalin(at)gmail(dot)com>:

> There have been several discussions of replacing PG's autoconf +
> src/tools/msvc system. The last example is happening now at the bottom of
> the Setting rpath on llvmjit.so thread.
>
> I see potentially big advantages to moving but also to PG's conservative
> approach that keeps it running on edge and old platforms so I set to look
> more carefully what could be problematic or a showstopper for a more modern
> build system. Here are my findings, hope they help.
>
> Unlike autoconf, all newer alternatives that I know of (certainly CMake
> and Meson which were floated as alternatives so far) require themselves to
> be present on the build machine when building. I know they have good
> reasons to do this but that means they impose new dependencies for building
> PG. Let's see what those are for CMake and Meson to get an idea if that's
> acceptable and a feeling for how much friction they will introduce.
>
> CMake
> =====
>
> * needs a C++11 compiler (since 3.10, before it used to only need C++98)
> * needs libuv (since 3.10 apparently, I know that some years ago it had no
> library dependencies besides the C++ standard library)
> * has a make backend so no new depedency (it maybe works with non GNU make
> so maybe it lowers one dependency)
> * can bootstrap on a number of Unix systems, see
> https://gitlab.kitware.com/cmake/cmake/blob/master/bootstrap
>
> For the platforms in "CMake's buildfarm" see https://open.cdash.org/index.
> php?project=CMake
>
> The C++11 requirement caused 3.10 and higher to not build anymore for
> HP-UX:
> https://gitlab.kitware.com/cmake/cmake/issues/17137
>
> Meson
> =====
>
> * needs Python >= 3.4
> * needs ninja
> ** meson has no make backend see http://mesonbuild.com/FAQ.
> html#why-is-there-not-a-make-backend for rationale
> ** as a small positive, this would mean not having to explain "you
> need GNU make, BSD make is not enough"
>
> Ninja:
> * needs C++
> ** I think C++98 is enough but not 100% sure, with a quick look at the
> code I noticed no newer C++ features and the bootstrap script does not pass
> any -std arguments to the C++ compiler so it should be 98
> * https://github.com/ninja-build/ninja/pull/1007 talks about adding AIX
> support and is in a release already
> * https://github.com/ninja-build/ninja/blob/master/configure.py is the
> bootstrap script which lists these as known platforms: 'linux', 'darwin',
> 'freebsd', 'openbsd', 'solaris', 'sunos5', 'mingw', 'msvc', 'gnukfreebsd',
> 'bitrig', 'netbsd', 'aix', 'dragonfly'
>
> Python 3:
> * points to ActivePython for HP-UX: https://www.python.org/download/other/
> * some googling suggests Python > 3.2 works well on AIX and there are some
> links to binaries
>
> If I look at the requirements above versus what Postgres has in
> src/template and in the build farm it seems like HP-UX and AIX could be the
> more problematic or at least fiddly ones.
>
> A related issue is that future versions of CMake or Meson could move their
> baseline dependencies and desupport old platforms faster than PG might want
> to but there one could make the case to just use the older meson or CMake.
>
> So before the discussion whether the gains from switching build systems
> would offset the pain, I think the project needs to decide whether a newer
> build system is acceptable in the first place as it has a chance of
> desupporting a platform alltogether or at least making it more painful for
> some platforms by adding the bootstrap step for the build system with
> potentially cascading dependencies (get Python 3 working, get ninja
> bootstrapped, get PG built or get libuv built, get CMake built, get PG
> built).
>
> The above is all about getting the build system to work at all. If that
> isn't a showstopper there's a subsequent discussion to be had about older
> platforms where one could get the build system to work but convenient
> packages are missing. For example not even RHEL7 has any Python3 packages
> in the base system (it does in Software Collections though) which means
> some extra hoops on getting meson running there. And RHEL5 is in an even
> worse spot as it has no Software Collections, who knows if Python 3 builds
> on it out of the box etc.
>


From: Darafei "Komяpa" Praliaskouski <me(at)komzpa(dot)net>
To: Catalin Iacob <iacobcatalin(at)gmail(dot)com>
Cc: Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-04-19 09:11:12
Message-ID: CAC8Q8tLbKG-x4B9rigo-70No84gvE5W_6=ZRWEAFde-sEJXdcw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

>
> The above is all about getting the build system to work at all. If that
> isn't a showstopper there's a subsequent discussion to be had about older
> platforms where one could get the build system to work but convenient
> packages are missing. For example not even RHEL7 has any Python3 packages
> in the base system (it does in Software Collections though) which means
> some extra hoops on getting meson running there. And RHEL5 is in an even
> worse spot as it has no Software Collections, who knows if Python 3 builds
> on it out of the box etc.
>

I would expect that a new version of software should not target versions of
platform that are end of full support. Per
https://access.redhat.com/support/policy/updates/errata currently only
RHEL7 is at Full Support, and RHEL5 is already past Product Retirement. I
would say it's fine to support these at already released branches, but
limiting .

PostGIS has several forks that move it towards CMake (five-year-old ticket
https://trac.osgeo.org/postgis/ticket/2362, forks
https://github.com/nextgis-borsch/postgis,
https://github.com/mloskot/postgis/tree/cmake-build) - none of these are
upstream mostly because there's an expectation to match the Postgres build
system. If Postgres moved to CMake (there are already CMake-enabled forks
available for people who) then I expect PostGIS to quickly catch up.

A lot of libraries PostGIS depends on are already built using CMake, so if
the platform has recent PostGIS it has CMake available somehow.

Darafei Praliaskouski,
GIS Engineer / Juno Minsk


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Darafei "Komяpa" Praliaskouski <me(at)komzpa(dot)net>
Cc: Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-04-19 14:16:09
Message-ID: 8851.1524147369@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

=?utf-8?Q?Darafei_=22Kom=D1=8Fpa=22_Praliaskouski?= <me(at)komzpa(dot)net> writes:
>> The above is all about getting the build system to work at all. If that
>> isn't a showstopper there's a subsequent discussion to be had about older
>> platforms where one could get the build system to work but convenient
>> packages are missing. ...

> I would expect that a new version of software should not target versions of
> platform that are end of full support.

The other side of that argument is that allowing a build system we haven't
even adopted yet to dictate which platforms we can support is definitely
letting the tail wag the dog.

My gut reaction to Catalin's list is that requiring C+11 is a pretty
darn high bar to clear for older platforms. I have a positive impression
of python's portability, so requiring a recent python version might not
be too awful ... but then requiring ninja pretty much tosses away the
advantage again. So, while in principle you could probably get these
toolchains going on an old platform, the reality is that moving to either
will amount to "we're desupporting everything that wasn't released in
this decade". That's a pretty big shift from the project's traditional
mindset. It's possible that our users wouldn't care; I don't know.
But to me it's a significant minus that we'd have to set against whatever
pluses are claimed for a move.

regards, tom lane


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Darafei Komяpa Praliaskouski <me(at)komzpa(dot)net>, Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-04-20 00:30:21
Message-ID: CANiD2e_aN7-ps-darPMJ5BpUyCj7Sj3OjEh8EJp3uCFUKFqsBg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

>
> My gut reaction to Catalin's list is that requiring C+11 is a pretty
> darn high bar to clear for older platforms.
>

It's only for latest version and we can support version 3.9 with C++98 I
think at least 5 years.
3.9.6 was realease in November 10, 2017 .

That's a pretty big shift from the project's traditional
> mindset.
>

Sure, but I think time to time it should be happen.

But to me it's a significant minus that we'd have to set against whatever
> pluses are claimed for a move.
>

It's obvious minuses but I still can't understand your position on this
question.

Regards


From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Darafei Komяpa Praliaskouski <me(at)komzpa(dot)net>, Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-04-23 14:38:36
Message-ID: CA+Tgmobw_Jq0NgoojeiherdPaqYkiBW0LQhASHXU_WTNN0r4UQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Thu, Apr 19, 2018 at 10:16 AM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> The other side of that argument is that allowing a build system we haven't
> even adopted yet to dictate which platforms we can support is definitely
> letting the tail wag the dog.
>
> My gut reaction to Catalin's list is that requiring C+11 is a pretty
> darn high bar to clear for older platforms. I have a positive impression
> of python's portability, so requiring a recent python version might not
> be too awful ... but then requiring ninja pretty much tosses away the
> advantage again. So, while in principle you could probably get these
> toolchains going on an old platform, the reality is that moving to either
> will amount to "we're desupporting everything that wasn't released in
> this decade". That's a pretty big shift from the project's traditional
> mindset. It's possible that our users wouldn't care; I don't know.
> But to me it's a significant minus that we'd have to set against whatever
> pluses are claimed for a move.

Yeah, I agree. I am not deathly opposed to moving, but I'd like to be
convinced that we're going to get real advantages from such a move,
and so far I'm not. The arguments thus far advanced for moving boil
down to (1) the current system is kind of old and creaky, which is
true but which I'm not sure is by itself a compelling argument for
changing anything, and (2) it might make things easier on Windows,
which could be a sufficiently good reason but I don't think I've seen
anyone explain exactly how much easier it will make things and in what
ways.

I think it's inevitable that a move like this will create some
disruption -- developers will need to install and learn new tools,
buildfarm members will need updating, and there will be some bugs.
None of that is a blocker, but the gains need to outweigh those
disadvantages, and we can't judge whether they do without a clear
explanation of what the gains will be.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Darafei Komяpa Praliaskouski <me(at)komzpa(dot)net>, Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-04-27 07:10:21
Message-ID: CANiD2e-soCTfXxSA_qTsFFw0dNVJM4wBLB=VNQ5xJteKxtn40g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

> (2) it might make things easier on Windows,
> which could be a sufficiently good reason but I don't think I've seen
> anyone explain exactly how much easier it will make things and in what
> ways.
>

1. You can remove tools/msvc folder because all your build rules will be
universal. (cmake build now have much fewer lines of code)
2. You can forget about terminal in Windows (for windows guys it's
important)
3. You can normally check environment on Windows, right now we have
hardcoded headers and many options. Configure process will be same on all
platforms.
4. You can generate not only GNU Make or MSVC project, you also can make
Xcode projects, Ninja or NMake for build under MSVC Make. For Windows, you
also can easily change MSVC to Clang it's not hardcoded at all.
5. With CMake you have an easy way to build extra modules (plugins), I have
already working prototype for windows PGXS. A plugin should just include
.cmake file generated with Postgres build.
Example:
https://github.com/stalkerg/postgres_cmake/blob/cmake/contrib/adminpack/CMakeLists.txt
If PGXS is True it's mean we build module outside postgres.

But in my opinion, you should just try CMake to figure out all benefits.

> we can't judge whether they do without a clear explanation of what the
gains will be

I think it's not that thing what easy to explain. Main benefits not in unix
console area and C language...


From: Mark Kirkwood <mark(dot)kirkwood(at)catalyst(dot)net(dot)nz>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-04-27 08:45:40
Message-ID: b17e3a86-935d-d0e0-dcb7-2b23d8591564@catalyst.net.nz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 27/04/18 19:10, Yuriy Zhuravlev wrote:

>
> 1. You can remove tools/msvc folder because all your build rules will
> be universal. (cmake build now have much fewer lines of code)
> 2. You can forget about terminal in Windows (for windows guys it's
> important)
> 3. You can normally check environment on Windows, right now we have
> hardcoded headers and many options. Configure process will be same on
> all platforms.
> 4. You can generate not only GNU Make or MSVC project, you also can
> make Xcode projects, Ninja or NMake for build under MSVC Make. For
> Windows, you also can easily change MSVC to Clang it's not hardcoded
> at all.
> 5. With CMake you have an easy way to build extra modules (plugins), I
> have already working prototype for windows PGXS.  A plugin should just
> include .cmake file generated with Postgres build.
> Example:
> https://github.com/stalkerg/postgres_cmake/blob/cmake/contrib/adminpack/CMakeLists.txt
> If PGXS is True it's mean we build module outside postgres.
>
> But in my opinion, you should just try CMake to figure out all benefits.
>
>

I note that Mysql (yeah I know, we don't love 'em greatly, but their
product niche is similar to ours) and Ceph (ok it is a distributed
storage system but still a highly popular open src product) have
switched to using cmake (relatively) recently. Both these projects were
using autoconf etc related builds previously and seem to be doing just
fine with cmake.

regards
Mark


From: Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-04-27 09:46:25
Message-ID: 0ec823ee-8d60-4a8a-58d6-09c789c5f914@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 27.04.2018 10:45, Mark Kirkwood wrote:

> I note that Mysql (yeah I know, we don't love 'em greatly, but their
> product niche is similar to ours) and Ceph (ok it is a distributed
> storage system but still a highly popular open src product) have
> switched to using cmake (relatively) recently. Both these projects were
> using autoconf etc related builds previously and seem to be doing just
> fine with cmake.

I lived through that transition at MySQL, and later at SkySQL/MariaDB

Windows builds have been using CMake since somewhere in the MySQL 5.0
series at least already.

For a while autotools and CMake build systems coexisted side by side,
until everything was unified to use CMake only in the 5.5 series which
became "GA" in 2010, so "(relatively) recently" is rather relative.

Having to maintain two different build systems, and keep them in sync,
obviously wasn't a good thing to do in the long run and CMake (plus
CPack and friends) has proven itself to be "good enough" for quite
a while.

There are several things that autotools provide out of the box that
I still miss with CMake.

The most important one being "make distcheck" to check that creating
a source distribution tarball, unpacking it, doing an "out of source"
build with it that does not modify the actual source tree, runs test
and applies some release best practice sanity checks by e.g. checking
whether the ChangeLog file looks up to date.

As far as I can tell there's no CMake equivalent to that at all,
which is especially "funny" as CMake used to advertise their preference
for out-of-source builds as an advantage over autotools. We often enough
ended up with builds writing to the source directory tree instead of the
build tree over the years.

Makefiles generated by automake are more feature rich in general,
which is understandable as its the only backend it has to support.

Some of the CMake choices there are just weird though, like their
refusal to have "make uninstall" supported out of the box.

Some may also think that getting rid of a mix of bash, m4, and Makefile
code snippets may be a good thing (which in itself is true), but CMake
replaces this with its own home grown language that's not used anywhere
else, and which comes with only a very rudimentary lex/yacc parser,
leading to several semi-consistent function argument parsing hacks.

The bundled pacakge libs that come with CMake made some builds more
easy, but this part didn't seem to be seeing much love anymore last
time I looked. Meanwhile the Autoconf Macro Archive has at least partly
closed that gap.

Also last time I looked CMake hat nothing really comparable to
autotools submodules (bundled sub-projects that come with their
own autotools infrastructure and could be built standalone, but
in a bunlded context will inherit all "configure" settings from
the top level invocation).

There was also some weird thing about CMake changing shared library
default locations in already built binaries on the fly on "make
install", so that they work both in the install and build context,
e.g. for running tests before installing. Autotools handle this
by building for the install context right away, and setting up
wrapper scripts that set up load paths for libs in the build
context for pre-install testing. In this particular case I don't
really trust either approach, so that one's a tie.

What else?

CMakes more aggressive caching behavior can be confusing, but
then again that's really just a matter of preference.

It's command line argument parsing and help output is inferior
to autotools configure, all project specific options have to
start with a -D, and help output for these is strictly alphabetical,
while with autoconf you can group related options in help output,
and on modern Linux distributions there's good tab completion
for them, too.

cmake-gui is advertised to solve much of this, but it still
suffers from the alphabetic listing problem.

I could probably continue with this brain dump forever, but in the
end it comes down to:

There's no real alternative when you have to support windows, and
it is "good enough" on Unix, so that maintaining CMake and autotool
build setups in parallel isn't really justified in the long run"

PS: when you actually watch a full MariaDB CMake

--
Hartmut, former MySQL guy now working for MariaDB


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>
Cc: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-04-28 03:27:13
Message-ID: CANiD2e9Xqn5msU8dAFouwkJFXBV-etmy=qkFLW_A5E-xvnQt3A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

>
> Makefiles generated by automake are more feature rich in general,
> which is understandable as its the only backend it has to support.

The main problem here - Postrges do not use automake at all!
Postgres it's autoconf + handmade GNU Make files + perl script for
generating old MSVC project from this Makefiles.

"make distcheck"
>

CMake have no this bad concept, in my opinion, if you want to make the
project you should have a full build environment. (but I don't want to
argue about it here)

Also, as I wrote before, CMake it's not equivalent of GNU Make or Autoconf,
many your reasons based on that fact what CMake, is not a build system it's
more like project generation system.
And anyway, you have no option if you want to support Windows without pain
and much more hacks ways.


From: Craig Ringer <craig(at)2ndquadrant(dot)com>
To: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Darafei Komяpa Praliaskouski <me(at)komzpa(dot)net>, Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-04-28 12:01:46
Message-ID: CAMsr+YGdCouCcTn2svcrGJm=2CaCgxHtyRGawXnMKy7NzPQHbA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 27 April 2018 at 15:10, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com> wrote:

> 1. You can remove tools/msvc folder because all your build rules will be
> universal. (cmake build now have much fewer lines of code)

Which is nice, but not actually a major day to day impact.

> 2. You can forget about terminal in Windows (for windows guys it's
> important)

OK, but it's not really important for the PostgreSQL project, IMO.
Also, most people working on PostgreSQL are probably less bothered by
the terminal.

> 3. You can normally check environment on Windows, right now we have
> hardcoded headers and many options. Configure process will be same on all
> platforms.

Again, nice, but does that solve a real current problem?

> 4. You can generate not only GNU Make or MSVC project, you also can make
> Xcode projects, Ninja or NMake for build under MSVC Make. For Windows, you
> also can easily change MSVC to Clang it's not hardcoded at all.

Yeah, that's nice, but again, what're the real world benefits?

> 5. With CMake you have an easy way to build extra modules (plugins), I have
> already working prototype for windows PGXS. A plugin should just include
> .cmake file generated with Postgres build.

Yep. FWIW, I already use CMake for some PostgreSQL extensions because
of PGXS limitations and Windows support. I won't say I'm a big fan,
the documentation is a bit stale and it has some weird quirks and
limitations, but compared to autohell it's pure magic.

> But in my opinion, you should just try CMake to figure out all benefits.

I use it fairly regularly. I'd never use autotools for any project I
was starting myself.

But that doesn't mean converting the whole postgres project is a good idea.

I'd do it, personally. But it's not just up to me. I've yet to hear
something that's compelling to a team who still set Perl 5.8.8 as the
minimum version and support SunOS. You'll need a compelling argument
that it's worth the pain and distruption.

--
Craig Ringer http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services


From: Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-04-28 19:10:54
Message-ID: d35dbdaa-a954-677e-1306-e03a90f09428@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 28.04.2018 05:27, Yuriy Zhuravlev wrote:
> "make distcheck"
>
> CMake have no this bad concept, in my opinion, if you want to make the
> project you should have a full build environment. (but I don't want to
> argue about it here)

this is not about having a working build environment, it is about having
a fully working and correct source tarball before distributing it as a
new release.

What "make distcheck" does is an end-to-end check of the configuration
and build process itself.

So what it does is:

* create a source tarball, putting the version number given in
configure.ac into the tarball name

* unpack the source tarball in a temporary directory, make
everything read-only

* create a build directory, run "configure" in there

* build with "make"

* run project test suite with "make check"

* run "make install" into a tmp directory, then "make uninstall",
to check that installation works, and that uninstall removes
everything again

* run "make distclean" to check that cleanup really works as expected

So things spotted by this are e.g.

* missing files that didn't end up in the src tarball ("works on my
computer")

* files being created in srcdir instead of builddir during build

* installed files missed by uninstall (ok, CMake developers have a
strong opinion about "make uninstall anyway)

* generated files that are not properly getting cleaned up

* ... more things ***

Especially the srcdir vs builddir is one I'm missing very much with
CMake, it happened several times that such problems have slipped
through in MySQL and MariaDB releases, and I've seen it in other
projects using CMake, too

--
hartmut


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Craig Ringer <craig(at)2ndquadrant(dot)com>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Darafei Komяpa Praliaskouski <me(at)komzpa(dot)net>, Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-04-30 01:55:46
Message-ID: CANiD2e-DvaK0ZpFWx4ki_gLywCq7L8-5VX+esS1ca6LfqUu8Rw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

>
> Which is nice
>

OK

Again, nice

> Yeah, that's nice

I already use CMake

I'd do it, personally
>

I suppose we have no one silver bullet reason to change autoconf+make to
CMake but it's cumulative impression.

Also, I suppose this thread started to resolve at least one small question.
It's should be something like voting, but I see here only a few people and
your and Tom's
answers very strange, you can't say definitely yes or no and you more
thinking about another people who not exist here.

----
Some specific anwers:

Again, nice, but does that solve a real current problem?
>

This is main reason why PGXS on windows not exist, also it's solve problems
with differents between MSVC versions and future releases.

Yeah, that's nice, but again, what're the real world benefits?
>

it's just convinient, for easy work with Xcode for example.

Also, most people working on PostgreSQL are probably less bothered by
> the terminal.
>

It's another one reson why windows users and students don't want to hack
Postgres.

Yep. FWIW, I already use CMake for some PostgreSQL extensions because
> of PGXS limitations and Windows support.
>

And now, it can be problem if your postgres build by mingw or llvm for
example. (even under MSVC you can use clang now)
Enviroment start change quickly and it's too much efforts to support all
this by yourself.


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>
Cc: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-04-30 02:01:14
Message-ID: CANiD2e8_Ae7V9MizKi5FWdk4Pt7k3c0KpBZ9-ADiQb=7WSkLBQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

>
> this is not about having a working build environment, it is about having
> a fully working and correct source tarball before distributing it as a
> new release.

Sorry, I did not understand correctly it before.
I suppose it's not big problem especial if you have CI and tests farm.
And anyway in Postgres distcheck is handmade code and you can make the same
script for CMake too:
https://github.com/stalkerg/postgres_cmake/blob/cmake/GNUmakefile.in#L111

and it's not working for windows. ;)
You should forget about Postgres as common Autotools project.


From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-01 16:19:28
Message-ID: CA+TgmoaBeLsTn6KG8cm8kZYS+_MAQWgYWRB=nvR=iXjH-Y-=3Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Fri, Apr 27, 2018 at 5:46 AM, Hartmut Holzgraefe
<hartmut(dot)holzgraefe(at)gmail(dot)com> wrote:
> I could probably continue with this brain dump forever, ...

I found your brain dump an interesting read, and I have to say that it
leaves me rather uninspired about making a change. It sounds to me
like if we change, some things will be better and others will not be
as good. The good news is that if we decide to change, it sounds like
we won't be a lot worse off than we are today. The bad news is that
it doesn't sound like we'll be a lot better off, either.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


From: Andres Freund <andres(at)anarazel(dot)de>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-01 16:31:45
Message-ID: 20180501163145.mktuyk3pf2nwc3kg@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 2018-05-01 12:19:28 -0400, Robert Haas wrote:
> On Fri, Apr 27, 2018 at 5:46 AM, Hartmut Holzgraefe
> <hartmut(dot)holzgraefe(at)gmail(dot)com> wrote:
> > I could probably continue with this brain dump forever, ...
>
> I found your brain dump an interesting read, and I have to say that it
> leaves me rather uninspired about making a change. It sounds to me
> like if we change, some things will be better and others will not be
> as good. The good news is that if we decide to change, it sounds like
> we won't be a lot worse off than we are today. The bad news is that
> it doesn't sound like we'll be a lot better off, either.

How is being able to build extensions on windows reasonably not an
improvement? It's really hard to build pgxs like stuff on windows right
now. Also not having to maintain a fair amount of visual studio project
generation code? And getting faster builds that don't suffer from weird
parallelism issues because dependencies can't be expressed properly in
parallel make? ...

It seems fair to argue that it's not worth the pain to get there, but
how it'd not be an improvement to be there I really don't get.

Greetings,

Andres Freund


From: Geoff Winkless <pgsqladmin(at)geoff(dot)dj>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: hartmut(dot)holzgraefe(at)gmail(dot)com, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-01 16:41:49
Message-ID: CAEzk6fdusQATrQWEbnUTnwgugdLU2go70qSoqvRWH0Qko162vg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

I'd like to add my 2c that, as a user who has to support postgres running
on some fairly old systems, changing to a modern build mechanism (with all
the resultant dependency hell that it would likely introduce) would be
likely to cause me much grief.

At the moment I can still log in to the old RH Shrike box I keep
specifically for building for older systems (it does admittedly have a more
recent gcc, but even building that was a trial) and build Postgres from
source. Unless I've misunderstood I strongly doubt that would still be the
case with the changes being discussed here.

Geoff

On Tue, 1 May 2018 at 17:19, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:

> On Fri, Apr 27, 2018 at 5:46 AM, Hartmut Holzgraefe
> <hartmut(dot)holzgraefe(at)gmail(dot)com> wrote:
> > I could probably continue with this brain dump forever, ...
>
> I found your brain dump an interesting read, and I have to say that it
> leaves me rather uninspired about making a change. It sounds to me
> like if we change, some things will be better and others will not be
> as good. The good news is that if we decide to change, it sounds like
> we won't be a lot worse off than we are today. The bad news is that
> it doesn't sound like we'll be a lot better off, either.
>
> --
> Robert Haas
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>


From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-01 16:44:38
Message-ID: CA+TgmobeZSA7BvwU+2TfaPUs500zzsurEvPXA1B_1o7d3LvA-g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Tue, May 1, 2018 at 12:31 PM, Andres Freund <andres(at)anarazel(dot)de> wrote:
> How is being able to build extensions on windows reasonably not an
> improvement? It's really hard to build pgxs like stuff on windows right
> now. Also not having to maintain a fair amount of visual studio project
> generation code? And getting faster builds that don't suffer from weird
> parallelism issues because dependencies can't be expressed properly in
> parallel make? ...

Sure, those are notable advantages. Thanks for articulating them so clearly.

> It seems fair to argue that it's not worth the pain to get there, but
> how it'd not be an improvement to be there I really don't get.

Well that's probably because you understand cmake. I don't.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-01 16:46:09
Message-ID: 902.1525193169@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Andres Freund <andres(at)anarazel(dot)de> writes:
> On 2018-05-01 12:19:28 -0400, Robert Haas wrote:
>> I found your brain dump an interesting read, and I have to say that it
>> leaves me rather uninspired about making a change. It sounds to me
>> like if we change, some things will be better and others will not be
>> as good. The good news is that if we decide to change, it sounds like
>> we won't be a lot worse off than we are today. The bad news is that
>> it doesn't sound like we'll be a lot better off, either.

> How is being able to build extensions on windows reasonably not an
> improvement?

That indeed would be an improvement, but maybe we could fix that specific
pain point without having to throw away twenty years worth of work?

The amount of accumulated knowledge we've got in the existing build system
is slightly staggering ... so I'm afraid that moving to a different one
would involve a lot of expensive re-invention of portability hacks.

Of course, blowing off support for any platform not released in the
last five years would cut down on the number of such hacks that we'd
need to reinvent. But that's not a tradeoff I especially like either.

regards, tom lane


From: Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Andres Freund <andres(at)anarazel(dot)de>, Robert Haas <robertmhaas(at)gmail(dot)com>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-01 20:19:43
Message-ID: CAA8=A7-6kVOKuDorGJFj-5NkaQLTR7d6y5aF2FikPWx3Kevh6w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Tue, May 1, 2018 at 12:46 PM, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> Andres Freund <andres(at)anarazel(dot)de> writes:
>> On 2018-05-01 12:19:28 -0400, Robert Haas wrote:
>>> I found your brain dump an interesting read, and I have to say that it
>>> leaves me rather uninspired about making a change. It sounds to me
>>> like if we change, some things will be better and others will not be
>>> as good. The good news is that if we decide to change, it sounds like
>>> we won't be a lot worse off than we are today. The bad news is that
>>> it doesn't sound like we'll be a lot better off, either.
>
>> How is being able to build extensions on windows reasonably not an
>> improvement?
>
> That indeed would be an improvement, but maybe we could fix that specific
> pain point without having to throw away twenty years worth of work?
>

Indeed. It's possibly today to use CMake without a huge amount of
difficulty to build extensions out of tree against MSVC-built
postgres. This was more or less the topic of my talk on Ottawa last
year, based on some excellent work by Craig Ringer. To my certain
knowledge this is being used successfully today. Testing is a
different story, but building is a nut that's more or less been
cracked.

There is also the point that EDB, according to my understanding, is
considering moving back, or has perhaps already moved back, to
Msys/Mingw-64 based builds, due to the runtime hell that MSVC can get
you into. And we know perfectly well how to build extensions out of
tree against such a build. You do it just like on Unix.

> The amount of accumulated knowledge we've got in the existing build system
> is slightly staggering ... so I'm afraid that moving to a different one
> would involve a lot of expensive re-invention of portability hacks.
>
> Of course, blowing off support for any platform not released in the
> last five years would cut down on the number of such hacks that we'd
> need to reinvent. But that's not a tradeoff I especially like either.
>

No, me either.

CMake is hardly a bed of roses, either, BTW.

cheers

andrew

--
Andrew Dunstan https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Geoff Winkless <pgsqladmin(at)geoff(dot)dj>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-01 23:57:57
Message-ID: CANiD2e8NK=H06XREGEzP1gucisxPu_=ZZVi6o+HUGtjsmiF-+A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Hello Geoff!

About cmake:
1. You can still use the binary build for your system.
2. You can still build Postgres from source and with old gcc, you need only
install cmake (it's very easy) Only most modern versions of CMake depend on
modern gcc. I have good experience with old Solaris and AIX. (I mean build
Postgres by current cmake branch).
3. You can try and put your impressions on issue tracker on github.

Thanks.

2018-05-02 1:41 GMT+09:00 Geoff Winkless <pgsqladmin(at)geoff(dot)dj>:

> I'd like to add my 2c that, as a user who has to support postgres running
> on some fairly old systems, changing to a modern build mechanism (with all
> the resultant dependency hell that it would likely introduce) would be
> likely to cause me much grief.
>
> At the moment I can still log in to the old RH Shrike box I keep
> specifically for building for older systems (it does admittedly have a more
> recent gcc, but even building that was a trial) and build Postgres from
> source. Unless I've misunderstood I strongly doubt that would still be
> the case with the changes being discussed here.
>
> Geoff
>
> On Tue, 1 May 2018 at 17:19, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
>
>> On Fri, Apr 27, 2018 at 5:46 AM, Hartmut Holzgraefe
>> <hartmut(dot)holzgraefe(at)gmail(dot)com> wrote:
>> > I could probably continue with this brain dump forever, ...
>>
>> I found your brain dump an interesting read, and I have to say that it
>> leaves me rather uninspired about making a change. It sounds to me
>> like if we change, some things will be better and others will not be
>> as good. The good news is that if we decide to change, it sounds like
>> we won't be a lot worse off than we are today. The bad news is that
>> it doesn't sound like we'll be a lot better off, either.
>>
>> --
>> Robert Haas
>> EnterpriseDB: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>>


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Andres Freund <andres(at)anarazel(dot)de>, Robert Haas <robertmhaas(at)gmail(dot)com>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-02 00:12:48
Message-ID: CANiD2e8M6N=gcySht_UR+ipJ+xSFvqx=ahookkZXba-dMJ2ZEg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

>
> That indeed would be an improvement, but maybe we could fix that specific
> pain point without having to throw away twenty years worth of work?

Indeed! Only a few thousands of lines of code can generate the whole you
manually wrote, it's the perfect result!

re-invention of portability hacks
>

This is the main goal for migrating to cmake - most of hacks cmake takes on
itself.

Of course, blowing off support for any platform not released in the
> last five years would cut down on the number of such hacks that we'd
> need to reinvent.
>

I suppose it's wrong goal and speculations:
1. 5 years old system we can support out of a box, it should just work.
2. up to 10 years will support too but maybe with some small extra actions
from users. (for example, even now windows user should do tons of extra
actions to build postgres)
3. >10 I think can work but it's should be the enthusiasm of some users, we
shouldn't worry about it.

I think ten years plus open doors for more it's not same as just 5 years.
This looks like a good trade-off.


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andres Freund <andres(at)anarazel(dot)de>, Robert Haas <robertmhaas(at)gmail(dot)com>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-02 00:20:51
Message-ID: CANiD2e-0ef6v_3xRAOPXcKZ+-oKkPv+pyRVngGRnzuGh0iipXg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

> Indeed. It's possibly today to use CMake without a huge amount of
difficulty to build extensions out of tree against MSVC-built
postgres.

How? All builds what I saw was with tons of hacks.
On windows, Postgres can build against Mingw, many versions of MSVC and etc
Also, you can build Postgres without some features or with extra and no
good way to put this knowledge to CMake build system.

At least we should replace Windows build system by cmake and if your worry
about consistency of source files (it's very small problem actually) you
can use current
Perl script to generate files list for CMake, it will be same as your 1.5
build system.


From: Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com>
To: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andres Freund <andres(at)anarazel(dot)de>, Robert Haas <robertmhaas(at)gmail(dot)com>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-02 01:30:29
Message-ID: CAA8=A7_T6p4gNWFvZ=g7E_xysDKC4z-8H+9Y5guvqpWFu24vog@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Tue, May 1, 2018 at 8:20 PM, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com> wrote:
>> Indeed. It's possibly today to use CMake without a huge amount of
> difficulty to build extensions out of tree against MSVC-built
> postgres.
>
>
> How? All builds what I saw was with tons of hacks.

There is a simple example here:
<https://bitbucket.org/adunstan/pg-closed-ranges/src/0475b50ff793ce876a78c96d72903c9793a98fc1/?at=cmake>

No tons of hacks.

> On windows, Postgres can build against Mingw, many versions of MSVC and etc
> Also, you can build Postgres without some features or with extra and no good
> way to put this knowledge to CMake build system.
>
>
> At least we should replace Windows build system by cmake and if your worry
> about consistency of source files (it's very small problem actually) you can
> use current
> Perl script to generate files list for CMake, it will be same as your 1.5
> build system.

That would just add to the knowledge that developers and committers
would need. "One more level of indirection" is rarely the right
solution.

cheers

andrew

--
Andrew Dunstan https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andres Freund <andres(at)anarazel(dot)de>, Robert Haas <robertmhaas(at)gmail(dot)com>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-02 04:16:58
Message-ID: CANiD2e-OGdOkeq2ZMW3mvCSNCLNN=8wPG=qkvAMW9GJet+do0Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

>
> No tons of hacks.
>

And functions too
https://bitbucket.org/adunstan/pg-closed-ranges/raw/0475b50ff793ce876a78c96d72903c9793a98fc1/cmake/FindPostgreSQL.cmake
I mean things like HAVE_LONG_LONG_INT you can't figure out on "configure"
stage without parsing config.h in CMake. Also, maybe I am wrong but you
can't check 32/64 bit consistent between target postgres and your current
environment.
etc and etc

That would just add to the knowledge that developers and committers
> would need. "One more level of indirection" is rarely the right
> solution.
>

A lot of similar projects made this transformation and came to CMake, what
problem with Postgres?


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Catalin Iacob <iacobcatalin(at)gmail(dot)com>
Cc: Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-02 04:26:27
Message-ID: CANiD2e9k7Nd2=uht0_P19pep6hKZjEshrC+vipQVjJQQCZ6xHw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

After small check I found next:
we need gcc 4.8 anyway for libjit and it means RHEL 7 and newer:
https://access.redhat.com/solutions/19458
because 4.8 needed to build LLVM.


From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org,Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>,Catalin Iacob <iacobcatalin(at)gmail(dot)com>
Cc: Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-02 04:31:28
Message-ID: CADA1CB6-81BE-426E-A266-42C096C75F3E@anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On May 1, 2018 9:26:27 PM PDT, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com> wrote:
>After small check I found next:
>we need gcc 4.8 anyway for libjit and it means RHEL 7 and newer:
>https://access.redhat.com/solutions/19458
>because 4.8 needed to build LLVM.

We don't use libjit. As for the llvm stuff - that's an optional dependency. I.e. irrelevant as far as determining baseline requirements is concerned.

Andres
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.


From: Geoff Winkless <pgsqladmin(at)geoff(dot)dj>
To: stalkerg(at)gmail(dot)com
Cc: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-02 10:55:58
Message-ID: CAEzk6feJafW8U4n1upYBfheby0pPLy-LJVpOHVA9KGkXqMTBqA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Wed, 2 May 2018 at 00:57, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com> wrote:

> Hello Geoff!
>
> About cmake:
> 1. You can still use the binary build for your system.
> 2. You can still build Postgres from source and with old gcc, you need
> only install cmake (it's very easy) Only most modern versions of CMake
> depend on modern gcc. I have good experience with old Solaris and AIX. (I
> mean build Postgres by current cmake branch).
> 3. You can try and put your impressions on issue tracker on github.
>

​First, please don't top post.

Second, I can't "use the binary build", there isn't one for the systems I'm
talking about.

Third​, as you said, newer cmake refuses to build on this system.
Admittedly v2 built fine, but how long until someone tells me something
like "oh well, we need to use bracket arguments otherwise our files are
terribly hard to read so you need v3. It shouldn't be that hard to build,
you only need to compile gcc 4, and that's at least 5 years old, so it's
time you upgraded".

Being blunt, unless I've missed the point all the arguments I've read so
far for cmake seem to be advantages for the developers, not the users. As
developers who put in your time you are of course entitled to make your
lives easier but I'm just making the counterpoint that if you do so at the
expense of your users you lose a certain amount of goodwill. It's up to you
all how much that matters.

Geoff


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Geoff Winkless <pgsqladmin(at)geoff(dot)dj>
Cc: stalkerg(at)gmail(dot)com, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-02 14:22:55
Message-ID: 16797.1525270975@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Geoff Winkless <pgsqladmin(at)geoff(dot)dj> writes:
> Being blunt, unless I've missed the point all the arguments I've read so
> far for cmake seem to be advantages for the developers, not the users. As
> developers who put in your time you are of course entitled to make your
> lives easier but I'm just making the counterpoint that if you do so at the
> expense of your users you lose a certain amount of goodwill. It's up to you
> all how much that matters.

Yeah, one of the things that I find to be a very significant turn-off in
these proposals is that they'd break the "configure; make; make install"
ritual that so many people are accustomed to. User-unfriendly decisions
like cmake's approach to configuration switches (-D? really?) are icing
on top of what's already an un-tasty cake.

What we do internally is our business, but these things are part of the
package's API in a real sense. Changing them has a cost, one that's not
all borne by us.

regards, tom lane


From: Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-02 14:48:39
Message-ID: 01ad1630-ebfe-c63f-5de1-57a85cf99328@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 02.05.2018 16:22, Tom Lane wrote:
> (-D? really?)

it's worse ... "cmake -L" only produces a alphabetically sorted list
of known -D settings, just listing the names without description.

That's so far behind from what

./configure --help

produces.

(And don't get me started on cmake-gui. One day I may even eventually
complete my "autotools-gui" ... https://github.com/hholzgra/autogui )

But at least on most Linux distributions TAB completion now works for
CMake -D options these days ...

--
hartmut


From: Robert Haas <robertmhaas(at)gmail(dot)com>
To: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andres Freund <andres(at)anarazel(dot)de>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-02 15:44:04
Message-ID: CA+TgmoYKid5rAOS+aqXHf_fEs-5aL-+mnFGb_FmfBRK-6Ba_KQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Tue, May 1, 2018 at 8:12 PM, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com> wrote:
>> That indeed would be an improvement, but maybe we could fix that specific
>> pain point without having to throw away twenty years worth of work?
>
> Indeed! Only a few thousands of lines of code can generate the whole you
> manually wrote, it's the perfect result!

I don't think that unsubstantiated hyperbole is the right way to
approach the task of convincing the community to adopt the approach
you prefer. I don't see that any compelling evidence has been
presented that a cmake-based solution would really save thousands of
lines of code. True, some Perl code that we have now to generate
project files and so forth would go away, but I bet we'll end up
adding new code someplace else because of something-or-other that
doesn't work the same under cmake that it does under the current build
system. For example:

>> re-invention of portability hacks
> This is the main goal for migrating to cmake - most of hacks cmake takes on
> itself.

Whatever hacks cmake *doesn't* handle will have to be reimplemented in
the cmake framework, and frankly, if history is any indication, we'll
be very lucky indeed if whoever submits the cmake patches is willing
to follow up on the things that break over the days, weeks, months,
years that follow the original commit. More likely, after the first
few commits, or perhaps the first few months, they'll move on to their
next project and leave it to the committers to sort out whatever stuff
turns out to be broken later. And very likely, too, they'll not
handle all the changes that are needed on the buildfarm side of
things, and maybe the PGXN side of things if that needs changes, and
they certainly won't update every third-party module in existence to
use the cmake framework. Accepting a patch to support cmake means
some amount of work and adaptation will need to be done by hundreds of
developers on both the core PostgreSQL code base and various other
code bases, open source and proprietary. Now it's probably not a lot
of work for any individual person, but it's a lot of work and
disruption over all. It has to be worth it.

Now, I grant that my ears perked up when Andres mentioned making
parallel make work better. I don't build on Windows so that issue
doesn't affect me personally -- it's great if it can be made to work
better with or without cmake but I don't have a view on the best way
forward. But having parallel make work better and more efficiently
and with fewer hard-to-diagnose failure modes would definitely be
nice.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


From: Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>
To: Robert Haas <robertmhaas(at)gmail(dot)com>, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andres Freund <andres(at)anarazel(dot)de>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-02 21:43:50
Message-ID: 5febd8b7-5ef3-8536-bafc-f0690dde2aa0@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 02.05.2018 17:44, Robert Haas wrote:
> But having parallel make work better and more efficiently
> and with fewer hard-to-diagnose failure modes would definitely be
> nice.

that's especially a thing I haven't seen in "our" environment,
this was an area where autotools and cmake didn't really differ,
at least not for the Unix/Makefile side of things.

The only thing about parallelism I remember that it sometimes
doesn't work well with the progress percentage output of cmake
generated makefiles ... but that's purely cosmetic.

--
hartmut


From: Andres Freund <andres(at)anarazel(dot)de>
To: Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-02 21:58:01
Message-ID: 20180502215801.awej3ig2lwp6w3yy@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 2018-05-02 23:43:50 +0200, Hartmut Holzgraefe wrote:
> On 02.05.2018 17:44, Robert Haas wrote:
> > But having parallel make work better and more efficiently
> > and with fewer hard-to-diagnose failure modes would definitely be
> > nice.
>
> that's especially a thing I haven't seen in "our" environment,
> this was an area where autotools and cmake didn't really differ,
> at least not for the Unix/Makefile side of things.

Recursive make like ours can't do full parallelism because dependencies
can't be fully expressed. With cmake that's not an issue. And its ninja
generator ends up being considerably faster than makefiles.

Now you could argue that we could just rewrite to non-recursive
make. But that'd be nearly as much work as migrating to another
buildsystem.

Greetings,

Andres Freund


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-02 22:14:50
Message-ID: 9224.1525299290@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Andres Freund <andres(at)anarazel(dot)de> writes:
> Now you could argue that we could just rewrite to non-recursive
> make. But that'd be nearly as much work as migrating to another
> buildsystem.

I'm sure it'd be a significant amount of work ... but it wouldn't require
redesigning any configuration or portability hacks, nor any change in
tool prerequisites, and at least in principle it wouldn't require changes
in users' build scripts. So I think claiming it's as expensive as
migrating to cmake is almost certainly wrong.

(I don't know offhand if tricks like "build plpython only" would
still work unchanged, but that's a sufficiently niche usage that
I'd not be too concerned about making those people adapt their
scripts.)

regards, tom lane


From: Catalin Iacob <iacobcatalin(at)gmail(dot)com>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andres Freund <andres(at)anarazel(dot)de>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-02 22:32:39
Message-ID: CAHg_5goEvd0CFdNh-XST_=0BrB4_kFYEByNAKDY4ROwHrUuUYw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Wed, May 2, 2018 at 5:44 PM, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
> I don't think that unsubstantiated hyperbole is the right way to
> approach the task of convincing the community to adopt the approach
> you prefer. I don't see that any compelling evidence has been
> presented that a cmake-based solution would really save thousands of
> lines of code.

Let me try to list the advantages as I see them.

* ability to use ninja
** meson's requirement to use ninja might be a disadvantage but
ability to use is definitely good
** faster than make - the difference is really noticeable
** good dependency story, parallel everything
** simply a very nice developer experience, for example the screen
is not filled with scrolling lines instead progress updates shown as
x/y files to go, currently at file z; try it and you'll see what I
mean
** I got interested in the ninja for PG and therefore CMake or meson
after trying clang-cl.exe for PG on Windows. clang-cl.exe is a drop in
open source replacement for Microsoft's cl.exe but using it does not
interact well with the fact that MSBuild runs only one cl.exe with
lots of .c files as input and expects cl.exe to handle the parallelism
while clang-cl.exe does not handle any parallelism taking the position
that the build system should handle that. Being able to invoke
clang-cl.exe from ninja instead of MSBuild would make fast compilation
with clang-cl.exe easy while now only slow serial compilation is
possible.

* IDE integration:
** cmake and meson can generate XCode and Visual Studio, granted
Visual Studio already works via the MSVC scripts
** CLion can consume cmake giving a good IDE story on Linux which PG
currently lacks

* get rid of the ad-hoc MSVC generation Perl scripts
** granted, I looked at those recently in the clang-cl context above
and they're reasonably understandable/approachable even without
knowing too much Perl

* appeal to new developers
** I think it's not a controversial statement that, as time passes,
autotools and make syntax are seen more and more as arcane things that
only old beards know how to handle and that the exciting stuff moved
elsewhere; in the long run this is a real problem
** on the other hand, as an autotools almost complete novice, after
reading some autotools docs, I was pleasantly surprised at how small
and easy to follow Andres' build patch adding LLVM and C++ support
was, especially as it's doing big, non conventional changes: add
support for another compiler but in a specific "emit LLVM bitcode"
mode, add support for C++ etc. So autoconf ugliness is not that big of
a deal but perception does matter.

* PGXS on Windows
** could be solvable without moving wholesale

From the above, I would rate ninja as a high nice to have, IDE, PGXS
on Windows and new developers as medium high nice to haves (but see
below for long term concerns) and no MSVC Perl scripts as low nice to
have.

I started the thread as it seemed to me energy was consumed to move to
another system (proof of concept and discussions) while it wasn't even
clarified whether a new system isn't a complete no go due to the old
platforms PG supports. I find Tom's and Robert's position of
"acceptable but we would need to see real benefits as there definitely
are real downsides" perfectly reasonable. The build system dictating
platform support would indeed be the tail wagging the dog. Personally,
with the current information I'd not vote for switching to another
system, mainly because I ultimately think developer convenience should
not trump end user benefits.

I do have a real concern about the long term attractiveness of the
project to new developers, especially younger ones as time passes.
It's not a secret that people will just avoid creaky old projects, and
for Postgres old out of fashion things do add up: autoconf, raw make,
Perl for tests, C89, old platform support. I have no doubt that the
project is already loosing competent potential developers due to this.
One can say this is superficial and those developers should look at
the important things but that does not change reality that some will
just say pass because of dislike of the old technologies I mentioned.
Personally, I can say that if the project were still in CVS I would
probably not bother as I just don't have energy to learn an inferior
old version control system especially as I see version control as
fundamental to a developer. I don't feel the balance between
recruiting new developers and end user benefits tilted enough to
replace the build system but maybe in some years that will be the
case.


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andres Freund <andres(at)anarazel(dot)de>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-03 00:29:32
Message-ID: CANiD2e8vO-UJ+A6aCPCe+e0wAGzdbOd4xv3kLq0nNaNT-xCLQQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

>
> I don't think that unsubstantiated hyperbole is the right way to
> approach the task of convincing the community to adopt the approach
> you prefer.

It's not a hyperbole it's fact and I even talked about it on conference.
You should just compare all my cmake files with Makefile+.in+.m4 (and msvc
folder) it was significant reduce code to maintain.
Anyway all my intention in this field it's to reduce pain and reduce suppor
time for build system.
Curren state:

cat `find ./ | grep '\.in\|\.m4\|Makefile\|\/msvc\/'` | wc
22942 76111 702163

cat `find ./ | grep 'CMakeLists\|\.cmake'` | wc
9160 16604 278061

and also, I use code style when a source file names every time on new
line... it's serious increase numbers of line.
If compare the same style as in Makefile it will be ~3000 (you can just
compare words ;) )

Regards.


From: Andres Freund <andres(at)anarazel(dot)de>
To: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-03 00:32:37
Message-ID: 20180503003237.c3ovwqj6ng4kx2mx@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 2018-05-03 09:29:32 +0900, Yuriy Zhuravlev wrote:
> >
> > I don't think that unsubstantiated hyperbole is the right way to
> > approach the task of convincing the community to adopt the approach
> > you prefer.
>
>
> It's not a hyperbole it's fact and I even talked about it on conference.
> You should just compare all my cmake files with Makefile+.in+.m4 (and msvc
> folder) it was significant reduce code to maintain.
> Anyway all my intention in this field it's to reduce pain and reduce suppor
> time for build system.
> Curren state:
>
> cat `find ./ | grep '\.in\|\.m4\|Makefile\|\/msvc\/'` | wc
> 22942 76111 702163
>
> cat `find ./ | grep 'CMakeLists\|\.cmake'` | wc
> 9160 16604 278061

Given that you don't have feature parity this just seems like trolling.

> and also, I use code style when a source file names every time on new
> line... it's serious increase numbers of line.
> If compare the same style as in Makefile it will be ~3000 (you can just
> compare words ;) )

Right, because m4 is uses so few lines.


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-03 00:42:49
Message-ID: CANiD2e9Ss0y75V7uXmJ=2m6gvqtTOvg8+vPo3a6D1Min5D-WQw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

2018-05-03 9:32 GMT+09:00 Andres Freund <andres(at)anarazel(dot)de>:

> On 2018-05-03 09:29:32 +0900, Yuriy Zhuravlev wrote:
> > >
> > > I don't think that unsubstantiated hyperbole is the right way to
> > > approach the task of convincing the community to adopt the approach
> > > you prefer.
> >
> >
> > It's not a hyperbole it's fact and I even talked about it on conference.
> > You should just compare all my cmake files with Makefile+.in+.m4 (and
> msvc
> > folder) it was significant reduce code to maintain.
> > Anyway all my intention in this field it's to reduce pain and reduce
> suppor
> > time for build system.
> > Curren state:
> >
> > cat `find ./ | grep '\.in\|\.m4\|Makefile\|\/msvc\/'` | wc
> > 22942 76111 702163
> >
> > cat `find ./ | grep 'CMakeLists\|\.cmake'` | wc
> > 9160 16604 278061
>
> Given that you don't have feature parity this just seems like trolling.
>

I have. I have some lacks with .po generation and documentation but all!
other features same, I even can run tap tests.
Look into my task issue list
https://github.com/stalkerg/postgres_cmake/issues it's can increase number
of lines maximum on 10%.


From: Andres Freund <andres(at)anarazel(dot)de>
To: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-03 00:52:00
Message-ID: 20180503005200.htvxyvtxcdecpf4z@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 2018-05-03 09:42:49 +0900, Yuriy Zhuravlev wrote:
> 2018-05-03 9:32 GMT+09:00 Andres Freund <andres(at)anarazel(dot)de>:
> > Given that you don't have feature parity this just seems like trolling.
> >
>
> I have. I have some lacks with .po generation and documentation but all!
> other features same, I even can run tap tests.
> Look into my task issue list
> https://github.com/stalkerg/postgres_cmake/issues it's can increase number
> of lines maximum on 10%.

You detect like a third of the things that the old configure
detected. Most of the comments of converted tests are missing. The
thread safety check definitely aren't comparable. The int128 type checks
aren't comparable. No LLVM detection. The atomics check don't guard
against compilers that allow to reference undefined functions at compile
time. That's like a 60s scan of what you have. Sorry, but comparing
lines at that state is just bullshit.

Greetings,

Andres Freund


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-03 01:49:43
Message-ID: CANiD2e9T1s=tOzE6=HEXpCQwODZQmiHJwifMG3iuNxKHkU+knw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

>
> Sorry, but comparing lines at that state is just bullshit.

I totally disagree, proportions will be same in any case.

Most of the comments of converted tests are missing.
>

Add 100-500 lines? ok.

You detect like a third of the things that the old configure
> detected.
>

I tried to use CMake way when it exists but for some other things, I
porting checking from old autoconf system.

The
> thread safety check definitely aren't comparable. The int128 type checks
> aren't comparable.
>

The atomics check don't guard
> against compilers that allow to reference undefined functions at compile
> time.

I am not sure about "comparable", but anyway you can make PR with a fix
or at least make an issue in my tracker and I fix it.

No LLVM detection.
>

Sure! Because my code base still on postgres 10. After all words about new
build system and cmake here, I have no plan to support not
released versions. I am not a masochist...

Regards,


From: Pavel Golub <pavel(at)microolap(dot)com>
To: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Darafei Komяpa Praliaskouski <me(at)komzpa(dot)net>, Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-03 07:50:02
Message-ID: 342450821.20180503105002@gf.microolap.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Hello, Yuriy.

You wrote:

YZ>  (2) it might make things easier on Windows,
YZ> which could be a sufficiently good reason but I don't think I've seen
YZ> anyone explain exactly how much easier it will make things and in what
YZ> ways.

YZ> 1. You can remove tools/msvc folder because all your build rules
YZ> will be universal. (cmake build now have much fewer lines of code)
YZ> 2. You can forget about terminal in Windows (for windows guys it's important)
YZ> 3. You can normally check environment on Windows, right now we
YZ> have hardcoded headers and many options. Configure process will be same on all platforms.
YZ> 4. You can generate not only GNU Make or MSVC project, you also
YZ> can make Xcode projects, Ninja or NMake for build under MSVC Make.
YZ> For Windows, you also can easily change MSVC to Clang it's not hardcoded at all. 
YZ> 5. With CMake you have an easy way to build extra modules
YZ> (plugins), I have already working prototype for windows PGXS.  A
YZ> plugin should just include .cmake file generated with Postgres build.
YZ> Example:
YZ> https://github.com/stalkerg/postgres_cmake/blob/cmake/contrib/adminpack/CMakeLists.txt
YZ> If PGXS is True it's mean we build module outside postgres.

Cool! Thanks for pointing this out. I just had problems building PG
extensions for Windows. So I switched to MSYS2 and only then I managed
that. No chance for MSVC :(

YZ> But in my opinion, you should just try CMake to figure out all benefits.

>> we can't judge whether they do without a clear explanation of what the gains will be

YZ> I think it's not that thing what easy to explain. Main benefits
YZ> not in unix console area and C language...

--
With best wishes,
Pavel mailto:pavel(at)gf(dot)microolap(dot)com


From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Catalin Iacob <iacobcatalin(at)gmail(dot)com>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Andres Freund <andres(at)anarazel(dot)de>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-18 02:44:44
Message-ID: 20180518024444.GC2793@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Thu, May 3, 2018 at 12:32:39AM +0200, Catalin Iacob wrote:
> I do have a real concern about the long term attractiveness of the
> project to new developers, especially younger ones as time passes.
> It's not a secret that people will just avoid creaky old projects, and
> for Postgres old out of fashion things do add up: autoconf, raw make,
> Perl for tests, C89, old platform support. I have no doubt that the
> project is already loosing competent potential developers due to this.
> One can say this is superficial and those developers should look at
> the important things but that does not change reality that some will
> just say pass because of dislike of the old technologies I mentioned.
> Personally, I can say that if the project were still in CVS I would
> probably not bother as I just don't have energy to learn an inferior
> old version control system especially as I see version control as
> fundamental to a developer. I don't feel the balance between
> recruiting new developers and end user benefits tilted enough to
> replace the build system but maybe in some years that will be the
> case.

What percentage of our adoption decline from new developers is based on
our build system, and how much of it is based on the fact we use the C
language?

--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ As you are, so once was I. As I am, so you will be. +
+ Ancient Roman grave inscription +


From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org,Bruce Momjian <bruce(at)momjian(dot)us>,Catalin Iacob <iacobcatalin(at)gmail(dot)com>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>,Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>,Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>,Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>,PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-18 03:10:33
Message-ID: 0F49DBD9-9767-43D3-86A9-6135F174FB03@anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On May 17, 2018 7:44:44 PM PDT, Bruce Momjian <bruce(at)momjian(dot)us> wrote:
>On Thu, May 3, 2018 at 12:32:39AM +0200, Catalin Iacob wrote:
>> I do have a real concern about the long term attractiveness of the
>> project to new developers, especially younger ones as time passes.
>> It's not a secret that people will just avoid creaky old projects,
>and
>> for Postgres old out of fashion things do add up: autoconf, raw make,
>> Perl for tests, C89, old platform support. I have no doubt that the
>> project is already loosing competent potential developers due to
>this.
>> One can say this is superficial and those developers should look at
>> the important things but that does not change reality that some will
>> just say pass because of dislike of the old technologies I mentioned.
>> Personally, I can say that if the project were still in CVS I would
>> probably not bother as I just don't have energy to learn an inferior
>> old version control system especially as I see version control as
>> fundamental to a developer. I don't feel the balance between
>> recruiting new developers and end user benefits tilted enough to
>> replace the build system but maybe in some years that will be the
>> case.
>
>What percentage of our adoption decline from new developers is based on
>our build system, and how much of it is based on the fact we use the C
>language?

I think neither is as strong a factor as our weird procedures and slow review. People are used to github pull requests, working bug trackers, etc. I do think that using more modern C or a reasonable subset of C++would make things easier. Don't think there's really an alternative there quite yet.

Andres

Andres
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.


From: Craig Ringer <craig(at)2ndquadrant(dot)com>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Bruce Momjian <bruce(at)momjian(dot)us>, Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-18 03:50:47
Message-ID: CAMsr+YGHBv1zi8GKgXAeyxGXySfuZ2sp9L5pq012j9_0dS4NhQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 18 May 2018 at 11:10, Andres Freund <andres(at)anarazel(dot)de> wrote:

>
>
> On May 17, 2018 7:44:44 PM PDT, Bruce Momjian <bruce(at)momjian(dot)us> wrote:
> >On Thu, May 3, 2018 at 12:32:39AM +0200, Catalin Iacob wrote:
> >> I do have a real concern about the long term attractiveness of the
> >> project to new developers, especially younger ones as time passes.
> >> It's not a secret that people will just avoid creaky old projects,
> >and
> >> for Postgres old out of fashion things do add up: autoconf, raw make,
> >> Perl for tests, C89, old platform support. I have no doubt that the
> >> project is already loosing competent potential developers due to
> >this.
> >> One can say this is superficial and those developers should look at
> >> the important things but that does not change reality that some will
> >> just say pass because of dislike of the old technologies I mentioned.
> >> Personally, I can say that if the project were still in CVS I would
> >> probably not bother as I just don't have energy to learn an inferior
> >> old version control system especially as I see version control as
> >> fundamental to a developer. I don't feel the balance between
> >> recruiting new developers and end user benefits tilted enough to
> >> replace the build system but maybe in some years that will be the
> >> case.
> >
> >What percentage of our adoption decline from new developers is based on
> >our build system, and how much of it is based on the fact we use the C
> >language?
>
> I think neither is as strong a factor as our weird procedures and slow
> review. People are used to github pull requests, working bug trackers,
> etc. I do think that using more modern C or a reasonable subset of
> C++would make things easier. Don't think there's really an alternative
> there quite yet.
>
>
+10.

Also - mailing lists. We're an ageing community and a lot of younger people
just don't like or use mailing lists, let alone like to work *only* on
mailing lists without forums, issue trackers, etc etc.

I happen to be pretty OK with the status quo, but it's definitely harder to
get involved casually or as a new participant. OTOH, that helps cut down
the noise level of crap suggestions and terrible patches a little bit,
which matters when we have limited review bandwidth.

Then there's the Windows build setup - you can't just fire up Visual Studio
and start learning the codebase.

We also have what seems like half an OS worth of tooling to support our
shared-nothing-by-default multi-processing model. Custom spinlocks, our
LWLocks, our latches, signal based IPC + ProcSignal signal multiplexing,
extension shmem reservation and allocation, DSM, DSA, longjmp based
exception handling and unwinding ... the learning curve for PostgreSQL
programming is a whole lot more than just C even before you get into the
DB-related bits. And there's not a great deal of help with the learning
curve.

I keep wanting to write some blogs and docs on relevant parts, but you know
how it is with time.

The only part that build system changes would help with would be getting
Windows/VS and OSX/XCode users started a little more easily. Which wouldn't
help tons when they looked at our code and went "WTF, where do I find out
what any of this stuff even is?".

(Yes, I know there are some good READMEs already, but often you need to
understand quite a bit of the system before you can understand the
READMEs...)

--
Craig Ringer http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services


From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Craig Ringer <craig(at)2ndquadrant(dot)com>
Cc: Andres Freund <andres(at)anarazel(dot)de>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Bruce Momjian <bruce(at)momjian(dot)us>, Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-18 05:27:16
Message-ID: CAFj8pRAUxXWeX0Kmjmy9zceKoGS+d-hZ=_s0XXGmcXxBrBZ19Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

2018-05-18 5:50 GMT+02:00 Craig Ringer <craig(at)2ndquadrant(dot)com>:

> On 18 May 2018 at 11:10, Andres Freund <andres(at)anarazel(dot)de> wrote:
>
>>
>>
>> On May 17, 2018 7:44:44 PM PDT, Bruce Momjian <bruce(at)momjian(dot)us> wrote:
>> >On Thu, May 3, 2018 at 12:32:39AM +0200, Catalin Iacob wrote:
>> >> I do have a real concern about the long term attractiveness of the
>> >> project to new developers, especially younger ones as time passes.
>> >> It's not a secret that people will just avoid creaky old projects,
>> >and
>> >> for Postgres old out of fashion things do add up: autoconf, raw make,
>> >> Perl for tests, C89, old platform support. I have no doubt that the
>> >> project is already loosing competent potential developers due to
>> >this.
>> >> One can say this is superficial and those developers should look at
>> >> the important things but that does not change reality that some will
>> >> just say pass because of dislike of the old technologies I mentioned.
>> >> Personally, I can say that if the project were still in CVS I would
>> >> probably not bother as I just don't have energy to learn an inferior
>> >> old version control system especially as I see version control as
>> >> fundamental to a developer. I don't feel the balance between
>> >> recruiting new developers and end user benefits tilted enough to
>> >> replace the build system but maybe in some years that will be the
>> >> case.
>> >
>> >What percentage of our adoption decline from new developers is based on
>> >our build system, and how much of it is based on the fact we use the C
>> >language?
>>
>> I think neither is as strong a factor as our weird procedures and slow
>> review. People are used to github pull requests, working bug trackers,
>> etc. I do think that using more modern C or a reasonable subset of
>> C++would make things easier. Don't think there's really an alternative
>> there quite yet.
>>
>>
> +10.
>
> Also - mailing lists. We're an ageing community and a lot of younger
> people just don't like or use mailing lists, let alone like to work *only*
> on mailing lists without forums, issue trackers, etc etc.
>
> I happen to be pretty OK with the status quo, but it's definitely harder
> to get involved casually or as a new participant. OTOH, that helps cut down
> the noise level of crap suggestions and terrible patches a little bit,
> which matters when we have limited review bandwidth.
>
> Then there's the Windows build setup - you can't just fire up Visual
> Studio and start learning the codebase.
>
> We also have what seems like half an OS worth of tooling to support our
> shared-nothing-by-default multi-processing model. Custom spinlocks, our
> LWLocks, our latches, signal based IPC + ProcSignal signal multiplexing,
> extension shmem reservation and allocation, DSM, DSA, longjmp based
> exception handling and unwinding ... the learning curve for PostgreSQL
> programming is a whole lot more than just C even before you get into the
> DB-related bits. And there's not a great deal of help with the learning
> curve.
>
> I keep wanting to write some blogs and docs on relevant parts, but you
> know how it is with time.
>
> The only part that build system changes would help with would be getting
> Windows/VS and OSX/XCode users started a little more easily. Which wouldn't
> help tons when they looked at our code and went "WTF, where do I find out
> what any of this stuff even is?".
>

+1

I have to maintain Orafce and plpgsql_check for MS Windows and it is not
nice work

Pavel

> (Yes, I know there are some good READMEs already, but often you need to
> understand quite a bit of the system before you can understand the
> READMEs...)
>
> --
> Craig Ringer http://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Training & Services
>
>


From: Andres Freund <andres(at)anarazel(dot)de>
To: Craig Ringer <craig(at)2ndquadrant(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Bruce Momjian <bruce(at)momjian(dot)us>, Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-18 05:42:00
Message-ID: 20180518054200.rrf73apbwwkfon23@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Hi,

On 2018-05-18 11:50:47 +0800, Craig Ringer wrote:
> Also - mailing lists. We're an ageing community and a lot of younger people
> just don't like or use mailing lists, let alone like to work *only* on
> mailing lists without forums, issue trackers, etc etc.

Can't see getting rid of those entirely. None of the github style
platforms copes with reasonable complex discussions.

> We also have what seems like half an OS worth of tooling to support our
> shared-nothing-by-default multi-processing model. Custom spinlocks, our
> LWLocks, our latches, signal based IPC + ProcSignal signal multiplexing,
> extension shmem reservation and allocation, DSM, DSA, longjmp based
> exception handling and unwinding ... the learning curve for PostgreSQL
> programming is a whole lot more than just C even before you get into the
> DB-related bits. And there's not a great deal of help with the learning
> curve.

A good chunk of that we'd probably have anyway. Even with threads we'd
likely have our own spinlocks, lwlocks, latches, signal handling,
explict shared memory (for hugepages). I think having a decently
performant DB will always imply a lot of "OS like" infrastructure.

I agree very much on exception handling weirdness - proper language
level exceptions are way much easier to handle, and could offer ease of
use (no volatiles!) and a lot more flexibility (say throwing errors
which signal that no DB level activity happened).

I actually don't think the earlier category is as painful as our
idiosyncracies around C's weaknesses. Lists, Node based types, dynahash
etc. are hard to avoid and failure prone.

Greetings,

Andres Freund


From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: Craig Ringer <craig(at)2ndquadrant(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-18 14:29:33
Message-ID: 20180518142933.GG3088@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Thu, May 17, 2018 at 10:42:00PM -0700, Andres Freund wrote:
> > We also have what seems like half an OS worth of tooling to support our
> > shared-nothing-by-default multi-processing model. Custom spinlocks, our
> > LWLocks, our latches, signal based IPC + ProcSignal signal multiplexing,
> > extension shmem reservation and allocation, DSM, DSA, longjmp based
> > exception handling and unwinding ... the learning curve for PostgreSQL
> > programming is a whole lot more than just C even before you get into the
> > DB-related bits. And there's not a great deal of help with the learning
> > curve.
>
> A good chunk of that we'd probably have anyway. Even with threads we'd
> likely have our own spinlocks, lwlocks, latches, signal handling,
> explict shared memory (for hugepages). I think having a decently
> performant DB will always imply a lot of "OS like" infrastructure.
>

I think threading would definitely make server programming harder.

--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ As you are, so once was I. As I am, so you will be. +
+ Ancient Roman grave inscription +


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Catalin Iacob <iacobcatalin(at)gmail(dot)com>
Cc: PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-28 02:30:32
Message-ID: CANiD2e94AfYRGFrmq7JDHWEN5m7=YGaeZxLS9EGM+k6WgxP4+w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

I suppose I can make summary after reading all this:
1. Any change in the development process will be possible if it will be
convenient for each key developers personally only. (development process
include build system)
2. Currently, almost all key developers use Unix like systems, they have
strong old school C experience and current build system very comfortable
for them.

I think new build system will be possible only by next reasons:
1. Autotools will be completely deprecated and unsupported.
2. Key developers will be changed by people with another experience and
habits (and maybe younger).

I don't want to be CMake advocate here, and I see some problems with CMake
to Postgres project too. But I want to make Postgres development more
comfortable for people like me who also doesn't like mail lists and was
growing with github. Unfortunately, we are too few here to change anything
now.


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: Craig Ringer <craig(at)2ndquadrant(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, bruce(at)momjian(dot)us, Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Hartmut Holzgraefe <hartmut(dot)holzgraefe(at)gmail(dot)com>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-28 02:37:06
Message-ID: CANiD2e_cMsghd-9zH3bpFuF2Z19i5w0jYMO9AHC0LS6Wu6MRsg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

>
> Can't see getting rid of those entirely. None of the github style
> platforms copes with reasonable complex discussions.

I disagree. A good example of complex discussions on github is Rust
language tracker for RFCs:
https://github.com/rust-lang/rfcs/issues
and one concrete example: https://github.com/rust-lang/rfcs/issues/2327
I have no any problem with complex discussions on github.
Anyway, it's much better than tons of emails in your mailbox without tags
and status of discussion.


From: Pierre Ducroquet <p(dot)psql(at)pinaraf(dot)info>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-28 07:42:32
Message-ID: 5128104.C1GyuidneG@peanuts2
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Monday, May 28, 2018 4:37:06 AM CEST Yuriy Zhuravlev wrote:
> > Can't see getting rid of those entirely. None of the github style
> > platforms copes with reasonable complex discussions.
>
> I disagree. A good example of complex discussions on github is Rust
> language tracker for RFCs:
> https://github.com/rust-lang/rfcs/issues
> and one concrete example: https://github.com/rust-lang/rfcs/issues/2327
> I have no any problem with complex discussions on github.

It is indeed hard to follow on github, and would be even worse with bigger
threads.
Email readers show threads in a hierarchical way, we can see who answered to
who, discussions can fork to completely different aspects of an issue without
being mixed together.

> Anyway, it's much better than tons of emails in your mailbox without tags
> and status of discussion.

A github thread does not show what I read / what I have to read, does it now ?


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: p(dot)psql(at)pinaraf(dot)info
Cc: PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-28 08:02:42
Message-ID: CANiD2e95PViTYF5PFDXoBYMsi1QX=rfHt_8gRymq-yJ4=H2bQA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

пн, 28 мая 2018 г. в 16:42, Pierre Ducroquet <p(dot)psql(at)pinaraf(dot)info>:

> On Monday, May 28, 2018 4:37:06 AM CEST Yuriy Zhuravlev wrote:
> > > Can't see getting rid of those entirely. None of the github style
> > > platforms copes with reasonable complex discussions.
> >
> > I disagree. A good example of complex discussions on github is Rust
> > language tracker for RFCs:
> > https://github.com/rust-lang/rfcs/issues
> > and one concrete example: https://github.com/rust-lang/rfcs/issues/2327
> > I have no any problem with complex discussions on github.
>
> It is indeed hard to follow on github, and would be even worse with bigger
> threads.
> Email readers show threads in a hierarchical way, we can see who answered
> to
> who, discussions can fork to completely different aspects of an issue
> without
> being mixed together.
>
Anyway I have no this feature on GMail web interface. But yes, sometimes
it's usefull.
On github you can make new issue and move some messages, it shoud be done
by moderator.

>
> > Anyway, it's much better than tons of emails in your mailbox without tags
> > and status of discussion.
>
> A github thread does not show what I read / what I have to read, does it
> now ?
>
On github you have notifications about new messages in subsribed issues,
and if you follow links from https://github.com/notifications these links
disappear.
Also, don't forget about browser bookmarks and other plugins for that, web
much more flexible than emails.


From: Craig Ringer <craig(at)2ndquadrant(dot)com>
To: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
Cc: p(dot)psql(at)pinaraf(dot)info, PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-28 08:13:35
Message-ID: CAMsr+YH2o4VHvJy2kfNGpNC-=OLrxwWTodCUx4-FQnjddRuEtg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On 28 May 2018 at 16:02, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com> wrote:

> пн, 28 мая 2018 г. в 16:42, Pierre Ducroquet <p(dot)psql(at)pinaraf(dot)info>:
>
>> On Monday, May 28, 2018 4:37:06 AM CEST Yuriy Zhuravlev wrote:
>> > > Can't see getting rid of those entirely. None of the github style
>> > > platforms copes with reasonable complex discussions.
>> >
>> > I disagree. A good example of complex discussions on github is Rust
>> > language tracker for RFCs:
>> > https://github.com/rust-lang/rfcs/issues
>> > and one concrete example: https://github.com/rust-lang/rfcs/issues/2327
>> > I have no any problem with complex discussions on github.
>>
>> It is indeed hard to follow on github, and would be even worse with
>> bigger
>> threads.
>> Email readers show threads in a hierarchical way, we can see who answered
>> to
>> who, discussions can fork to completely different aspects of an issue
>> without
>> being mixed together.
>>
> Anyway I have no this feature on GMail web interface. But yes, sometimes
> it's usefull.
> On github you can make new issue and move some messages, it shoud be done
> by moderator.
>
>
>>
>> > Anyway, it's much better than tons of emails in your mailbox without
>> tags
>> > and status of discussion.
>>
>> A github thread does not show what I read / what I have to read, does it
>> now ?
>>
> On github you have notifications about new messages in subsribed issues,
> and if you follow links from https://github.com/notifications these links
> disappear.
> Also, don't forget about browser bookmarks and other plugins for that, web
> much more flexible than emails.
>

None of which is about the build system.

FWIW, I don't agree with your conclusions re the build system. It's more
than just a bunch of conservative dinosaurs not wanting to change how they
do anything, though you can frame it that way if you like. It's that a
change needs to offer really compelling benefits, and I don't think enough
people are convinced of those benefits.

--
Craig Ringer http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services


From: Magnus Hagander <magnus(at)hagander(dot)net>
To: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
Cc: p(dot)psql(at)pinaraf(dot)info, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-28 09:16:08
Message-ID: CABUevEzKgWEf1hYRw9Q7ksdOPT_2HRNbu1XWQZu_skXK9Oyh+w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Mon, May 28, 2018, 10:03 Yuriy Zhuravlev <stalkerg(at)gmail(dot)com> wrote:

> пн, 28 мая 2018 г. в 16:42, Pierre Ducroquet <p(dot)psql(at)pinaraf(dot)info>:
>
>> On Monday, May 28, 2018 4:37:06 AM CEST Yuriy Zhuravlev wrote:
>> > > Can't see getting rid of those entirely. None of the github style
>> > > platforms copes with reasonable complex discussions.
>> >
>> > I disagree. A good example of complex discussions on github is Rust
>> > language tracker for RFCs:
>> > https://github.com/rust-lang/rfcs/issues
>> > and one concrete example: https://github.com/rust-lang/rfcs/issues/2327
>> > I have no any problem with complex discussions on github.
>>
>> It is indeed hard to follow on github, and would be even worse with
>> bigger
>> threads.
>> Email readers show threads in a hierarchical way, we can see who answered
>> to
>> who, discussions can fork to completely different aspects of an issue
>> without
>> being mixed together.
>>
> Anyway I have no this feature on GMail web interface. But yes, sometimes
> it's usefull.
>

It is correct that Gmail is incapable of this in the web browser. Many
other email systems can though, and Gmail still speaks imap so you can use
those if you prefer.

Which outlines a huge advantage of email as the communications medium. This
allows each and every person to pick a tool and interface that suits them.
Some prefer Gmail web, others mutt, others gnus. And they all work.

With something like github issues everybody is forced to use the same, more
limited, interface,with no choice in the matter.

>> > Anyway, it's much better than tons of emails in your mailbox without
>> tags
>> > and status of discussion.
>>
>> A github thread does not show what I read / what I have to read, does it
>> now ?
>>
> On github you have notifications about new messages in subsribed issues,
> and if you follow links from https://github.com/notifications these links
> disappear.
>

This works similar to unread threads in most mail programs, including
Gmail, doesn't it? And the subscribed issue functionality you can easily
get in Gmail by using starred threads for example?

And the read/unread can be handled both on a thread basis and individual
message basis depending on preference, but with issues it's only on thread
level.

Also, don't forget about browser bookmarks and other plugins for that, web
> much more flexible than emails.
>

I would argue the exact opposite - mail is a lot more flexible than using
github issues and that's one of the most important reasons I prefer it.

(and there are of course many ways to tag and categorize your email, many
more so than with issues. Specifically bookmarks will of course depend on
your mail program)

There are definitely advantages with issues for tracking, such as getting a
more structured central repository of them (but that requires very strict
rules for how to apply them and huge amounts of maintenance effort), but as
a communications tool I'd say email is vastly superior, particularly thanks
to the flexibility.

/Magnus


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Craig Ringer <craig(at)2ndquadrant(dot)com>
Cc: p(dot)psql(at)pinaraf(dot)info, PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-28 09:32:43
Message-ID: CANiD2e8w6x3m9sV2T9qU5p3agtZDTvXA-APJDjBAdaZu3zbqOA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

>
> It's more than just a bunch of conservative dinosaurs not wanting to
> change how they do anything,
>

I didn't talk that.

It's that a change needs to offer really compelling benefits
>

Because of this benefits depend on your development style and your habits.
For me for example, simple CMake syntax and possible to make projects files
for IDEs on many platform really compelling benefits.
If you love Perl's like syntax, work in Vim/Emacs under Linux you will have
an only extra problem with moderns build systems. (it's not bad it's just
how it work)


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: magnus(at)hagander(dot)net
Cc: p(dot)psql(at)pinaraf(dot)info, PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-28 10:00:03
Message-ID: CANiD2e_m6BR5VsxuG+szqYamj4WdcF4umHW+H2uXyOLauF8gOw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

>
> It is correct that Gmail is incapable of this in the web browser. Many
> other email systems can though, and Gmail still speaks imap so you can use
> those if you prefer.
>

Mail programs outside web browser not popular anymore and this standalone
programs became very slow to grow (for example Thunderbird).
I am really don't want to install anything if GMail covers 99% of my usage.
We back to personal habits again...
Also, github have API and you can make your own App with a
custom interface.

(and there are of course many ways to tag and categorize your email, many
> more so than with issues. Specifically bookmarks will of course depend on
> your mail program)
>
but you should do it by yourself, it`s too many works. On github moderator
can put tags from the pre-prepared list, I think it's better.

but as a communications tool I'd say email is vastly superior, particularly
> thanks to the flexibility.
>

I agree, you right but I told about another type of flexible. From your
type of flexible, we have some sort of problems.
For example, complicated to make a good search over the archives. It's a
tradeoff and by my impression GitHub like way better but it's again
personal impression.

PS on github you can edit your message and you have highlighted for source
code...


From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Magnus Hagander <magnus(at)hagander(dot)net>
Cc: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>, p(dot)psql(at)pinaraf(dot)info, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-28 20:23:14
Message-ID: 20180528202314.GB5291@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Mon, May 28, 2018 at 11:16:08AM +0200, Magnus Hagander wrote:
> I would argue the exact opposite - mail is a lot more flexible than using
> github issues and that's one of the most important reasons I prefer it. 
>
> (and there are of course many ways to tag and categorize your email, many more
> so than with issues. Specifically bookmarks will of course depend on your mail
> program) 
>
> There are definitely advantages with issues for tracking, such as getting a
> more structured central repository of them (but that requires very strict rules
> for how to apply them and huge amounts of maintenance effort), but as a
> communications tool I'd say email is vastly superior, particularly thanks to
> the flexibility. 

It might be that occasional uses would find github easier, and more
invested users would find email easier.

--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ As you are, so once was I. As I am, so you will be. +
+ Ancient Roman grave inscription +


From: Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com>
To: Bruce Momjian <bruce(at)momjian(dot)us>
Cc: Magnus Hagander <magnus(at)hagander(dot)net>, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>, p(dot)psql(at)pinaraf(dot)info, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-28 21:18:38
Message-ID: CAA8=A7_XDf-hge1i54px8Xd6wbTQaBoXX4JJxeEOnLWVZ5=4ug@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Mon, May 28, 2018 at 4:23 PM, Bruce Momjian <bruce(at)momjian(dot)us> wrote:
> On Mon, May 28, 2018 at 11:16:08AM +0200, Magnus Hagander wrote:
>> I would argue the exact opposite - mail is a lot more flexible than using
>> github issues and that's one of the most important reasons I prefer it.
>>
>> (and there are of course many ways to tag and categorize your email, many more
>> so than with issues. Specifically bookmarks will of course depend on your mail
>> program)
>>
>> There are definitely advantages with issues for tracking, such as getting a
>> more structured central repository of them (but that requires very strict rules
>> for how to apply them and huge amounts of maintenance effort), but as a
>> communications tool I'd say email is vastly superior, particularly thanks to
>> the flexibility.
>
> It might be that occasional uses would find github easier, and more
> invested users would find email easier.
>

How do people get to be invested developers, though? Everybody starts
as a more occasional user. I started out with one smallish patch for
7.4 and never intended at that stage to do much more. (So much for
prescience.)

The older I get the more I am prepared to admit that my preferred way
to do things might not suit those younger than me. Craig is right, our
processes do not make newcomers, especially younger newcomers, feel
very comfortable. He's also right that the build system is among the
least of our problems in making newcomers feel comfortable.

cheers

andrew

--
Andrew Dunstan https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com>
Cc: Bruce Momjian <bruce(at)momjian(dot)us>, magnus(at)hagander(dot)net, p(dot)psql(at)pinaraf(dot)info, PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-29 01:59:47
Message-ID: CANiD2e_N45_-2DxeJKE3CM=LYfgh-LsogZdt4cHbH0EUX6===Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

First, I apologize if my words hurt someone. I didn't want this.
Second, I totally agree with Andrew.

> He's also right that the build system is among the
> least of our problems in making newcomers feel comfortable.
>

This what I wanted to say. Not big technical difference between build
systems for results. You can build executable and libraries for each needed
platforms use any of it.
The main difference in comfort for that and degree of comfort depending on
your development style, experience, and platform.
If you use Windows, or IDEs like XCode, or you don't know bash, m4, sed,
grep, perl, Makefile... working with Postgres as a developer will be
uncomfortable.
CMake can bring a similar experience of using for each platform. That's it.
(and maybe cost to support your build system)

PS I know all this technology and use usually Linux but CMake or Meson
still looks more comfortable for me.


From: Geoff Winkless <pgsqladmin(at)geoff(dot)dj>
To: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
Cc: Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-29 10:11:09
Message-ID: CAEzk6ffNdcV9z1T-ErkROemuDiRs21JcbTo6Abe0K3NpLGnjeA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Mon, 28 May 2018 at 03:30, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com> wrote:

> I suppose I can make summary after reading all this:
> 1. Any change in the development process will be possible if it will be
> convenient for each key developers personally only. (development process
> include build system)
> 2. Currently, almost all key developers use Unix like systems, they have
> strong old school C experience and current build system very comfortable
> for them.
>
> I think new build system will be possible only by next reasons:
> 1. Autotools will be completely deprecated and unsupported.
> 2. Key developers will be changed by people with another experience and
> habits (and maybe younger).
>
> I don't want to be CMake advocate here, and I see some problems with CMake
> to Postgres project too. But I want to make Postgres development more
> comfortable for people like me who also doesn't like mail lists and was
> growing with github. Unfortunately, we are too few here to change anything
> now.
>

If we were starting out a new project, would we choose the tools and
environments we have now? Probably not. Is it worth spending thousands of
person-hours converting what we have into something different that happens
to be de rigeur, and (especially) using up many hours of our precious core
developer time while they learn the new methods, while not actually gaining
functionality? Also, probably not.

The core developers are core developers because they have been involved
with postgres for years. Yes, to a certain extent that's a respect thing,
they've earned the right to be part of the core team, but it's also related
to the fact that they're likely to be around moving forward.

Someone has to maintain and manage these things. With the greatest of
respect - I'm sure you have the best of intentions and would be happy to
put in many person-hours changing the build environment and helping
everyone through the change process - life has a habit of overtaking our
best intentions. Who's to know whether you'll still be involved in Postgres
in 5 years' time?

Geoff


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Geoff Winkless <pgsqladmin(at)geoff(dot)dj>
Cc: Catalin Iacob <iacobcatalin(at)gmail(dot)com>, PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-29 10:42:41
Message-ID: CANiD2e8V=oKh_bF6QPZg2nq_KU8OXdHt5Nf9ZpPCee24Zn0WiQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

>
> Is it worth spending thousands of person-hours converting what we have
> into something different that happens to be de rigeur, and (especially)
> using up many hours of our precious core developer time while they learn
> the new methods, while not actually gaining functionality? Also, probably
> not.
>

Unfortunately for me I have laready spend many hourse to replace build
system by CMake and it's working fine for most cases (even for Power8 AIX
and Spac Solaris).
Already now you can build postgres for windows without terminal at all. At
least I want to find good use for this development.


From: Geoff Winkless <pgsqladmin(at)geoff(dot)dj>
To: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
Cc: Geoff Winkless <pgsqladmin(at)geoff(dot)dj>, Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-29 11:07:22
Message-ID: CAEzk6fe1FUJPz=ZivjurD-y_XgqfRig=tsceJSbp5daDfOhxLQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Tue, 29 May 2018 at 11:42, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com> wrote:

> Is it worth spending thousands of person-hours converting what we have
>> into something different that happens to be de rigeur, and (especially)
>> using up many hours of our precious core developer time while they learn
>> the new methods, while not actually gaining functionality? Also, probably
>> not.
>>
>
> Unfortunately for me I have laready spend many hourse to replace build
> system by CMake and it's working fine for most cases (even for Power8 AIX
> and Spac Solaris).
> Already now you can build postgres for windows without terminal at all. At
> least I want to find good use for this development.
>

There is a good use for it: you use it and are happy with it. You don't
have to support any users for whom it doesn't work well, other users don't
have to spend their time on it.

I appreciate that it's nice to have everyone use your code, but sometimes
people don't want to. There are many projects I've spent weeks developing
code for a feature that I thought was the business, only to have the
maintainer and/or users say "no thanks": that's the spirit of open source.
Arguing with people and telling them that they're wrong or (as you appear
to be doing) that they're old and out of touch isn't going to make them any
more likely to want to use your code.

I notice that you ignored the two other paragraphs of my email. I
appreciate that you're finding this frustrating but selectively picking
like that rarely helps a discussion progress beyond point-scoring.

Geoff​


From: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
To: Geoff Winkless <pgsqladmin(at)geoff(dot)dj>
Cc: Catalin Iacob <iacobcatalin(at)gmail(dot)com>, PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-29 23:51:58
Message-ID: CANiD2e8o+5EKwBUC68dLiqfWxCrvHyEU=TZ97R2r44F41V5Qgw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

>
> Arguing with people and telling them that they're wrong or (as you appear
> to be doing) that they're old and out of touch isn't going to make them any
> more likely to want to use your code.
>

You are totally wrong, I didn't it, especial called somebody "old".
Perhaps you think like this because I wrote next:

> Key developers will be changed by people with another experience and
> habits (and maybe younger).

In this context under "younger" I mean different experience are getting now
a new generation of developers. They don't know "news", "mailists", "bbc",
"fidonet", "IRC", "perl", "C" and true terminals, but they know "github",
"python", "C++", "Java", "gitter", "discord", "JS".
It's all this not a bad it's just obvious difference. Even more, I think
"old" experience better, but all this experience dictates development
styles and tools.

There are many projects I've spent weeks developing code for a feature that
> I thought was the business, only to have the maintainer and/or users say
> "no thanks": that's the spirit of open source.
>

I agree, I know it but also I still think change build process really need
for Postgres community for growing. At now, I can't see "no thanks".

I notice that you ignored the two other paragraphs of my email. I
> appreciate that you're finding this frustrating but selectively picking
> like that rarely helps a discussion progress beyond point-scoring.
>

Because, I agree with this obvious things and not understand how it tied
with our discussion. Looks like you understood my words in wrong key.
Sorry for that.


From: Geoff Winkless <pgsqladmin(at)geoff(dot)dj>
To: Yuriy Zhuravlev <stalkerg(at)gmail(dot)com>
Cc: Geoff Winkless <pgsqladmin(at)geoff(dot)dj>, Catalin Iacob <iacobcatalin(at)gmail(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Is a modern build system acceptable for older platforms
Date: 2018-05-30 12:23:36
Message-ID: CAEzk6fcr=WDbdkPz5-3aS-frrprZQiFMAcuzS=8YbuC+e76UKQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

On Wed, 30 May 2018 at 00:51, Yuriy Zhuravlev <stalkerg(at)gmail(dot)com> wrote:

> You are totally wrong, I didn't it, especial called somebody "old".
>

​Then I apologise for misunderstanding your intention. Language/culture
barrier perhaps?

Geoff

>