"clang.org"

Hi Alp,

Can you elaborate on why you made this page?

Do you think that the content on clang.llvm.org should be improved? If so, we'd be happy to take patches.

Do you think that clang.llvm.org is a poor url? If so, would you be willing to make clang.org simply redirect to clang.llvm.org?

I obviously can't tell you what domains you are allowed to register, but this page is problematic for the community. It is effectively making an unofficial "fork" of the clang branding. If you'd like to continue running it as a site divorced from clang.llvm.org, I'd request that you make it *very* clear that it is not the official Clang web site.

Thanks,

-Chris

I think this was driven by patches not being accepted yet -

Actually, it's not the 1st time something like this has happened, but Alp was clever enough to pick a good domain. Intel for example was/is forced to push patches and external fork for the OpenMP work on an external domain before the process of upstreaming.

The squeaky wheel gets the oil... Hopefully the full set of patches which haven't been upstreamed can be resolved.

Hi Chris,

Answering your questions in order..

This was always just a spot to upload clang-related patches, and
recently also a build of the installer. The build is aiming to resolve
some release blockers before 3.5 branches next week.

The frontpage on clang.org changed during the devmeeting to mark C++14
completion, adding balloons and linking back to the C++ status page on
clang.llvm.org but that's about it. All the links go back to llvm.org as
far as I'm aware.

I've already had mails from a tech journalist about a "clang fork", an
offer to buy the domain for the price of an apartment by an interested
organisation and somebody who wants to run a download site(?) there,
none of which sound too appealing to be honest and a huge distraction
from fixing the PRs at this point.

Perhaps it was the 500KB patch I posted earlier in the day gave people
the impression this was about a fork or something? If you took a minute
to look at my patch review / commit history / posts to the list you
could easily have counted that out.

Anyway, to answer the question I'm happy to have this used for official
LLVM content, and that was somewhat the reason this was bought off
squatters when we first started to ship our clang-based product at
Nuanti as a service to the community. The previous owner's site with
porn ads was a serious branding problem for us.

As you can probably see from the front page, I'm not the one to ask for
suggestions on creative ideas for llvm.org :wink:

On the other hand, there have been some really interesting suggestions
coming in (VCS for experimental branches, a diagnostics wiki for clang,
user-friendly distribution of clang and more) so I'll be handing off to
another LLVM developer in the community who knows better how to set that
up whether it's on llvm.org, clang.org or some combination.

Incidentally, is there a less contentious 'official' place LLVM
contributors can upload patches/builds like an FTP?

Alp.

I think this was driven by patches not being accepted yet

Can you point to a patch review which is stalled or not making progress?
Maybe ping them so that the very active reviewers we have of windows
patches now can review them? I'm not aware of any, but perhaps I have
missed them.

Sorry, but why is everyone so upset about this? Every distro adds patches
to their "clang" and it's not blessed or "official". Alp is clearly not
being hostile, negative and if his work allows people to test the patches
before integration +1.

No one has indicated he is, only you have drawn this conclusion. All we
have said is that this would be confusing to an outsider, and I think that
confusion is *already* evident.

Just to set the record straight and reiterate what Chandler said, there
hasn't been a problem with patch review at all*

Working with the LLVM community is great as usual and things get done
fast. If anything, a couple of patches I promised I'd take a look at are
blocking on me right now.

I mailed C. Bergström to clear this up and while talking he also kindly
volunteered for the admin role in my previous mail, so he'll be taking
care of clang.org and making sure it works for the community, hopefully
making less of a mess of it than I did.

Chris please work together with C. Bergström to make sure any redirects
or content is in place as decided. I don't have a strong opinion on what
documentation or websites get used at this point besides that it's
perhaps time to move Phabricator to reviews.llvm.org.

* Well, maybe ping on the RewriteRope optimisation (cfe-dev, 2013-11-07)
since I have Chris CC'ed in. That interface was your baby right?

Cheers,
Alp.

Answering your questions in order..

