Category Archives: Openprinting

Why libjtapi.org

My first instinct was to register libjtapi.com since .com is the ‘default’ tld and would be the easiest to remember. But once I was sitting at namecheap.com (which is much better than godaddy (Please do not ever use godaddy)) I noticed that libjtapi.org looks better. Then I started typing random open source projects + .org into the address bar:

  • cups.org
  • libxml.org (redirects)
  • openssl.org
  • eclipse.org
  • libav.org

My ratio of random tries to hitting the correct website was about 50-50. Which settled the internal debate, libjtapi.org it had to be.

Thoughts on libjtapi.org

My motivation for creating libjtapi.org was patio11’s “how to successfully compete with open source software”. Patio11 wrote from the perspective of proprietary software selling to consumers competing against open source clones. Despite Libjtapi being a open source library usable by programmers much of the advice still applies.

Marketing

The general advice patio11 gives is to focus on what the software’s capabilities and the surrounding environment and not the software itself can do. That is to say: Our users do not have a jtapi problem, they have a job ticket problem.

Thus we need to talk about job tickets and their place in a modern printing system. We need to write targeted pages for each format as if libjtapi was THE solution for THAT job ticket. If they search ‘pwg job ticket library’ or ‘how to parse pwg job tickets’ they should arrive at libjtapi documentation for a pwg job ticket specific hello world.

Design

This is an easy one. Much of my freelance work is setting up attractive wordpress sites. In the past year alone I’ve shipped upwards of eight wordpress sites.

The downside is that these beautiful wordpress themes are all closed source. One battle at a time.

User Experience & Speaking the users’ language

Programmers prefer code so the hello world is going to be plastered everywhere. The homepage is going to open with a small paragraph about consuming & producing jobtickets with jtapi. Right below that will be the hello world. Each job ticket format page will contain a standard specific hello world. The site’s footer will also have the hello world.

On the download page below the link to the zip will be, you guessed it, the hello world. Bonus: there will be a link to download libjtapi_helloworld.c

Once visitors see the zip they’ll see the exact command line for creating a local branch of the bzr repository. Then a series of screenshots that document using the bzr explorer gui to create the local branch.

The end game goal here is to assure programmers that libjtapi solves their problem and get them to download us. Once we have users then contributors & bug reports will follow.

Support

There is going to be a set of re-occuring problems. Some will be fixed in software, others will need documentation. When these get fixed we should make an issue of this. The site’s news section should re-assure programmers that libjtapi is active and getting better and better.

Every bug I fix will be one more reason to use libjtapi, it is one more mistake that libjtapi can save the programmer from committing.

Launch early

One of the many reasons typical open source libraries’ websites are sub-optimal is that the website comes last. By creating libjtapi.org now at a time when there is no code and we do not need users or contributors the website will be well-established and ready for when we need it.

 

Pulling options from the sql db is done.

Thought I’d give an update to my Christmas plans. I ended up taking longer than just the Christmas break. I used the extra time to do some refactoring and cut the size of DB.pm by a thousand lines or so.

Filters will slowly be pulled from DB.pm and moved into a logical hierarchy within the new ‘filter’ directory. As it is now DB.pm is simply too large to wrap your head around. When I started this summer DB.pm was almost 10k lines. Since then it has slowly shrunk to 8k. Due to the size some dead code has built up.

An excellent example of this is get_javascript2() which the old openprinting website used. The funny part is that there is not get_javascript1() or get_javascript().

Oh and then there is comment_filter() which filters user input on a web page with regex. It actually works! Which is quite a feat considering the many got-ya’s with user input

My strategy right now is to remove the proper functionality into modules. My hope is that the dead code will then become more obvious.

Christmas plans, get_option()

The openprinting bzr repositories are back up. The commit process has gotten a lot nicer. Prior I had to create a bzr bundle (a large diff) and upload that through logger head which would then commit the changes. Between our changelog, my local bzr, and the remote bzr, three commit messages were required per commit. With the new commit process I can commit from the command line (as it should be) and the commit messages are pushed automagically.

Fun fact: the changelog is the second largest file in the foomatic-db-engine repository. 5.5k lines and 10 years of commit documentation. I also made a bit of a mess of it before I noticed the  standardized commenting format. I blame gedit for not providing highlighting.

Over the Christmas break I intend to implement support in get_option() for sql backends. This is one of the two bugs I assigned to myself after the summer. Till would probably prefer I implement printer groups but sql support is a left over from the summer and it wouldn’t feel right to implement new features before I finished polishing my first feature.

Android and a pizza

During discrete mathematics today the guy next to me mentioned that Google was doing a presentation. I glanced at one of the posters on my way to computer science tutorial and it only mentioned recruitment. I went anyway in the off chance an engineer would be there.

There wasn’t, but they did have a very charismatic recruiter. She opened with some questions about Google Doodles. The guy from discrete math got the first question but he picked a tout bag! I got the third question so I picked an android continuously posable action figure (aka a doll).

Once the proper presentation ended most people left but a few of us held back. I’m glad I did because we then started a very fun Q&A session. I must respect recruiters; they need to know a bit about everything their company does. There were bits and pieces of facts which got miss quoted or were not known but they were the minority.Once the Q&A was over we got to take the extra pizza home.

In the end I will not be applying for an internship. Japan Google has a program near identical to the north american one and does not require japanese (私には佰年早いです) both exactly what I’d want. I simply do not want to abandon the openprinting work or my freelancing projects.

Now in regards to openpriting I did ask her if an engineer would be doing a presentation any time soon. She said that she wanted to bring one up in February. She also asked if I had a preference, of course I asked for cloud printing.   I’m looking forward to that presentation.