<?xml version="1.0" encoding="UTF-8" standalone="yes"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-us"><id>https://blog.pgxn.org/tags/status-update/</id><title>Status Update</title><updated>2010-09-28T17:29:48Z</updated><link rel="self" type="application/atom+xml" href="https://blog.pgxn.org/tags/status-update/feed.xml"/><link rel="alternate" type="text/html" href="https://blog.pgxn.org/tags/status-update/"/><author><name>The PGXN Maintainers</name></author><generator uri="https://gohugo.io/" version="0.167.0">Hugo</generator><entry><id>https://blog.pgxn.org/post/1205127396</id><title type="html">Quick Status Update</title><link rel="alternate" type="text/html" href="https://blog.pgxn.org/2010/quick-status-update/"/><updated>2026-10-07T16:13:48Z</updated><published>2010-09-28T17:29:48Z</published><author><name>David E. Wheeler</name></author><category scheme="https://blog.pgxn.org/tags" term="status-update" label="Status Update"/><category scheme="https://blog.pgxn.org/tags" term="manager" label="Manager"/><category scheme="https://blog.pgxn.org/tags" term="contribute" label="Contribute"/><category scheme="https://blog.pgxn.org/tags" term="sponsor" label="Sponsor"/><summary type="html"><![CDATA[<p>Sometimes I wish I weren&rsquo;t such a perfectionist.</p>
<p>But not often.</p>
<p>A quick update:</p>
<p>So far, I&rsquo;ve spent 43 hours on the <a href="https://github.com/theory/pgxn-manager" title="PGXN Manager repository on GitHub">PGXN Manager</a> database. I had estimated 24
hours. Ha ha ha ha ha!</p>
<p>I&rsquo;ve spent 45 hours on the implementation of the app itself. I had estimated
40 hours.</p>
<p>How will I make up the difference? I&rsquo;m not sure, really. I&rsquo;ve already
under-recorded my hours quite a lot, basically donating my time to create
<a href="https://search.cpan.org/perldoc?SemVer">SemVer</a> and to create the basic HTML layout for the site (I suck at design,
but found <a href="https://andreasviklund.com/templates/andreas07/">a good template</a> to base it on). That will likely continue. This is
an OSS project, and while I&rsquo;m getting paid to work on it thanks to our
<a href="https://pgxn.org/contributors.html">generous contributors</a>, I&rsquo;m also contributing quite a lot of time to it.</p>]]></summary><content type="html" xml:base="https://blog.pgxn.org/" xml:space="preserve"><![CDATA[<p>Sometimes I wish I weren&rsquo;t such a perfectionist.</p>
<p>But not often.</p>
<p>A quick update:</p>
<p>So far, I&rsquo;ve spent 43 hours on the <a href="https://github.com/theory/pgxn-manager" title="PGXN Manager repository on GitHub">PGXN Manager</a> database. I had estimated 24
hours. Ha ha ha ha ha!</p>
<p>I&rsquo;ve spent 45 hours on the implementation of the app itself. I had estimated
40 hours.</p>
<p>How will I make up the difference? I&rsquo;m not sure, really. I&rsquo;ve already
under-recorded my hours quite a lot, basically donating my time to create
<a href="https://search.cpan.org/perldoc?SemVer">SemVer</a> and to create the basic HTML layout for the site (I suck at design,
but found <a href="https://andreasviklund.com/templates/andreas07/">a good template</a> to base it on). That will likely continue. This is
an OSS project, and while I&rsquo;m getting paid to work on it thanks to our
<a href="https://pgxn.org/contributors.html">generous contributors</a>, I&rsquo;m also contributing quite a lot of time to it.</p>
<p>Speaking of contributors, we&rsquo;ve still not quite met our fundraising goals.
There&rsquo;s enough there for me to finish PGXN Manager so that you can start
releasing your extensions on PGXN, and for me to start on the search and
documentation site, but not finish it. If you know any organizations that
would like to sponsor this work and get their name and link on the PGXN site
in perpetuity, please <a href="https://pgxn.org/">send them over!</a>.</p>
<p><em>Ahem.</em></p>
<p>So what have I been doing? I&rsquo;ll write up some notes in a few other blog posts,
including how I&rsquo;m generating JSON in the database, using <a href="https://plackperl.org/">Plack</a> for the app,
and nicely-degrading Ajaxification with <a href="https://jquery.org/">jQuery</a> and RESTful URLs (I hope!).
The main page of the app works, as does authentication via basic auth. There&rsquo;s
a screen to request a user account, and a UI for PGXN admins to accept or
reject such requests. To make it actually usable, I just need to add the
upload feature for users, and then I can do a first release. That will allow
people to sign up, get approved, and start uploading extensions for
distribution on PGXN.</p>
<p>I <em>will</em> get that that done this week.</p>
<p>After that, I&rsquo;ll add screens for users to edit their account information,
change passwords, reset passwords, and edit permissions. I expect each of
those to take less time, as they&rsquo;ll use a lot of the infrastructure I&rsquo;ve
already built.</p>
<p>Watch this space, and thanks for your patience!</p>
<p>Oh, and if you want to help out, please do fork <a href="https://github.com/theory/pgxn-manager" title="PGXN Manager repository on GitHub">PGXN::Manager</a>
and ping me in #pgxn on Freenode for the deets on getting it built.</p>
]]></content></entry><entry><id>https://blog.pgxn.org/post/1082188310</id><title type="html">Status Update: DB API, Extension Versions RFC</title><link rel="alternate" type="text/html" href="https://blog.pgxn.org/2010/db-status-update/"/><updated>2026-10-07T16:13:48Z</updated><published>2010-09-07T18:46:38Z</published><author><name>David E. Wheeler</name></author><category scheme="https://blog.pgxn.org/tags" term="status-update" label="Status Update"/><category scheme="https://blog.pgxn.org/tags" term="database" label="Database"/><category scheme="https://blog.pgxn.org/tags" term="api" label="API"/><category scheme="https://blog.pgxn.org/tags" term="documentation" label="Documentation"/><category scheme="https://blog.pgxn.org/tags" term="extensions" label="Extensions"/><category scheme="https://blog.pgxn.org/tags" term="versions" label="Versions"/><category scheme="https://blog.pgxn.org/tags" term="rfc" label="RFC"/><summary type="html"><![CDATA[I spent most of the time I had to work on PGXN the last two weeks creating the
database for <a href="https://github.com/theory/pgxn-manager/">PGXN Manager</a>. I had estimated 24 hours of work to design the
database. So far I&rsquo;ve logged 34 hours. But I think that will come out in the
wash, really, because I did a lot of work to generate JSON from database
functions. This is code I had originally expected to do in the app layer. I&rsquo;m
starting work on that this week, with an estimated 40 hours. Hope I can do it
in 30. :-)]]></summary><content type="html" xml:base="https://blog.pgxn.org/" xml:space="preserve"><![CDATA[<p>I spent most of the time I had to work on PGXN the last two weeks creating the
database for <a href="https://github.com/theory/pgxn-manager/">PGXN Manager</a>. I had estimated 24 hours of work to design the
database. So far I&rsquo;ve logged 34 hours. But I think that will come out in the
wash, really, because I did a lot of work to generate JSON from database
functions. This is code I had originally expected to do in the app layer. I&rsquo;m
starting work on that this week, with an estimated 40 hours. Hope I can do it
in 30. :-)</p>
<p>I&rsquo;m pretty happy with how the database API is turning out. See the nifty
<a href="https://github.com/theory/pgxn-manager/wiki/DB-API">database API documentation</a> I whipped up using <a href="https://github.com/theory/pgxn-manager/blob/master/bin/gendoc">gendoc</a> and embedded
<a href="https://fletcherpenney.net/multimarkdown/users_guide/multimarkdown_syntax_guide/">MultiMarkdown</a>. There are still a few tweaks I need to make. I just checked
in a change to eliminate all the <code>ALIAS</code>es I <a href="https://blog.pgxn.org/post/1053165383/alias-in-vogue">blogged about</a> last week. Turns
out that one can just <a href="https://archives.postgresql.org/pgsql-hackers/2010-09/msg00404.php">function-name-qualify</a> the function parameter names.
Who knew? I sure didn&rsquo;t.</p>
<p>But I do have a question for you, dear readers. Right now, the database
requires that extensions have unique version numbers in every distribution. So
if, for example, you uploaded the distribution foo 1.2.2 with the extension
bar 1.2.2, when you next uploaded foo 1.2.3, bar could not be 1.2.2. I
designed this this way by following my own practice of always incrementing the
version numbers of all modules included in my <a href="https://search.cpan.org/~dwheeler/">CPAN distributions</a>. So all
modules have unique version numbers, with never a duplicate.</p>
<p>However, CPAN itself only cares that distributions have unique version
numbers. It doesn&rsquo;t care about the version numbers of included modules. See,
for example, <a href="https://search.cpan.org/dist/HTML-Mason/">HTML::Mason</a>. Note that the various included modules have all
sorts of different version numbers, and many have no version numbers at all.
So while the core module has a version number (1.45 at the time of this
writing), if you click to look at older versions, say <a href="https://search.cpan.org/~drolsky/HTML-Mason-1.44/">Mason 1.44</a>, you&rsquo;ll see
that no other modules have their version numbers changed.</p>
<p>I don&rsquo;t think I want to allow extensions without version numbers on PGXN.
That&rsquo;s been a recipe for many annoyances with CPAN. But maybe I should allow
extension version numbers to repeat? The upside is less maintenance for
multi-extension distribution authors. The downside is potentially less
accuracy in the determination of prerequisites.</p>
<p>For example, say that we have two versions of distribution foo:</p>
<pre tabindex="0"><code>  -----------------------------------------------------------------------------
  Distribution                           Extensions
  -------------------------------------- --------------------------------------
  foo 1.2.2                              foo 1.2.2\
                                         bar 1.2.2
<h2 id="bar-122">foo 1.2.3                              foo 1.2.3<br>
bar 1.2.2</h2>
<p></code></pre><p>Note how the version number of extension bar has not changed between releases.
But if I was a user of both foo and bar, and I specified that I required bar
1.2.2 but was actually using stuff in foo 1.2.3, I could end up with errors
because I would only have foo 1.2.3.</p></p>
<p>This is an issue periodically faced by Perl hackers. I might require
HTML::Mason::ApacheHandler 1.69 but really what I need is HTML::Mason 1.44. Of
course, as a Perl hacker, it&rsquo;s my responsibility to make sure I require
exactly what I need, but sometimes it&rsquo;s not clear what&rsquo;s the primary module in
a distribution. And if I don&rsquo;t realize that the version number of
HTML::Mason::ApacheHandler doesn&rsquo;t change with every release, I might make
mistakes.</p>
<p>Maybe that&rsquo;s okay. Maybe PGXN should be less rigid like this. But I&rsquo;m leaning
toward keeping things as they are and requiring new versions of every
extension in every upload of a distribution. It&rsquo;s a bit tougher for those
(few?) hackers who will create multi-extension distributions, but probably
more reliable for everyone else.</p>
<p>What do you think?</p>
<p>Anyway, I&rsquo;m getting to work on the Web app this week while this issue
percolates. Been studying up on <a href="https://plackperl.org/">Plack</a>. So nice!</p>
]]></content></entry></feed>