Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make the front-page title less jargony #852

Merged
merged 8 commits into from
Mar 10, 2018
Merged

Make the front-page title less jargony #852

merged 8 commits into from
Mar 10, 2018

Conversation

lihaoyi
Copy link
Contributor

@lihaoyi lihaoyi commented Mar 5, 2018

The current title is pretty strange; it really doesn't mean anything to me, someone who has been using Scala for a long time, and would mean even less to a newcomer. We should dispense with the jargon and say what people would be interested in hearing, in plain language that any programmer can understand.

The current title is pretty strange; it really doesn't mean anything to me, someone who has been using Scala for a long time, and would mean even less to a newcomer. We should dispense with the jargon and say what people would be interested in hearing, in plain language that any programmer can understand.
index.md Outdated
headerTitle: "Object-Oriented Meets Functional"
headerSubtitle: "Have the best of both worlds. Construct elegant class hierarchies for maximum code reuse and extensibility, implement their behavior using higher-order functions. Or anything in-between."
headerTitle: "The Scala Programming Language"
headerSubtitle: "Scala is a typed high-level programming language. Scala's compiler helps you avoid bugs when writing complex applications, and it's runtime is suitable for building efficient, high-performance systems."
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo: it's -> its

Copy link
Member

@Philippus Philippus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

typo should be fixed

@ashawley
Copy link
Member

ashawley commented Mar 5, 2018

The site's front matter is used to convince people to use the language. Presumably, this has been to convert Java adherents.

@lihaoyi
Copy link
Contributor Author

lihaoyi commented Mar 5, 2018

Changed it's -> its as suggested.

Also changed typed to concise. typed is a bit redundant since later on we're already saying how the compiler helps you avoid bugs anyway, and being concise is one of Scala's big benefits (especially coming from Java)

Pretty sure the new blurb is a better sell than the old blurb. I know lots of Java programmers who want to reduce their bug count or build high-performance systems. I don't know any Java programmer who want to use higher-order functions, many believe that maximizing code re-use through class hierarchies is actually bad, and nobody knows what's in between a class hierarchy and a higher-order function...

@lihaoyi
Copy link
Contributor Author

lihaoyi commented Mar 5, 2018

CI failure looks unrelated

@jvican
Copy link
Member

jvican commented Mar 5, 2018

@propensive Have you removed the election markdown file in the tooling-working-groups repository? It seems that because we linked to it our link validator fails.

@propensive
Copy link
Contributor

Yes, I did - sorry! Didn't realise there were knock-on effects like this!

@propensive
Copy link
Contributor

@jvican I've just reinstated it, in case that helps.

@propensive propensive self-requested a review March 5, 2018 21:52
@SethTisue
Copy link
Member

SethTisue commented Mar 5, 2018

I think removing "object-oriented meets functional" entirely goes too far. Lots of languages are, or claim to be, "concise", "high-level", "helps you avoid bugs", "efficient", and so on. "object-oriented meets functional" is what makes Scala Scala.

I'm not sure what the ideal wording is and I'd like to think on it more — posting this comment now because I don't want anyone to hit "merge" yet.

@SethTisue
Copy link
Member

SethTisue commented Mar 5, 2018

Also changed typed to concise

Aw, I liked "typed". Static typing is essential to what makes Scala Scala.

Copy link
Member