Rearranging responses to suit my purposes :slight_smile:

Perhaps it was the 500KB patch I posted earlier in the day gave people
the impression this was about a fork or something? If you took a minute
to look at my patch review / commit history / posts to the list you
could easily have counted that out.

No, it wasn’t related at all. I really am glad you’re pushing forward on making the headers better library use, that was purely an engineering discussion about tradeoffs of approach. Thank you again for pushing forward on this.

This was always just a spot to upload clang-related patches, and
recently also a build of the installer. The build is aiming to resolve
some release blockers before 3.5 branches next week.

The frontpage on clang.org changed during the devmeeting to mark C++14
completion, adding balloons and linking back to the C++ status page on
clang.llvm.org but that's about it. All the links go back to llvm.org as
far as I'm aware.

Aha! I hadn’t seen it before the other thread so I wasn’t aware of its history. I’m sorry for the strong response, the possibility of “marketing forks” of open source projects are a touchy subject :slight_smile:

I’m *thrilled* that you’re running this site in good faith.

I've already had mails from a tech journalist about a "clang fork", an
offer to buy the domain for the price of an apartment by an interested
organisation and somebody who wants to run a download site(?) there,
none of which sound too appealing to be honest and a huge distraction
from fixing the PRs at this point.

Right, this is exactly the sort of thing that I was worried about. It’s a very prominent domain, so if someone wanted to start a fork and mislead people into thinking that it was the official release, they could cause a lot of confusion. Again, I’m really pleased that this isn’t your goal :slight_smile:

Anyway, to answer the question I'm happy to have this used for official
LLVM content, and that was somewhat the reason this was bought off
squatters when we first started to ship our clang-based product at
Nuanti as a service to the community. The previous owner's site with
porn ads was a serious branding problem for us.

As you can probably see from the front page, I'm not the one to ask for
suggestions on creative ideas for llvm.org :wink:

Cool. It’s really unclear to me which is better: for clang’s front door to be clang.org or clang.llvm.org. Clang is a large enough subproject of llvm that the former is probably better. If that’s the direction that we want to go, we should make clang.llvm.org redirect to clang.org, and have it be the canonical domain name for the project.

Incidentally, is there a less contentious 'official' place LLVM
contributors can upload patches/builds like an FTP?

I’m not sure what you mean - do you mean ones tied to the official releases or something else?

-Chris

Sadly, I haven’t worked on it for so long that someone else should review it.

-Chris

Hi Chris,

Answering your questions in order..

This was always just a spot to upload clang-related patches, and
recently also a build of the installer. The build is aiming to resolve
some release blockers before 3.5 branches next week.

The frontpage on clang.org changed during the devmeeting to mark C++14
completion, adding balloons and linking back to the C++ status page on
clang.llvm.org but that's about it. All the links go back to llvm.org as
far as I'm aware.

I've already had mails from a tech journalist about a "clang fork", an
offer to buy the domain for the price of an apartment by an interested
organisation and somebody who wants to run a download site(?) there,
none of which sound too appealing to be honest and a huge distraction
from fixing the PRs at this point.

Perhaps it was the 500KB patch I posted earlier in the day gave people
the impression this was about a fork or something? If you took a minute
to look at my patch review / commit history / posts to the list you
could easily have counted that out.

Anyway, to answer the question I'm happy to have this used for official
LLVM content, and that was somewhat the reason this was bought off
squatters when we first started to ship our clang-based product at
Nuanti as a service to the community. The previous owner's site with
porn ads was a serious branding problem for us.

As you can probably see from the front page, I'm not the one to ask for
suggestions on creative ideas for llvm.org :wink:

On the other hand, there have been some really interesting suggestions
coming in (VCS for experimental branches, a diagnostics wiki for clang,
user-friendly distribution of clang and more) so I'll be handing off to
another LLVM developer in the community who knows better how to set that
up whether it's on llvm.org, clang.org or some combination.

