-
Notifications
You must be signed in to change notification settings - Fork 323
further edits to copy on landing page #854
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
Conversation
Some bikeshedding:
Overall looks good to me. |
index.md
Outdated
@@ -3,7 +3,7 @@ layout: frontpage | |||
|
|||
# Header texts | |||
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 efficient, high-performance systems, with easy access to a huge ecosystem of libraries." | |||
headerSubtitle: "Scala combines object-orientation with functional programming into one concise, high-level language. Scala's type system helps avoid bugs in complex applications, and its JVM target lets you build high-performance systems with easy access to a huge ecosystem of libraries." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it sounds better to start with "Scala is ..." and state some of the main goals of the language, something like:
"Scala is a concise, statically typed, high-level programming language supporting object-oriented and functional styles."
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"[...] and it runs on the JVM, yielding high performance and easy access to a huge ecosystem of libraries."
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My two cents (borrowed from “why, what and how”):
- always start with the “why”
As a software developer, my why for Scala is:
- “write less code, but more code of high quality”
Feel free to use this as the tag line. :-)
index.md
Outdated
@@ -3,7 +3,7 @@ layout: frontpage | |||
|
|||
# Header texts | |||
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 efficient, high-performance systems, with easy access to a huge ecosystem of libraries." | |||
headerSubtitle: "Scala combines object-orientation with functional programming into one concise, high-level language. Scala's type system helps avoid bugs in complex applications, and its JVM target lets you build high-performance systems with easy access to a huge ecosystem of libraries." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For "JVM target": the page below talks about "backends", so "JVM backend" might be more consistent. But both "target" and "backend" are compiler jargon. "JVM support" seems like a good compromise, since it encompasses both compiler and runtime.
index.md
Outdated
@@ -3,7 +3,7 @@ layout: frontpage | |||
|
|||
# Header texts | |||
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 efficient, high-performance systems, with easy access to a huge ecosystem of libraries." | |||
headerSubtitle: "Scala combines object-orientation with functional programming into one concise, high-level language. Scala's type system helps avoid bugs in complex applications, and its JVM target lets you build high-performance systems with easy access to a huge ecosystem of libraries." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can we change high-level
for general-purpose
language? https://en.wikipedia.org/wiki/General-purpose_programming_language
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
High level and general purpose are different things. https://en.m.wikipedia.org/wiki/High-level_programming_language
I think high level is more descriptive.
index.md
Outdated
@@ -3,7 +3,7 @@ layout: frontpage | |||
|
|||
# Header texts | |||
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 efficient, high-performance systems, with easy access to a huge ecosystem of libraries." | |||
headerSubtitle: "Scala combines object-orientation with functional programming into one concise, high-level language. Scala's type system helps avoid bugs in complex applications, and its JVM target lets you build high-performance systems with easy access to a huge ecosystem of libraries." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I vote for "JVM runtime" instead of "JVM target".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How about Java runtime?
It'd be nice to see the OO meets functional line come back. That was one of the niftier marketing bits on the original text, IMO |
I liked "object-oriented meets functional", it's sad that it is currently gone. |
I also feel there is nothing wrong or confusing about "object-oriented meets functional" it is nifty, succinct and gets the point across. In fact, it captures what the new text is trying to say. Just that now, the text is more verbose: "Scala combines object-orientation with functional programming...", that's more words for the very same thing. |
Indeed, "Object-Oriented Meets Functional" is a nice catch phrase. So how about this? With emphasis for the important keywords to flash.
A nice thing is that it makes it clear that whether you build a Java or Javascript application, specifying the dependencies is easy. In my experience languages like Go have a pretty bad story in comparison. |
I am strongly against I'm not sure if we want to put I think the rest of @LPTK's full blurb is great but slightly too long. The reason I left of |
I would be in favor of putting JavaScript up there. Btw, it's written JavaScript, with an uppercase S. While Lightbend's management does not seem to be encouraging Scala.js, the Scala Center has a Recommendation to ensure Scala.js' future, so at least it has been officialized on that side. Unrelated: I'd put "statically typed" in there too; that's probably the number 1 thing people wonder about a language, whether it's statically or dynamically typed. It seems every language front page gives that info above the fold. |
I don't think we should be underestimating potential Scala users either. And in many cases |
Then what about (middle sentence reduced):
|
I agree with @lihaoyi on "Object Oriented Meets Functional". I think that 10 years ago, that was a major differentiator. But now, many (if not most) popular new programming languages have taken their cues from Scala on this front (e.g. Swift, TypeScript, Kotlin, Rust), and most programming languages from the 90s to early 2000s have grown enough features and patterns to claim they are functional (e.g. Python, Ruby, Java). We have to recognize that buzzwords carry a lot of meaning to people with context, but it's just a word salad to newcomers. It is better to identify that underlying meaning and call it out. I think what actually makes Scala unique is that it is statically typed, functional, and object-oriented at the very core of its evaluation model, which makes these three pieces fit together arguably better than any other language. Why is that important? Because it allows tighter abstractions to be built using the building blocks provided by the language. You can get an almost Pythonic/Ruby-like experience of application code that maps tightly to your business domain without being clogged with language boilerplate. For the purposes of an introductory blurb, the challenge is whether that can be messaged as a concrete advantage to a programmer with no context. If it can't be, I think it is best to leave it out and dig into it where there is more space. |
@LPTK here's another re-wording that I think maintains the essence but is even shorter
|
@lihaoyi seems good to me. Though perhaps keep the "easy", or even "effortless"? 😃
Also, I think the bold face on keywords is an important feature to make the text easily scanned by someone who would have not taken the time to actually read it in detail. |
I think it is useful te keep in mind that this page isn’t a Wikipedia entry. It’s purpose is to sell Scala IMHO. That’s something Wikipedia itself won’t let you do. Let’s make sure we capture the “why Scala” strongly for those we are trying to attract. |
I really think the text portion stands out better as bullet items as in the original suggestion rather than a paragraph of text. |
@fdietze asked:
I went further back on archive.org to look at the blurb on the Scala front page over the years and found it contained elements eerily similar to some of the current proposals. 2007-2009
2009-2013
2013-2018
Looking at Google Trends, it seems that search popularity increased most in early 2009 and late 2012. Not sure if the blurb can take much credit for this activity. Probably other factors attracted people to Scala. The incorporation of Typesafe, the publishing of Coursera courses and then Heather building out this site and the docs site are probably more noteworthy. I'm sure there are others I'm forgetting. |
The explosion in popularity of Spark is probably a factor. |
The "Object-Oriented Meets Functional" tagline seems to inspire both love and hate. I've attempted to honor the love by returning wording about OO and FP to a prominent position (more prominent than in Haoyi's last-suggested version), but I didn't bring the actual tagline back. There was other good feedback on this PR that I haven't specifically incorporated. I'm hitting "merge" regardless as my overall sense of the feedback is that we've taken a clear step forward here. Followup PRs remain possible. |
@ashawley with conversion rate I meant the fraction of website visitors who are (for example) clicking the "learn more" button. https://en.wikipedia.org/wiki/Conversion_marketing#Conversion_rate |
Moderate number of buzz words help SEO. I think this PR is good when having |
candidate buzzwords: https://twitter.com/mlrawlings/status/974823927917641728 ;-) |
@SethTisue why does the text now say "huge ecosystems of libraries," instead of "a huge ecosystem"? Doesn't it make it unnecessarily sound like the Scala ecosystem is fragmented? |
The way I understand it is that it refers to the JVM and JS ecosystems. |
@SethTisue you missed: |
First off, thanks to everyone involved in improving the wording on the landing page. The latest version is certainly more meaningful to newcomers. Here are a few more ideas. The first sentence starts with "Scala", the second with "Scala's". We could improve it as follows:
This is not entirely accurate since Scala does not ship a JVM/JavaScript runtime. If JavaScript and JVM are mentioned, the LLVM target needs to be enumerated. Two proposals:
Instead of listing all platforms, we could shorten the phrase to the following formulation which would cover all three targets:
|
LLVM is an implementation detail. The target is Native code. /cc @densh, if we're going to talk about including Scala Native in there. |
@tindzk that's an issue all to itself, distinct from wordsmithing the marketing. could you make a separate ticket on that, please? promoting Scala Native to the level of JVM and JS would require coordinated changes in multiple places. |
re: "Scala" vs "its", I went back and forth on that a few times actually, not sure what I think. I don't think "cross-platform" is a good wording, since the JVM itself is cross-platform in the sense of Windows/Mac/Linux/etc. |
@SethTisue Thanks for your feedback! Sure, I will create a separate issue regarding promoting Scala Native. As for "cross-platform", I used the official definition from: https://github.com/portable-scala/sbt-crossproject |
this is a sequel to #852