@jvican jvican left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with @SethTisue that "Object-oriented Meets Functional" is neat (it's very illustrative of what Scala is), but I can also see why we may want to have "The Scala Programming Language" as the header of the website.

Is there a chance we can keep both?

@lihaoyi
Copy link
Contributor Author

lihaoyi commented Mar 5, 2018 via email

@SethTisue
Copy link
Member

(I should add that I think the old wording was also far from ideal and could use improvement. So this PR is very welcome, I'd just think it needs further thought and discussion.)

@SethTisue
Copy link
Member

SethTisue commented Mar 5, 2018

Concise definitely carries information

you're right, I withdraw that. I do like "concise".

@jvican
Copy link
Member

jvican commented Mar 5, 2018

there are a lot more people wanting to build complex applications or high-performance systems than people looking for “object oriented meets functional”

That's a fair point, honestly.

@lihaoyi
Copy link
Contributor Author

lihaoyi commented Mar 6, 2018

I'm not sure what the ideal wording is and I'd like to think on it more — posting this comment now because I don't want anyone to hit "merge" yet.

I'd like to propose an alternate approach: if we think this PR is better than the status quo, we merge it now. If you come up with a better idea, open a PR, and if it's better we merge that.

The best way to keep contributors contributing is to allow their contributions to be meaningful. Conversely, turning away or stalling obvious improvements to wait for some future "ideal wording" is probably the best way to make sure people won't come back.

Just to re-iterate, the splash text explicit is not some deep meditation by Scala-enthusiasts to other Scala enthusiasts on what makes Scala Scala. The splash text what we show random Java/Ruby/Python/C programmers who know nothing of the language and want to know why they should be interested, on their terms.

While the "object-oriented-meets-functional" thing is 100% true, we should save it for twitter, EPFL, conferences and other places where Scala enthusiasts hang out among themselves.

@SethTisue
Copy link
Member

this PR is literally one day old 😀 I think we can afford to think about it and discuss it for a little longer.

@heathermiller you oversaw both of the last two site overhauls. any opinion on this or history to offer? I don't know how attached you or Martin (or whoever else) might be to the current wording.

I'm totally fine with losing the stuff about class hierarchies and higher-order functions, in fact I think losing that stuff is good. how about something like:

headerTitle: "The Scala Programming Language"
headerSubtitle: "Scala is a concise, expressive, high-level language that combines object-oriented and functional programming. Scala's type system prevents bugs when writing complex applications, and its fast runtime lets you build high-performance systems."

I'm least happy with the wording at the end. "its fast runtime" sounds to me like we have our own VM, but we don't. Also "runtime" as a noun seems pretty jargon-y to me. I'm tempted to just insert "high-performance" into the first clause and leave it at that.

@ashawley
Copy link
Member

ashawley commented Mar 6, 2018

I looked in to it, and this copy has existed for about 5 years on the site, and even survived the redesign by the Scala center last year. Maybe it deserves a refresh and improvement, but it's held up pretty well.

Rather than re-inventing new phrasing, why not take inspiration from language in the Scala tour and the Scala courses among other places?

Replacing the tag line "Object-Oriented Meets Functional", with just "The Scala Programming Language" seems like repetition on the home page at the opportunity cost for communicating something about the language to the user.

Finally, the criticism about being "strange" and jargon laden is a hard thing to avoid in a short blurb in technology. The same criticism could be leveled of the current proposal. This risks making this change ad infinitum.

@lihaoyi
Copy link
Contributor Author

lihaoyi commented Mar 6, 2018

@SethTisue sorry, I don't mean to pressure you =) generally as a matter of principle I think we should be more willing to take imperfect contributions as long as they are monotonically increasing in quality, and I don't want to let perfect be the enemy of good here.

The wording you proposed, with the additional "combine object oriented and function" thing, is 100% fine by me!

@lihaoyi
Copy link
Contributor Author

lihaoyi commented Mar 6, 2018

Although I'd probable fiddle with the grammar a bit

-concise, expressive, high-level 
+concise and expressive high-level 

Though this is really just bikeshedding. Feel free to ignore this...

@heathermiller
Copy link
Member

Honestly, this is a marketing thing that should go by Martin. He cares about things like this. The original formulation was something that he OKed a while ago.

He'd probably want to have a say if this is changed.

index.md Outdated
headerTitle: "Object-Oriented Meets Functional"
headerSubtitle: "Have the best of both worlds. Construct elegant class hierarchies for maximum code reuse and extensibility, implement their behavior using higher-order functions. Or anything in-between."
headerTitle: "The Scala Programming Language"
headerSubtitle: "Scala is a concise high-level programming language. Scala's compiler helps you avoid bugs when writing complex applications, and its fast runtime lets you build building efficient, high-performance systems."
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like there is a redundant "building" in this sentence.

@lihaoyi
Copy link
Contributor Author

lihaoyi commented Mar 8, 2018

@odersky could we have your review

@propensive
Copy link
Contributor

As we're agonizing over a few lines, here's my suggested rewording:

Scala is a concise, high-level programming language. Its expressive type system makes it easier to avoid bugs in complex applications, and its runtime supports high-performance, scalable systems.

I mostly agree with @lihaoyi's point about having a bias for merging early and often, though we shouldn't overlook that there's a burden on every single PR as a few people take time to discuss it.

@odersky
Copy link
Contributor

odersky commented Mar 8, 2018

Overall, I like the old wording better. It became a "Silicon Valley" quote after all, so it must have had some impact!

@jvican
Copy link
Member

jvican commented Mar 9, 2018

@odersky do you mean the title or the description after it? I think the old title and the new description could coexist.

@heathermiller
Copy link
Member

(The description was what was included in the Silicon Valley TV show.)

@odersky
Copy link
Contributor

odersky commented Mar 9, 2018

My impression is that the previous title and description gave more color. I find the proposed alternatives to be a bit bland by contrast. So I would be in favor of leaving things as they are. "Object oriented meets functional" is very much the essence of Scala. "Concise, high-level programming language" would apply to dozens of other languages by comparison.

@lihaoyi
Copy link
Contributor Author

lihaoyi commented Mar 9, 2018

My impression is that the previous title and description gave more color. I find the proposed alternatives to be a bit bland by contrast.

@odersky this is intentional, and goes to the heart of what this PR is about.

The current title is quirky, clever, and is best understood by Scala experts/enthusiasts who can appreciate it. To someone who knows nothing about Scala (consider some random person working on Java backend services, Python data-processing, a Node.js webapp) none of these phrases mean anything:

  1. Object-Oriented Meets Functional
  2. Construct elegant class hierarchies for maximum code reuse and extensibility,
  3. Implement their behavior using higher-order functions
  4. Or anything in-between.

None of these mean anything to a newcomer. In fact, #2 is an anti-pattern many people do not want,
well known enough to have it's own wikipedia entry.

A new-comer to Scala reading this won't find flavor or cleverness; they'll just find confusion

Consider the information being distributed in this PR (I just added #4)

  1. a concise high-level programming language
  2. Scala's compiler helps you avoid bugs when writing complex applications
  3. and its fast runtime lets you build building efficient, high-performance systems.
  4. convenient access to a huge ecosystem of libraries

Do you really think this is boring? Consider how these features compare to other languages, e.g. the Redmonk top 20:

Language Concise Safe Fast Libraries
JavaScript ~ ~ Y
Java ~ Y Y
Python Y Y
PHP
C# Y Y
C++ Y
Ruby Y Y
C Y
Swift Y Y Y
Objective-C Y
R Y Y
TypeScript Y ~ Y
Scala Y Y Y Y
Go ~ Y ~
Perl Y ~
Haskell Y Y Y
Lua Y ~

(Left out Shell and Powershell)

It turns out that Scala is the only language in the redmonk top 20 that satisfies all these descriptions. That is actually pretty exciting! Most software engineers out there would love to have a language as concise than Python but as compile-time-safe & fast-running than Java, with as broad an ecosystem of libraries.

  • Java-backend-service-person would be excited to work with something concise
  • Python-data-processing-person would be excited to work with something fast
  • Node.js-webapp-person would be excited to work with something safe

Scala is such a language. Scala literally solves the largest problem being faced by huge numbers of programmers in other communities, today. We should advertise it as such.

I posit that you find such a description bland because you have spent the last 10 odd years embedded in the Scala ecosystem, and so none of this PR is new to you compared to deep insights about the core of the Scala language. But we must remember who our audience is. The front page of scala-lang should not be optimized for Martin Odersky to read and appreciate given his deep insight into the core of the Scala language, or any of us enthusiasts.

The front-page should be targeted at new-comers, who know nothing about Scala, and will find the current blurb actively confusing. And despite your claims that this proposal is bland, I argue that such a new-comer would find the new blurb extremely exciting: exciting because Scala, today, solves their own programming pain points that they have had for decades. Exciting because Scala is something that can help them achieve things in their own projects, teams & companies that other languages cannot: feature-rich, high-performance systems with a low defect count, delivered in a short amount of time.

The Scala community of the future isn't in this room; they're out there, writing Java, Python, Node.js code. They're griping about conciseness, performance, or safety. Perhaps they've used multiple languages, and wonder why there isn't a language which manages to get all of those properties right. Those are the people we should be targeting with the front-page of scala-lang.org to try and bring them, and their ideas, into the community.

As for us Scala enthusiasts, we are already sufficiently invested in Scala we need no further introduction or pitch 😛

index.md Outdated
headerTitle: "Object-Oriented Meets Functional"
headerSubtitle: "Have the best of both worlds. Construct elegant class hierarchies for maximum code reuse and extensibility, implement their behavior using higher-order functions. Or anything in-between."
headerTitle: "The Scala Programming Language"
headerSubtitle: "Scala is a concise high-level programming language. Scala's compiler helps you avoid bugs when writing complex applications, its fast runtime lets you build building efficient, high-performance systems, with easy access to a huge ecosystem of libraries."

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

build building -> build

@adriaanm
Copy link
Contributor

adriaanm commented Mar 9, 2018

It became a "Silicon Valley" quote after all

So did the concept of "billionaire doors". We're not optimizing for the same audience as Silly Valley, I hope! I would love for the homepage to appeal more to the programmers that @lihaoyi is thinking of.

@tabdulradi
Copy link
Member

concise than Python but as compile-time-safe & fast-running than Java, with as broad an ecosystem of libraries.

This is exact same reason my previous company switched to Scala, nothing more, nothing less. None of us was interested in "Functional programming", nor "higher-order functions". They came part of the package, then later they changed how I write code.

@odersky
Copy link
Contributor

odersky commented Mar 10, 2018

OK, if you all feel it's a better message I will go along.

index.md Outdated
headerTitle: "Object-Oriented Meets Functional"
headerSubtitle: "Have the best of both worlds. Construct elegant class hierarchies for maximum code reuse and extensibility, implement their behavior using higher-order functions. Or anything in-between."
headerTitle: "The Scala Programming Language"
headerSubtitle: "Scala is a concise high-level programming language. Scala's compiler helps you avoid bugs when writing complex applications, its fast runtime lets you build efficient, high-performance systems, with easy access to a huge ecosystem of libraries."

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you forgot an "and" before "its fast runtime".

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gmethvin good catch, there is a missing and somewhere, but even with it added before its fast runtime sounds a bit odd. May be better to split it into two separate sentences

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nm I just added the and there and it seems to read fine

@lihaoyi
Copy link
Contributor Author

lihaoyi commented Mar 10, 2018

Seems we have consensus; anyone want to do the honors?

@floating-cat
Copy link

floating-cat commented Mar 10, 2018

homepage_new

I take a screenshot of the new homepage, does the new title "The Scala Programming Language" look redundancy now?

@smarter smarter merged commit 7f23449 into scala:master Mar 10, 2018
@lihaoyi
Copy link
Contributor Author

lihaoyi commented Mar 10, 2018

Thanks Guillaume!

As I said earlier, this is the start of improving the front page jargon, not the end. If you have other ideas of how to make it better, send more PRs and we can iterate on this together to make it great.

@ashawley
Copy link
Member

Given #850, I'd say making more PRs on front page copy is a bit of a distraction. Improvements to wording like this can go on forever. For that reason, people should be more respectful of the process going forward.

As it stands, the current blurb on the Scala front page doesn't even mention "functional" anymore. Seems like a glaring omission. How did this happen? Well, there was no real review allowed here, except save typos. And the threshold for this change seemingly morphed: It went from "merge early", to reaching consensus, and now to more PRs. I'd argue the first wasn't really applicable to website wording, the second was hardly reached.

@SethTisue
Copy link
Member

SethTisue commented Mar 10, 2018

the current blurb on the Scala front page doesn't even mention "functional" anymore. Seems like a glaring omission

agree. I've submitted a followup PR, #854. to make room for the additional verbiage, I tightened the prose a bit. let's discuss further there.

re: process issues, well... I'm just so pleased to see the community taking an interest in taking on scala-lang.org improvements at all, tbh. I hope some of y'all who came for this PR will stick around. there are lots of open issues here in this repo, and lots of other room for improvement as well.

@fdietze
Copy link

fdietze commented Mar 11, 2018

It would be interesting to know if this PR actually changes conversion rate. Is this somehow measured on the website?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet