Deutsch   English   Français   Italiano  
<vj79pv$gjhr$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Janis Papanagnou <janis_papanagnou+ng@hotmail.com>
Newsgroups: comp.lang.c
Subject: Re: question about linker
Date: Mon, 9 Dec 2024 18:35:57 +0100
Organization: A noiseless patient Spider
Lines: 110
Message-ID: <vj79pv$gjhr$1@dont-email.me>
References: <vi54e9$3ie0o$1@dont-email.me> <vil0qc$3fqqa$3@dont-email.me>
 <vil82t$3ie9o$2@dont-email.me> <vila9j$3j4dg$1@dont-email.me>
 <vin4su$49a6$1@dont-email.me> <vin95m$5da6$1@dont-email.me>
 <vinh3h$7ppb$1@dont-email.me> <vinjf8$8jur$1@dont-email.me>
 <vip5rf$p44n$1@dont-email.me> <viprao$umjj$1@dont-email.me>
 <viqfk9$13esp$1@dont-email.me> <viqhmn$131h8$3@dont-email.me>
 <visbmp$1ks59$1@dont-email.me> <visgs7$1mgdb$1@dont-email.me>
 <viv5ve$2dqir$1@dont-email.me> <vivggi$2gkth$1@dont-email.me>
 <vj5807$gift$1@paganini.bofh.team>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Injection-Date: Mon, 09 Dec 2024 18:35:59 +0100 (CET)
Injection-Info: dont-email.me; posting-host="1831f7430e8998035619d33d7ee64315";
	logging-data="544315"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1+cv/64WWk/x5JCCJMesyW5"
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101
 Thunderbird/45.8.0
Cancel-Lock: sha1:SftkK5yQ01icGrBTnRNb3RrF6PU=
X-Enigmail-Draft-Status: N1110
In-Reply-To: <vj5807$gift$1@paganini.bofh.team>
Bytes: 7173

On 08.12.2024 23:52, Waldek Hebisch wrote:
> Bart <bc@freeuk.com> wrote:
>> It is suitable for a vast number of programs. I'm sure it could be used 
>> for multi-developer projects too. After all, don't your projects also 
>> place all project-structure info into /one/ makefile? Which developer 
>> has editing rights on that file?
> 
> There are _many_ possible organizations.  Rather typical is one
> Makefile _per directory_.  Most 'make'-s seem to be able to do
> file inclusion, so you may have a single main Makefile that
> includes whatever pieces are necessary.  For example, if somebody
> wanted to add support for your language to gcc, that would need
> creating a subdirectory and putting file called 'Make-lang.in'
> inside.  Make-lang.in is essentially Makefile for your language,
> but it is processed to substitute crucial variable and included
> as part of gcc Makefile.  Of course, you will need more, but
> this covers Makefile part.
> 
>> Who decides what the modules are going to be? If one developer decided 
>> they need a new module, what is the procedure to get that added to the 
>> makefile?
> 
> In open source project normal thing is a patch or a Git pull
> request.  This specifies _all_ needed changes, including Makefile-s
> if there is a need for new module it gets added where needed.
> I one "my" project there can be multiple module in a file, so
> a new module may go to existing file (if it is closely related
> to other module in the file) or to a separate file.  I also needs
> changes to Makefile.
> 
> The above is technical part.  Other is governace of a project.
> If there are multiple developers, then there may be some form
> of review.  Or a developer may be declared to be maintainer of
> given part and allowed changes without review.  'gcc' has several
> "global maintainers", they can change each part and approve
> all changes.  There are maintainers for specific parts, they
> can modify parts they are resposnible for and approve changes
> there, for other parts they need approval.  There are "write
> after approval" people who propose changes but are allowed to
> merge them only after approval from folks in the first two
> groups.  There is also a steering body which votes and
> make decision after.  Some project use some forms of democracy.
> For example, all developers may be considerd equal, but
> any change need aproval from another developer.  In case of
> objections there is a vote.  Some projects have a "dictator"
> of "lead developer" who has final say on anything project-related.
> 
> I have no experience in commercial setups, but IIUC normally
> firms have rules and responsible persons.  Person responible
> for a project divides work and possibly delegates responsibility.
> Firm or project rules may require review, so that other developer
> looks at changes.  There could be design meeting before
> coding.

For "commercial setups" it's as you wrote above: "There are _many_
possible organizations.", so there's no single way to organize
things. One thing that is common (as far as my [naturally limited]
observations go) is that they also use tools that support defining
processes that reflect project structure, responsibilities, and
software and system design, and its organization. For example we
had tools that described and managed the software creation process;
defining a component, defining a [new] release, associating bug
reports and feature requests to releases, open tracks to implement
things (bug-fixes/features), fix-records to track the changes, etc.
and all controlled by a process-framework with dedicated people
responsible or able to do certain tasks. People could check-in
source code, documentation, tests. Actions and state transitions
were bound to access rights (depending on various factors). New
states were notified to responsible people in the process-chain
to enable them to do their work based on new project results,
say to do reviews, or tests, or build a release if preconditions
are all fulfilled.

And there's of course also "supplementary tools"; [hierarchical]
'make' systems for the dependency/creation tasks (libs, docs,
tests, exes), project management and planning systems for the
respective tasks. - I'm sure not all of this will be found in
every commercial project - and, to be honest, I've heard stories
that I wouldn't think be possible in a professional context! -
but typically a huge part of what I described was quite standard
in the commercial contexts I worked in; differences where mainly
only by the chosen tools, and omissions of some details in the
process and grade of automation that were considered unnecessary
in a given context.

So far just off the top of my head; I'm sure I forgot to mention
one or the other (maybe even important) element.

>> [...]
>>
>> However a language at the level of C still appears to be extremely 
>> popular. I guess people like something that is not so intimidating and 
>> that they can feel in command of.
> 
> Hmm, the only language at C level that I know and is popular
> is C.  Ada, COBOL, Fortran, Modula 2, Pascal, PL/I are languages
> that I consider to be at level similar to C.  But AFAIK no of them
> is really popular and in modern time they aim to be higher-level
> than C.  Forth is at lower level and really not that popular.

It seems that Ada and Fortran are still in significant areas in use,
aren't they?

(I wouldn't call that "popular", though, because that word has quite
some [arguable] connotations.)

> [snip rest]

Janis