Incidentally, is there a less contentious 'official' place LLVM
contributors can upload patches/builds like an FTP?

Generally, we don't do that. Sort of like how we don't do branches either;
there's "one true mainline". We do have some "hosted binaries", e.g. <
http://llvm.org/apt/>, <http://llvm.org/builds/> but AFAIK those are
strictly derived from trunk, and I don't think that it would be appropriate
to host custom patched builds (I think the philosophy is basically "if the
patch is worth applying, then it will be in trunk soon"). There's also <
http://clang-analyzer.llvm.org/> which is sort of different... I don't know
all the details but what is hosted there is sort of "productized" and IIRC
last I heard Apple actually has customers which depend on that URL so as a
matter of practicality that's where it lives.

Actually I'm really curious about the "users" that clang.org serves, and I
think it would be useful to take those use cases to heart and improve the
normal releases correspondingly. E.g. you mentioned somewhere else that the
download on clang.org is code signed? is that something that users would
appreciate and that we should integrate into our regular release process?.
You also mentioned some stuff like a GUI AST viewer, and nodejs bindings?
Are users really digging those? I think those last two would be great to
move closer to upstream regardless.

Also I just wanted to mention Alp, that you've been doing a great job
interacting with the community and our development process (incremental
development, tests, code review, etc.). (well, this strange
clang.orgscenario aside (although in the end I'm glad that domain is
in "friendly
hands" and not a squatter or porn ads!))

-- Sean Silva

I strongly disagree - Testers are the compilers best friend. I'm not suggesting this is what it's used for.. just a hypothetical I'm tossing out..

What if not only a patch from reviews.llvm.org, but also some binaries to download? I'm sure there are a group of users who for whatever reason don't want to setup a build, patch it, build it and then test. The process would be - download it, bang on it and let us know if you think it's ready or you hit a problem.

Who would this serve? Performance testing / validation is my 1st thought... 2nd thought is anything just risky... before a final release you have multiple release candidates.. If one of those is bad - how do you as a user triage what might have caused a problem. This "alpha" level, nightly build or "patch/review" build serves as a stopgap between releases for adventurous (users).

I think that Alp made a really good point: “Clang” is a developer-facing product that a lot more developers interact with than compiler engineers. llvm.org and even clang.llvm.org are really focused on bringing people into the open source community and serving us compiler hackers, but it does a really poor job serving users that just want to use a compiler and look up a few options or language extensions. Oh, and the main web page could really use an update, being almost unmodified since its inception.

In many ways, this is the same problem that projects like Eclipse have. Since eclipse is both a community and an IDE, the main “http://www.eclipse.org” web site is pretty useless for people who just want a Java IDE. I’m not finding any great examples of open source projects “doing it right”, but linux.com for example is targeted as users and advocates of the linux OS, not at kernel hackers.

I think it could be really great to have a user-centric landing page, and if we do that, making clang.org be it would be truly great.

-Chris

Actually I'm really curious about the "users" that clang.org serves, and
I think it would be useful to take those use cases to heart and improve the
normal releases correspondingly. E.g. you mentioned somewhere else that the
download on clang.org is code signed? is that something that users would
appreciate and that we should integrate into our regular release process?.
You also mentioned some stuff like a GUI AST viewer, and nodejs bindings?
Are users really digging those? I think those last two would be great to
move closer to upstream regardless.

Also I just wanted to mention Alp, that you've been doing a great job
interacting with the community and our development process (incremental
development, tests, code review, etc.). (well, this strangeclang.org scenario
aside (although in the end I'm glad that domain is in "friendly hands" and
not a squatter or porn ads!))

I think that Alp made a really good point: "Clang" is a developer-facing
product that a lot more developers interact with than compiler engineers.
llvm.org and even clang.llvm.org are really focused on bringing people
into the open source community and serving us compiler hackers, but it does
a really poor job serving users that just want to use a compiler and look
up a few options or language extensions.

When I reorganized the clang docs front page, I was actually amazed at how
things fell out. We actually have a quite nice slice of docs that broadly
fall under the category "Using Clang as a Compiler" <
http://clang.llvm.org/docs/#using-clang-as-a-compiler>, and I made sure to
put those front and center.

Oh, and the main web page could really use an update, being almost
unmodified since its inception.

Yeah it would be nice to have a web site that looks like it was developed
by a web designer, not a compiler hacker :slight_smile: Our dragon logo is awesome, how
did that come about? Maybe we could emulate that process to net a fresh
fancy webpage. (I'm assuming that the dragon logo wasn't designed by a
compiler hacker; if it was, then this is me bowing to their skill).

In many ways, this is the same problem that projects like Eclipse have.
Since eclipse is both a community and an IDE, the main "
http://www.eclipse.org" web site is pretty useless for people who just
want a Java IDE. I'm not finding any great examples of open source
projects "doing it right", but linux.com for example is targeted as users
and advocates of the linux OS, not at kernel hackers.

I think the "normal" way to do it these days (for better or for worse) is
for a project's home page to be entirely "non-developer-centric", but have
a "github" ribbon/button that developers know to look for. Then the README
on github branches out to IRC, mailing lists, and of course the bug
tracking and repo are there on github. It works well. Sometimes the "home
page" is hosted on github pages too (on http://<username>.
github.io/projectname/). Examples:

http://nodejs.org/
http://martine.github.io/ninja/
http://kentonv.github.io/capnproto/

Another common pattern for slightly "older" projects is to make the page
primarily "non-developer-centric" but have an easy-to-see "get involved"
link.

However, there aren't many projects of the size of LLVM and so it's
anybody's guess whether it's meaningful to draw inspiration from these
other approaches. I do think it would be nice if we had a really nice
README, and that a WebUI source browser with pretty README renderer was
just one click away from the homepage (and showing checkout/clone URLs
throughout), as that puts people that much closer to checking out the code,
which puts them that much closer to sending patches, etc., etc..

Actually, I just did an experiment: from landing on llvm.org, how long does
it take me to find a page with a checkout/clone URL?

(Before reading on, try going to llvm.org and clicking your way to a
repository URL)

I was very surprised: it took me like a minute
The path I found from landing on llvm.org to getting to svn co/git clone is:
llvm.org > Documentation > Getting Started with the LLVM System
It took me >30 seconds (Ctrl+F "SVN", etc.) of head scratching to figure
out that Documentation would take me to somewhere with a repo URL. After
that I happen to know since I know the docs well that GettingStarted.rst
has the clone URL's, but someone who didn't know that would have had a hard
time guessing that, and there is a whole division of docs in the way before
they would even *see* "Getting Started".
(admittedly, searching for `llvm svn` and `llvm git` does go directly to
GettingStarted.rst, so maybe I shouldn't be so alarmed)

clang is a lot better, it's just clang.llvm.org > "Get started" (although
"Get started" is a bit hard to find).

Compare this with the other sites I just mentioned, where the process is
just "land on the page" > github, done. This ease also translates to any
functionality covered by github, e.g. bug tracker (try finding your way to
the llvm bug tracker from llvm.org; the best I was able to do was
llvm.org> Documentation >
http://llvm.org/docs/HowToSubmitABug.html > "the LLVM Bug Tracking System";
search engine results were fairly good though)

I think it would be beneficial for the project to optimize this path. Most
of what I can do is in the docs/ side of things though (I am clueless about
the llvm.org website).

I think it could be really great to have a user-centric landing page, and
if we do that, making clang.org be it would be truly great.

Agreed. That sounds like a perfect use for the domain.

-- Sean Silva

Yeah, that is great. It would also be interesting to have a blogroll (or something) on it talking about various people using the compiler, tips and tricks, etc.

The dragon came about when Apple paid a 3rd party icon design company to design it for LLVM. I gave them the guidance of “a high tech dragon” and a graphics artist did magic :slight_smile:

Right, it would make sense to keep clang.llvm.org as the compiler hackers kingdom. There could be a prominent link from clang.org that points to it.

What do you think Alp? Does this make sense to you? I think this aligns with (my understanding of) your intended purpose for the domain, and would be fantastic for the project.

-Chris

While building llvm/clang from sources is entirely feasible, it requires setting up a non-trivial build environment, especially on Windows. The recently posted instructions setting up a windows builder summarize the process very well and show what’s involved.

If we’d like to make clang a popular compiler (as it should!) this process in unreasonable. Someone wishing to just use clang wants a simple one-click solution and not a process setting it up. If not clang, he’ll find his one click solution either with Visual C++ Express free edition or one of the MingW distributions.

The standard is to have a big DOWNLOAD button featured on the front page. This leads directly to the Windows installer (one-click!) or at most to a list of the last stable version pre-built binaries with the Windows as the default.
Why Windows? because that’s what Windows users are expecting.
In other OS downloading sources and configure/make is reasonable as 1) the users are usually more knowledgeable and 2) the build environment is mostly (all?) ready. Not so with Windows.

The downloading process should be EZ : mindless and requires as few clicks as possible. Some practical examples are:

http://www.eclipse.org/

https://netbeans.org/

https://sourceforge.net/projects/mingwbuilds/

additional non-links should lead to development (ToT) pre-built binaries, web browsable sources and svn/git instructions. It is also be nice to have downloadable sources as tar/zip such as available on some sites as for some users installing svn/git may be a showstopper.

Specifically, on the current llvm site, the download link should be more prominent. It should list the pre-built binaries at first. It should link to the Windows pre-built binaries which currently are well hidden on the alpha site. Then it should also link to ToT (“Development”) binaries and only finally to source codes and build instructions.

Yaron

Hello Chris,

I'd say this makes sense.

There's a strong case that opening up and having clang.org driven by the
LLVM community can only bring goodwill, boosting the profile of a
project we care about.

As Sean astutely observes, there's a whole world out there the LLVM
project has yet to reach out to. Not everyone's computing experience
begins and ends at the command prompt.

Whether it's installers, language bindings or GUIs, the effort to build
those is ultimately best coordinated on llvm.org, but I'm starting to
agree that clang.org could turn out as a very nice introductory resource.

That said, a new website is no silver bullet -- ultimately it's just a
small part of the work that needs to be done to make the compiler more
accessible to everyone. But the excitement both on and off list has
convinced me that a fresh-looking clang.org can be a catalyst for the
next step.

