You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nvd3/blog/2014/03/state-of-nvd3/index.html

253 lines
10 KiB
HTML

<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<title>The Future of NVD3 - March, 2014 - NVD3</title>
<meta name="author" content="Novus Partners">
<meta name="description" content="When I joined Novus last November, I&rsquo;d spent some time playing with three.js visualizations, but hadn&rsquo;t really looked at that d3 thing. &hellip;">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="http://nvd3.org//blog/2014/03/state-of-nvd3">
<link href="/favicon.png" rel="icon">
<!-- <link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css"> -->
<link href="/atom.xml" rel="alternate" title="NVD3" type="application/atom+xml">
<script src="/javascripts/modernizr-2.0.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="//fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="//fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="/assets/css/bootstrap.css" rel="stylesheet">
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.statement_para {
font-size: 14pt;
line-height: 120%;
width: 60%;
text-align: justify;
text-justify: distribute;
margin: 10px auto;
margin-bottom: 30px;
}
</style>
<link href="/assets/css/common.css" rel="stylesheet">
<link href="/assets/css/nv.d3.css" rel="stylesheet">
<script src="/assets/js/lib/bootstrap.min.js"></script>
<script src="/assets/lib/d3.v3.js"></script>
<script src="/assets/js/nv.d3.js"></script>
<script src="/assets/js/data/stream_layers.js"></script>
<script src="/assets/js/page/index.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-33058059-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body >
<nav role="navigation"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="/index.html">NVD3.js</a>
<div class="nav-collapse">
<ul class="nav">
<li class="active"><a href="/index.html"><i class="icon-white icon-home"></i> Home</a></li>
<li><a href="/examples/index.html"><i class="icon-white icon-picture"></i> Examples</a></li>
<li><a href="/livecode/index.html"><i class="icon-white icon-play-circle"></i> Live Code</a></li>
<li><a href="http://github.com/novus/nvd3"><i class="icon-white icon-list-alt"></i> Source</a></li>
<li><a href="/blog/archives/"><i class="icon-white icon-book"></i> Blog</a></li>
</ul>
<ul class="nav pull-right">
<li><p class="navbar-text"><i class="icon-white icon-download"></i> Downloads:</p></li>
<li>
<div class="btn-group">
<a class="btn btn-small btn-primary" href="https://github.com/novus/nvd3/zipball/master">ZIP</a>
<a class="btn btn-small btn-primary" href="https://github.com/novus/nvd3/tarball/master">TAR.GZ</a>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</nav>
<div class="container with-3d-shadow with-transitions">
<div>
<article class="hentry" role="article">
<header>
<h1 class="entry-title">The Future of NVD3 - March, 2014</h1>
<p class="meta">
<time datetime="2014-03-12T17:44:38-04:00" pubdate data-updated="true">Mar 12<span>th</span>, 2014</time>
</p>
</header>
<div class="entry-content"><p>When I joined Novus last November, I&rsquo;d spent some time playing with three.js visualizations, but hadn&rsquo;t really looked at that d3 thing. Of course, as a financial technology firm, 2d charts and graph visualizations are all we do. So I learned d3, and this little nvd3 home-grown thing. I knew there was a community out there &ndash; at least, I&rsquo;d come across random tweets mentioning it, but I really hadn&rsquo;t dug in. Then I had to make some changes. Before you know it, I&rsquo;m waist deep in refactoring what for all intents and purposes was an internal prototyped tech demo that&rsquo;s become a great project on Github! Yet we&rsquo;ve been, to the community&rsquo;s detriment, busy at Novus.</p>
<p>Yes, we knew the PR and issue counts were rising, but we&rsquo;re heads down on some internal projects, and no one really pushed or prodded us about nvd3. My colleagues robinfhu, twolfnovus, and fshao816 were fixing bugs, adding some features we needed, and generally making it look like NVD3 was still making progress. Turns out, just because no one in the community is yelling, doesn&rsquo;t mean there aren&rsquo;t problems! After getting a foreceful tweet from John Schulz (@JFSIII), I asked around my colleagues and realized we had, in fact, been getting quite a few quiet pokes and prods. The growing issue count is obviously frustrating to people trying to use the library, but the growing PR count shows people are still very much trying to create a successful, sustainable project in spite of Novus&#8217; lack of recent feedback &ndash; we clearly cannot leave our heads in the sand and just hope that what we need happens to be what you need.</p>
<p>The good news &ndash; we&rsquo;re reprioritizing, moving NVD3 way up in our list of UI focus at Novus. The bad news &ndash; NVD3 is still at number two, behind a massive internal rewrite we&rsquo;ve been doing since Decemeber of 2013, due to complete in the next couple months. The ugly news &ndash; NVD3 needs a major refactor. As I mentioned, it really is a large tech demo, with large swaths of copy-paste code, duplicated logic, and complete lack of overall architecture. The testing is piecemeal, spotty, and manual. The build, though is super fast. Basically, we want to refactor this into something that makes a lot more sense, and follows much better coding principles (seperate some concerns, DRY out the wet parts, wrap it in a test harness). We have started this work, and are using it internally &ndash; you can track it in <a href="https://github.com/novus/nvd3/pull/442">this pull request</a>.</p>
<p>Beyond this code work, we need to expand the way we accept community feedback. We would like to find trusted collaborators to empower with access to the novus/nvd3 repository. If you are interested, please email me &ndash; dsouther (at )novus( dot)com.</p>
<p>Over the next few weeks, we&rsquo;ll have a better understanding of the balance between internal projects and NVD3 itself. In short, look for three things in the coming couple months.</p>
<ul>
<li>Refactor NVD3 to a maintainable codebase.</li>
<li>Clear the Issues and PR Backlog.</li>
<li>Add nvGrid, a powerful grid / table component.</li>
</ul>
<p>This is where we&rsquo;re at today, and we have some good improvements that we want to put in place between now and June. Keep your dial tuned!</p>
<p><em>Yours,</em></p>
<p><strong>David Souther</strong></p>
<p><em>Software Architect &ndash; Novus Partners</em></p>
</div>
<footer>
<p class="meta">
<span class="byline author vcard">Posted by <span class="fn">Novus Partners</span></span>
<time datetime="2014-03-12T17:44:38-04:00" pubdate data-updated="true">Mar 12<span>th</span>, 2014</time>
</p>
<div class="sharing">
<a href="//twitter.com/share" class="twitter-share-button" data-url="http://nvd3.org//blog/2014/03/state-of-nvd3/" data-via="" data-counturl="http://nvd3.org//blog/2014/03/state-of-nvd3/" >Tweet</a>
<div class="g-plusone" data-size="medium"></div>
</div>
<p class="meta">
<a class="basic-alignment right" href="/blog/2014/03/nvd3-issues-triage/" title="Next Post: nvd3 issues triage">nvd3 issues triage &raquo;</a>
</p>
</footer>
</article>
</div>
<footer role="contentinfo"><p>
Copyright &copy; 2014 - <a href="http://www.novus.com">Novus Partners</a> -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
</footer>
<script type="text/javascript">
(function() {
var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true;
script.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(script, s);
})();
</script>
<script type="text/javascript">
(function(){
var twitterWidgets = document.createElement('script');
twitterWidgets.type = 'text/javascript';
twitterWidgets.async = true;
twitterWidgets.src = '//platform.twitter.com/widgets.js';
document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
})();
</script>
</div>
</body>
</html>