diff --git a/src/main/java/org/apache/tomee/website/Configuration.java b/src/main/java/org/apache/tomee/website/Configuration.java
index 8b09b52..2716530 100644
--- a/src/main/java/org/apache/tomee/website/Configuration.java
+++ b/src/main/java/org/apache/tomee/website/Configuration.java
@@ -55,10 +55,11 @@
         };
 
         return new Source[]{
-                new Source("https://gitbox.apache.org/repos/asf/tomee.git", "master", "tomee-8.0", true).related(microProfile2).related(jakartaEE8),
-                new Source("https://gitbox.apache.org/repos/asf/tomee.git", "tomee-7.1.0", "tomee-7.1"),
-                new Source("https://gitbox.apache.org/repos/asf/tomee.git", "tomee-7.0.5", "tomee-7.0"),
-                new Source("https://gitbox.apache.org/repos/asf/tomee.git", "master", "master"),
+//                new Source("https://github.com/apache/tomee.git", "master", "tomee-8.0"),
+                new Source("https://github.com/apache/tomee.git", "master", "tomee-8.0", true).related(microProfile2).related(jakartaEE8),
+                new Source("https://github.com/apache/tomee.git", "tomee-7.1.0", "tomee-7.1"),
+                new Source("https://github.com/apache/tomee.git", "tomee-7.0.5", "tomee-7.0"),
+                new Source("https://github.com/apache/tomee.git", "master", "master"),
                 new Source("https://github.com/eclipse/microprofile-bom.git", "master", "microprofile-2.0").related(microProfile2),
                 new Source("https://github.com/eclipse-ee4j/jakartaee-platform.git", "master", "jakartaee-8.0").related(jakartaEE8)
         };
diff --git a/src/main/java/org/apache/tomee/website/Javadocs.java b/src/main/java/org/apache/tomee/website/Javadocs.java
index 4818378..89a3846 100644
--- a/src/main/java/org/apache/tomee/website/Javadocs.java
+++ b/src/main/java/org/apache/tomee/website/Javadocs.java
@@ -18,12 +18,15 @@
 
 import org.apache.openejb.loader.Files;
 import org.apache.openejb.loader.IO;
+import org.apache.openejb.util.Join;
 import org.apache.openejb.util.Pipe;
 
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Path;
+import java.util.List;
 import java.util.function.Supplier;
+import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 import static org.apache.openejb.loader.Files.mkdirs;
@@ -81,12 +84,13 @@
             copySource(related, javaSources);
         }
 
+        final File javadocOutput = sources.getGeneratedDestFor(source, "javadoc");
         final ProcessBuilder cmd = new ProcessBuilder(
                 getJavadocCommand().getAbsolutePath(),
                 "-sourcepath",
                 javaSources.getAbsolutePath(),
                 "-d",
-                sources.getGeneratedDestFor(source, "javadoc").getAbsolutePath()
+                javadocOutput.getAbsolutePath()
         );
 
         Stream.of(javaSources.listFiles())
@@ -97,9 +101,43 @@
                 });
 
         try {
-            Pipe.pipe(cmd.start());
+            final Process process = cmd.start();
+            Pipe.pipe(process);
+            process.waitFor();
         } catch (IOException e) {
             throw new IllegalStateException("Command failed");
+        } catch (InterruptedException e) {
+            Thread.interrupted();
+            throw new IllegalStateException("Command failed");
+        }
+
+        // Scrub generated timestamps as it causes 26k needless file updates
+        // on the svn commit for every time the generator runs
+        try {
+            java.nio.file.Files.walk(javadocOutput.toPath())
+                    .map(Path::toFile)
+                    .filter(File::isFile)
+                    .filter(this::isHtml)
+                    .forEach(Javadocs::removeGeneratedDate);
+        } catch (IOException e) {
+            throw new IllegalStateException("Failed to remove timestamp from generated javadoc html");
+        }
+
+    }
+
+    public static void removeGeneratedDate(final File file) {
+        try {
+            final List<String> lines = Stream.of(IO.slurp(file).split("\n"))
+                    .filter(line -> !line.contains("<!-- Generated by javadoc"))
+                    .filter(line -> !line.contains("<meta name=\"date\" content=\""))
+                    .collect(Collectors.toList());
+            final String updated = Join.join("\n", lines) + "\n";
+
+            // Write the cleaned version to disk
+            IO.copy(IO.read(updated), file);
+
+        } catch (IOException e) {
+            throw new IllegalStateException(e);
         }
     }
 
@@ -158,4 +196,7 @@
     private boolean isJava(final File file) {
         return file.getName().endsWith(".java");
     }
+    private boolean isHtml(final File file) {
+        return file.getName().endsWith(".html");
+    }
 }
diff --git a/src/main/jbake/content/community/culture.adoc b/src/main/jbake/content/community/culture.adoc
new file mode 100644
index 0000000..dcaa8a5
--- /dev/null
+++ b/src/main/jbake/content/community/culture.adoc
@@ -0,0 +1,6 @@
+= Apache TomEE Community Culture
+:jbake-date: 2019-05-02
+:jbake-type: page
+:jbake-status: published
+
+==
\ No newline at end of file