So I'm going to go with my gut feeling on this and say, let's make it
happen :slight_smile:

Alp.

These ideas and the website are great.

Regarding who links to who and why, consider that googling for “clang” leads to http://clang.llvm.org/ as the first result, while http://clang.org/ isn’t in the first 30 (maybe more) results. This of course may change in the future but my guess is that google will prefer http://clang.llvm.org/ due to its many in and out links and content over http://clang.org/ .

We can expect new clang users arriving at http://clang.llvm.org/ rather than http://clang.org/ .

Yaron

Hi, let me explain my view as a “casual” but very interested potential win32 clang user.

Some months ago around 3.1 version I tried to get the windows version of clang up and running. It was long but I was determined and was able to build my own 3.1 version from svn.

I tested it a bit to discover it was partially ready for me, I’m primary interested in using it for cross compiling arm targets that was fine, and for use it as out day-to-day win32 version so we can have a easier multiplatform compiler support.

I followed the instructions without big issues, but at that evaluation stage a prebuild binary and a more user focused documentation would have been much more better for me.

As example, I learned the hard way how to find a linker that fill my needs, ld64, gnu ld, link.exe, etc… A reference detailing what do you need to target what platform and how to get it (binary if possible) is very interesting for someone that just wants to compile code not hack with the toolchains.

I ended up hacking with the toolchains and enjoyed a lot, but is not cost effective for the average developer.

Unai Landa

CTO

ulanda@digital-legends.com

Digital Legends Entertainment
C/ Bruc 50, 2-4
08010 Barcelona (Spain)
Tel : +34 93 394 17 77
Fax: +34 93 304 35 05
www.digital-legends.com

This e-mail message contains confidential information and/or legally privileged and is intended only for the use of the addressed person. Any disclosure, copying, distribution or the taking of any action in reliance on the contents of this e-mail by any other person is strictly prohibited. If you believe that this e-mail message has been sent to you by error, please notify the sender by reply via e-mail and then delete this message from your system. Thank you.

While building llvm/clang from sources is entirely feasible, it requires
setting up a non-trivial build environment, especially on Windows. The
recently posted instructions setting up a windows builder summarize the
process very well and show what's involved.

If we'd like to make clang a popular compiler (as it should!) this process
in unreasonable. Someone wishing to just use clang wants a simple one-click
solution and not a process setting it up. If not clang, he'll find his one
click solution either with Visual C++ Express free edition or one of the
MingW distributions.

The standard is to have a big DOWNLOAD button featured on the front page.
This leads directly to the Windows installer (one-click!) or at most to a
list of the last stable version pre-built binaries with the Windows as the
default.
Why Windows? because that's what Windows users are expecting.
In other OS downloading sources and configure/make is reasonable as 1) the
users are usually more knowledgeable and 2) the build environment is mostly
(all?) ready. Not so with Windows.

The downloading process should be EZ : mindless and requires as few clicks
as possible. Some practical examples are:

http://www.eclipse.org/
https://netbeans.org/
https://sourceforge.net/projects/mingwbuilds/

additional non-links should lead to development (ToT) pre-built binaries,
web browsable sources and svn/git instructions. It is also be nice to have
downloadable sources as tar/zip such as available on some sites as for some
users installing svn/git may be a showstopper.

Specifically, on the current llvm site, the download link should be more
prominent.

I agree.

It should list the pre-built binaries at first. It should link to the

Windows pre-built binaries which currently are well hidden on the alpha
site.

I'd rather keep the development builds somewhat hidden. They are alpha,
after all. When we do the 3.4 release, we should make a Windows installer
and put it with the other binary packages, which are currently the most
discoverable.

It should list the pre-built binaries at first. It should link to the
Windows pre-built binaries which currently are well hidden on the alpha
site.

I'd rather keep the development builds somewhat hidden. They are alpha,
after all. When we do the 3.4 release, we should make a Windows installer
and put it with the other binary packages, which are currently the most
discoverable.

Frankly, the 3.4 will be way "alpha" on Windows still due to byval,
RTTI and stuff...

It should list the pre-built binaries at first. It should link to the
Windows pre-built binaries which currently are well hidden on the alpha
site.

I'd rather keep the development builds somewhat hidden. They are alpha,
after all. When we do the 3.4 release, we should make a Windows installer
and put it with the other binary packages, which are currently the most
discoverable.

Frankly, the 3.4 will be way "alpha" on Windows still due to byval,
RTTI and stuff...

Hi Timur,

Disagree strongly on this.

The Windows build of clang 3.4 is absolutely production-grade in almost
every area now. It's not a major problem if codegen isn't quite there
yet as long as it's mentioned in the release notes.

Compelling features like refactoring, the C SDK, Python API, static
analyser -- nearly all the "exciting" features that set clang apart --
are all production-grade on Windows and have been for some time.

When it comes time to compile, there are plenty of commodity compilers
out there that'll get the job done as a stopgap.

clang 3.4 on Windows is something to announce and be proud of, not to
hide away as 'alpha'

Alp.

We shouldn’t hide any binary version. We may succeed = confusing a candidate user who will get another compiler.

It is however very important to be clear what is what:

clang 3.3 is “Last stable version” = the version that works but does not have all the new bells and whistles.
ToT svn is “Current development version” = the version with all the new features but may contain news bugs.

To each his own.