Comment

Comment by claytongulick

This is an extremely cool project, but after browsing the source code a bit, it looks like it's badly in need of modernization.

CSS is Bootstrap 3.

The docs reference Web Components, and I do see the use of customElements.define() so (I think?) it's using "real" Web Components technologies, but the code is indecipherable to me:

  var n = t.getAttribute('name') || '';
  if (!n)
   return;

  var p = t.getAttribute(T_PATH) || 'null';
  var c = t.getAttribute(T_CONFIG) || 'null';
  var d = t.getAttribute(T_DEFAULT) || '';
  var s = '__';

  var meta = n + s + p + s + c + (d ? (s + d) : '');
  t.$jcwebcomponent = true;

  compilecomponent(meta, t);
Note, this isn't the minified version, it's straight from jc.js, not jc.min.js.

Looking through it, most of the code is like this, and there's liberal use of "var". This isn't a cherrypicked example. It looks like it was originally written about six years ago, and I see active commits, so it's really confusing to me why the code base would be in such rough shape.

The components implementation is very pythonic - it passes "self" around to decorate with functions, it doesn't look like it's been modernized to use classes.

From a features standpoint, the project is very cool. My concern with choosing to use it in a production app is the enormous amount of very obvious technical debt that I'm seeing.

At some point, this will either need a major overhaul and rewrite (an extraordinary effort for a project this size), a dual-implementation support (like react and a few others did, with class based and functional APIs both supported) and a long, slow reimplementation path, or a decay into obsolescence as the core frameworks becomes hopelessly outdated and difficult to maintain.

That's a really difficult technical position to be in, and I sympathize with the challenge ahead. Clearly there are very talented developers working on this project, I'm looking forward to seeing how they solve these issues moving forward.

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton