This is an automated email from the ASF dual-hosted git repository. rzo1 pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/storm-site.git
commit fe626ce6f6bed414b63903b0b96ec5ac36004aca Author: Richard Zowalla <[email protected]> AuthorDate: Wed May 6 21:29:30 2026 +0200 Add homepage hero, fork-me ribbon, and restructure header nav Homepage: replace the bare topology image with a gradient hero band that has a tagline, a primary "Download <version>" CTA reading the current release from site.data.releases, and a "Get Started" link to the tutorial. The diagram sits on a white card so it stays legible against the gradient. Header: drop the standalone green Download button (the hero owns the download CTA on the homepage; every other page reaches Downloads via the new Download nav item or the footer). Restructure the nav from 8 mostly-flat items to 7 with cleaner grouping: - "Project Information" -> "About" dropdown that lists all 8 about/ pages directly, instead of a single link to a page that hides them in a sidebar - "Getting Help" and "Talks and Slideshows" moved under Community - "Security", "News", and a new "Download" link kept top-level Add a CSS-only "Fork me on GitHub" ribbon (no images, hidden on small screens) mounted in _layouts/default.html so it appears site-wide. README: update the javadoc guidance to match the javadoc.io migration and note that downloads.html no longer needs manual edits per release. Also gitignore .jekyll-cache/ and .jekyll-metadata (incremental build artefacts that should not be tracked). --- .gitignore | 2 + README.md | 22 ++++------ _includes/header.html | 34 +++++++++++----- _layouts/default.html | 1 + css/style.css | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++ index.html | 45 +++++++++++++-------- 6 files changed, 170 insertions(+), 43 deletions(-) diff --git a/.gitignore b/.gitignore index b44dbbec4a..e6bf420336 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ _site Gemfile.lock .sass-cache/ +.jekyll-cache/ +.jekyll-metadata tmp .DS_Store .bundle \ No newline at end of file diff --git a/README.md b/README.md index b326348b87..569abc707d 100644 --- a/README.md +++ b/README.md @@ -41,14 +41,7 @@ By default, jekyll will generate the site in a `_site` directory. # Adding a new release to the website In order to add a new release, you must have committer access to the storm-site repository at https://github.com/apache/storm-site. -You must first generate Javadoc for the new release. Check out the Storm repository from https://github.com/apache/storm, and check out the version of the code you are releasing. - -You must have already installed the storm-shaded-deps module, so please run `mvn clean install -pl storm-shaded-deps -am` if you haven't built Storm already. - -In the Storm project root run -``` -mvn javadoc:aggregate -DreportOutputDirectory=./docs/ -DdestDir=javadocs -Dnotimestamp=true -pl '!storm-shaded-deps' -``` +Javadocs are no longer kept in this repository — they are served on demand by [javadoc.io](https://javadoc.io/doc/org.apache.storm/storm-client) directly from the artifacts published to Maven Central. There is nothing to generate or copy for javadocs when cutting a new release. In the storm-site project, release documentation is placed under the releases directory named after the release version. See [below](#how-release-specific-docs-work) for details about release specific documentation. @@ -56,10 +49,9 @@ To add documentation for a new release, run the following from the Storm project ``` mkdir ${path_to_storm_site}/releases/${release_name} -#Copy everything over, and compare checksums, except for things that are part of the site, -# and are not release specific like the _* directories that are jekyll specific -# assets/ css/ and README.md -rsync -ac --delete --exclude _\* --exclude assets --exclude css --exclude README.md ./docs/ ${path_to_storm_site}/releases/${release_name} +# Copy everything over except things that are part of the site (and not +# release-specific) and javadocs (which now live on javadoc.io). +rsync -ac --delete --exclude _\* --exclude assets --exclude css --exclude README.md --exclude javadocs ./docs/ ${path_to_storm_site}/releases/${release_name} cd ${path_to_storm_site} git add releases/${release_name} git commit @@ -73,7 +65,7 @@ ln -f -n -s ${release_name} current Compose a new blog post announcement for the new release on the `_posts` folder. You can use the `RELEASE_NOTES.html` file generated on `storm` project to retrieve the specific HTML for this version. -Update the downloads page on `downloads.html` to point to the new version's links. +`downloads.html` is templated and reads the latest version from `site.data.releases` automatically — no manual edits are needed for new releases. ## How release specific docs work @@ -115,10 +107,10 @@ If you wanted to create a maven string to tell people what dependency to use you </dependency> ``` -If you want to refer to a javadoc for the current release use a relative path. It will be in the javadocs subdirectory. +If you want to link to a javadoc page from a release doc, use an absolute URL pointing at javadoc.io. The version segment should match `{{page.version}}` so the link stays correct as docs are reused across releases. ``` -[TopologyBuilder](javadocs/org/apache/storm/topology/TopologyBuilder.html) +[TopologyBuilder](https://javadoc.io/doc/org.apache.storm/storm-client/{{page.version}}/org/apache/storm/topology/TopologyBuilder.html) ``` # Deployment diff --git a/_includes/header.html b/_includes/header.html index 73557b8d2e..c48f9bd32c 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -1,17 +1,14 @@ <header> <div class="container-fluid"> <div class="row"> - <div class="col-md-5"> + <div class="col-md-8"> <a href="/index.html"><img src="/images/logo.png" class="logo"/></a> </div> - <div class="col-md-5"> + <div class="col-md-4"> {% if page.version %} <h1>Version: {{page.version}}</h1> {% endif %} </div> - <div class="col-md-2"> - <a href="/downloads.html" class="btn-std btn-block btn-download">Download</a> - </div> </div> </div> </header> @@ -29,9 +26,6 @@ <nav class="collapse navbar-collapse bs-navbar-collapse" role="navigation"> <ul class="nav navbar-nav"> <li><a href="/index.html" id="home">Home</a></li> - <li><a href="/getting-help.html" id="getting-help">Getting Help</a></li> - <li><a href="/security-model.html" id="security-model">Security</a></li> - <li><a href="/about/integrates.html" id="project-info">Project Information</a></li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="documentation">Documentation <b class="caret"></b></a> @@ -47,18 +41,36 @@ <li><a href="/older-releases.html">Older Versions</a></li> </ul> </li> - <li><a href="/talksAndVideos.html">Talks and Slideshows</a></li> <li class="dropdown"> - <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="contribute">Community <b + <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="about">About <b class="caret"></b></a> <ul class="dropdown-menu"> + <li><a href="/about/integrates.html">Integrates</a></li> + <li><a href="/about/simple-api.html">Simple API</a></li> + <li><a href="/about/scalable.html">Scalable</a></li> + <li><a href="/about/fault-tolerant.html">Fault tolerant</a></li> + <li><a href="/about/guarantees-data-processing.html">Guarantees data processing</a></li> + <li><a href="/about/multi-language.html">Use with any language</a></li> + <li><a href="/about/deployment.html">Easy to deploy and operate</a></li> + <li><a href="/about/free-and-open-source.html">Free and open source</a></li> + </ul> + </li> + <li class="dropdown"> + <a href="#" class="dropdown-toggle" data-toggle="dropdown" id="community">Community <b + class="caret"></b></a> + <ul class="dropdown-menu"> + <li><a href="/getting-help.html">Getting Help</a></li> <li><a href="/contribute/Contributing-to-Storm.html">Contributing</a></li> <li><a href="/contribute/People.html">People</a></li> <li><a href="/contribute/BYLAWS.html">ByLaws</a></li> - <li><a href="/Powered-By.html">PoweredBy</a></li> + <li><a href="/Powered-By.html">Powered By</a></li> + <li role="separator" class="divider"></li> + <li><a href="/talksAndVideos.html">Talks and Slideshows</a></li> </ul> </li> <li><a href="/news.html" id="news">News</a></li> + <li><a href="/security-model.html" id="security-model">Security</a></li> + <li><a href="/downloads.html" id="download">Download</a></li> </ul> </nav> </div> diff --git a/_layouts/default.html b/_layouts/default.html index 9f909df94e..cdb87abe07 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -2,6 +2,7 @@ <html> {% include head.html %} <body> + <a class="github-fork-ribbon" href="https://github.com/apache/storm" target="_blank" rel="noopener" aria-label="Fork Apache Storm on GitHub">Fork me on GitHub</a> {% include header.html %} <div class="container-fluid"> {% unless page.url == "/" or page.url == "/index.html" %} diff --git a/css/style.css b/css/style.css index 1abd69415f..511ae34032 100644 --- a/css/style.css +++ b/css/style.css @@ -721,6 +721,115 @@ footer hr { background-color: #f6f8fa; } +/* Hero (homepage) */ +.hero { + background: linear-gradient(135deg, #235693 0%, #328fbf 100%); + color: #fff; + padding: 60px 0 70px; + margin-bottom: 30px; +} +.hero-text { + padding-top: 20px; +} +.hero-title { + font-size: 42px; + font-weight: 700; + line-height: 1.15; + margin: 0 0 15px; + color: #fff; +} +.hero-tagline { + font-size: 19px; + line-height: 1.45; + margin: 0 0 28px; + opacity: 0.92; + max-width: 540px; +} +.hero-cta { + margin: 0; +} +.hero-image img { + max-width: 100%; + height: auto; + background: #fff; + padding: 18px; + border-radius: 8px; + box-shadow: 0 10px 28px rgba(0, 0, 0, 0.22); +} +.btn-hero { + display: inline-block; + padding: 12px 26px; + margin-right: 10px; + font-size: 16px; + font-weight: 700; + text-decoration: none; + border-radius: 4px; + transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease; + border: 2px solid transparent; +} +.btn-hero-primary { + background-color: #32bf61; + color: #fff; +} +.btn-hero-primary:hover, +.btn-hero-primary:focus { + background-color: #239329; + color: #fff; + text-decoration: none; +} +.btn-hero-secondary { + background-color: transparent; + color: #fff; + border-color: #fff; +} +.btn-hero-secondary:hover, +.btn-hero-secondary:focus { + background-color: #fff; + color: #235693; + text-decoration: none; +} +@media (max-width: 991px) { + .hero { padding: 40px 0 50px; } + .hero-title { font-size: 32px; } + .hero-tagline { font-size: 17px; } + .hero-image { margin-top: 30px; } +} +@media (max-width: 480px) { + .btn-hero { display: block; margin: 0 0 10px; text-align: center; } +} + +/* "Fork me on GitHub" ribbon — pure CSS, no images */ +.github-fork-ribbon { + position: fixed; + top: 38px; + right: -54px; + width: 220px; + padding: 7px 0; + background: #235693; + color: #fff; + font-family: 'Lato', sans-serif; + font-size: 13px; + font-weight: 700; + text-align: center; + letter-spacing: 0.4px; + text-transform: uppercase; + text-decoration: none; + transform: rotate(45deg); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25); + border-top: 1px solid rgba(255, 255, 255, 0.35); + border-bottom: 1px solid rgba(0, 0, 0, 0.25); + z-index: 1000; +} +.github-fork-ribbon:hover, +.github-fork-ribbon:focus { + background: #328fbf; + color: #fff; + text-decoration: none; +} +@media (max-width: 768px) { + .github-fork-ribbon { display: none; } +} + diff --git a/index.html b/index.html index 72d2e7f41b..4853b41dcc 100644 --- a/index.html +++ b/index.html @@ -2,36 +2,47 @@ layout: default title: Apache Storm --- +{% assign current = site.data.releases | where: "has-download", true | first %} +<div class="hero"> + <div class="container-fluid"> + <div class="row"> + <div class="col-md-7 hero-text"> + <h2 class="hero-title">Distributed real-time computation</h2> + <p class="hero-tagline">Distributed real-time computation. Free and open source. Process unbounded streams of data — fast, fault-tolerant, and reliable.</p> + <p class="hero-cta"> + <a href="/downloads.html" class="btn-hero btn-hero-primary">Download {{ current.name }}</a> + <a href="/releases/current/Tutorial.html" class="btn-hero btn-hero-secondary">Get Started</a> + </p> + </div> + <div class="col-md-5 hero-image"> + <img src="images/storm-flow.png" class="img-responsive" alt="An Apache Storm topology with its spouts and bolts" /> + </div> + </div> + </div> +</div> <div class="content"> - <div class="container-fluid"> - <div class="row"> - <div class="col-md-8"> - <img src="images/storm-flow.png" class="img-responsive" alt="An Apache Storm topology with its spouts and bolts" style="padding-left: 50px;" /> + <div class="container-fluid"> + <div class="row"> + <div class="col-md-8"> + <div class="box-primary"> + <h4>Why use Apache Storm?</h4> + <p>Apache Storm is a free and open source distributed realtime computation system. Apache Storm makes it easy to reliably process unbounded streams of data, doing for realtime processing what Hadoop did for batch processing. Apache Storm is simple, can be used with any programming language, and is a lot of fun to use!</p> + <p>Apache Storm has many use cases: realtime analytics, online machine learning, continuous computation, distributed RPC, ETL, and more. Apache Storm is fast: a benchmark clocked it at over <strong>a million tuples processed per second per node</strong>. It is scalable, fault-tolerant, guarantees your data will be processed, and is easy to set up and operate.</p> + <p>Apache Storm integrates with the queueing and database technologies you already use. An Apache Storm topology consumes streams of data and processes those streams in arbitrarily complex ways, repartitioning the streams between each stage of the computation however needed. Read more in the <a href="/releases/current/Tutorial.html">tutorial</a>.</p> </div> + </div> <div class="col-md-4"> <div class="box-warning"> <h4>Latest News</h4> - <!-- test git pubsub --> <ul class="latest-news"> {% for post in site.posts limit:3 %} <li><a href="{{ post.url }}">{{ post.title }}</a> <span class="small">({{ post.date | date_to_string }}) </span></li> {% endfor %} - </ul> + </ul> <p align="right"><a href="/news.html" class="btn-std">More News</a></p> </div> </div> </div> - <div class="row"> - <div class="col-md-12"> - <div class="box-primary"> - <h4>Why use Apache Storm?</h4> - <p>Apache Storm is a free and open source distributed realtime computation system. Apache Storm makes it easy to reliably process unbounded streams of data, doing for realtime processing what Hadoop did for batch processing. Apache Storm is simple, can be used with any programming language, and is a lot of fun to use!</p> - <p>Apache Storm has many use cases: realtime analytics, online machine learning, continuous computation, distributed RPC, ETL, and more. Apache Storm is fast: a benchmark clocked it at over <strong>a million tuples processed per second per node</strong>. It is scalable, fault-tolerant, guarantees your data will be processed, and is easy to set up and operate.</p> - <p>Apache Storm integrates with the queueing and database technologies you already use. An Apache Storm topology consumes streams of data and processes those streams in arbitrarily complex ways, repartitioning the streams between each stage of the computation however needed. Read more in the tutorial.</p> - </div> - </div> - </div> </div> </div> -
