Index: sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/content-reference.php
===================================================================
--- sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/content-reference.php	(revision 597)
+++ sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/content-reference.php	(working copy)
@@ -27,7 +27,11 @@
 	$source_file = get_source_file();
 	if ( ! empty( $source_file ) ) : ?>
 	<section class="source">
-		<p><strong><?php _e( 'Source:', 'wporg' ); ?></strong> <a href="<?php echo get_source_file_link( $source_file ); ?>"><?php echo esc_html( $source_file ); ?></a></p>
+		<p>
+			<strong><?php _e( 'Source:', 'wporg' ); ?></strong>
+			<a href="<?php echo get_source_file_link( $source_file ); ?>"><?php echo esc_html( $source_file ); ?></a>
+			(<a href="<?php echo get_source_file_trac_link( $source_file ); ?>"><?php _e( 'Browse in Trac', 'wporg' ); ?></a>)
+		</p>
 	</section>
 	<?php endif; ?>
 
Index: sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/inc/template-tags.php
===================================================================
--- sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/inc/template-tags.php	(revision 597)
+++ sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-developer/inc/template-tags.php	(working copy)
@@ -532,6 +532,21 @@
 	}
 
 	/**
+	 * Retrieve URL to source file in Trac
+	 *
+	 * @param string $name
+	 *
+	 * @return string
+	 */
+	function get_source_file_trac_link( $name = null ) {
+
+		$trac_browser_url   = 'https://core.trac.wordpress.org/browser/trunk/src/';
+		$source_file_object = wp_get_post_terms( empty( $post_id ) ? get_the_ID() : $post_id, 'wp-parser-source-file', array( 'fields' => 'names' ) );
+
+		return empty( $source_file_object ) ? '' : esc_url( $trac_browser_url . $source_file_object[0] );
+	}
+
+	/**
 	 * Retrieve name of source file
 	 *
 	 * @param int $post_id
