gPrime Demonstration

There is now a gPrime demo available here:

Username: demo
Password: demo

This is an alpha-alpha-alpha version, and so there are many things that don’t work yet. However, there are a few things that do work—at least a little bit.

First, a few points to make you familiar with the demo:

1. All views are shown a page at a time. The page views for each primary object (Person, Family, etc) shows what page you are on, how many pages total, how many items are showing, how many are matching, and the total. For example, if you click here (and log in):

then you will see “Showing 25/26 of 2157”. That means that there are 26 Alavarado’s, 25 showing on this page, out of 2157 total person records. Click on a row to see the details of that row. Click on “>” to go to next page, “<” previous page, “>>” to last page, and “<<” to first page.


2. Much of the data in the “example.gramps” data file can now be seen… few items can be edited. First goal is to make everything visible.

3. If there is an error, the system just says “There has been an error. Please check the input and try again.” We’ll have fewer errors, and better messages soon.

4. One of the most interesting working proof-of-concepts is the search mechanism. You can read about it a little here:

It works in two ways:

a. just type what you want to match, and it will search the default fields for that view in a loose fashion: case insensitive, partial matches.

b. you can search specifically: say exactly what field, and what exactly.

If you enter “Alv“, it will look for that value in a few fields (surname, given, etc). If (in person) you type “surname=Alv%” or “given=Alv%” then it will search for those fields starting with Ala (the percent character is a wildcard, matching anything).

You can search for items that are a bit deep in the object’s structure. To do this you may need to consult the gPrime Schema:

For example, to find all of the events (on the events view) from 1987:

date.dateval.2 = 1987

You can also search on joined objects: for example, you can find all the people (on the person view) who have a Death event:

event_ref_list.ref.type.string = Death

This might take a little longer to report the search results, but many searches are possible.

5. Finally, you can combine search with a selection. On the person view, if you say:

select given, surname

select gid, event_ref_list.ref.type.string

You’ll see just the columns you want. You can combine that with a WHERE clause:

select gid, event_ref_list.ref.type.string where event_ref_list.ref.type.string = Death

This selection language is not as easy as it could be yet. But, it should be fairly complete. That is, you should be able to search for any matching criteria that you can think of. (Searching for non-matching values needs some work.)

This is not SQL. This is a special language developed for gPrime that is used throughout the gPrime code to make it easy to program, but fast. gPrime will suport Gramps-style filters too, but for many searches this method may be more efficient.

6. Reports (listed under Actions) can be run, but you can’t see the output yet.

7. The demo password can’t be changed. But you can change the look of the gPrime web interface and the language, under Settings.


8. Multiple users can be working simultaneously.

Please feel free to give it a try and report back what you think. Thanks!


41 thoughts on “gPrime Demonstration

    1. It should be able to be hosted on a regular, non-root server, if you have access to a port. gPrime is a webserver, but it can server pages on something other than port 80 (standard HTTP). With this demo (hosted on an AWS) I just shutdown the standard httpd, and started up gPrime.

      If you have a place to test, that would be great! gPrime/master now has ability to server it on a URL path other than “/”.


      1. Well I guess I misunderstood what gPrime is. I thought it was going to be a web based version of gramps. Something similar to tng or webtrees but without the data loss from a desktop program that can they have due to the fact that they don’t have a desktop version and interpretation of the gedcom standard among desktop programs varies so much or isn’t followed at all. (granted, it was never a finished and true standard, just like it seems gedcomx will end up being)
        It would be so nice to have a desktop program and web based script that were in perfect harmony and have similar interfaces.
        Sounds like something grander though. Not for the general public or most genealogists even. I was wondering about the term, “collective”.

        I wonder if ancestry will gobble this one up when it starts to become something.

        Well good luck to you.


  1. On the media page, it would be nice if when clicking on the Person ID, it would take you to the Person page rather than the media file page. When clicking on the name of the media, that could take you to the media file page as it does now. When on the media file page, a lot of people won’t think to click the References tab to click to get to the Person page. They’d be left with searching for the person page of the person who’s image they’re looking at.

    Also, you spelt References as Referencess.

    Other than that, glad to see you’re working on this and it’s looking good so far.

    Plz, no compiling css, no templating engines etc for those of us that like to restyle.


    1. Thanks for finding/reporting the typo; it is now fixed here:

      I don’t think that the media link can go to a person, because an image can be used by many people. But we can probably make some shortcuts when, say, an image only has one referrer.

      gPrime 1.0 will have the simplest method of styling… it is just one CSS file. gPrime 2.0 will be more sophisticated. Not sure how that will work yet, but hopefully it will be easy for everyone to use.

      Thanks for the feedback!


  2. Sorry about my last comment and for some reason, I can’t reply to it. I’ve got the flu and if you’ve been around genealogy on the web, you probably know how many people have poured years into a particular service, site, technology or community just to have it disappear overnight or turned into something inaccessible or taken over just to be shut down by an entity but only after said entity absconds with everyone’s data.

    Let’s start over and I’ll try to keep an open mind and try not to assume too much. I know just enough about programming to try and assume a few things which I suppose makes me a mildly educated jerk. I might just be the prime candidate, no pun intended, for testing. Try to keep in mind, programmers tend to speak in terms the layman just doesn’t understand. We may both speak English but it can still be two different languages.

    My background so that maybe you can avoid talking right over my head which isn’t too hard to do really. I’ve installed and used quite a few php scripts. WordPress, TikiWiki, TNG, webtrees etc. All that amounts to is creating a db in cpanel and following on screen instructions for script installation. I run Ubuntu on my laptop. I have gone through the process of setting up apache, mysql and installed a couple of php scripts locally. These days I just use bitnami because I don’t do enough to memorize the commands to start and stop and configure everything. I’m sure I could but I have no plans for being a web developer. I’m a 51 year old blue collar guy, never took algebra so it’s a bit late in the game for me to try and get into IT work. I do have an interest in web stuff and like having my own sites. My sister is the genealogist and has been at it for several years. The tree is up over 10k and is well sourced. I’m a DIY kind of guy. I have learned a few basics of programming as my son has an interest in it. Started the family late. He’s just now a teen. I sat in with him at the start of an beginner’s online college course for python but it quickly went over both our heads due to our lack of algebra. It was called “Python for Everyone” but turns out not quite everyone. I know html/css fairly well. There’s no decent css compiler for linux which is why I mentioned that and compiling css just isn’t for everyone. Same with templating engines. I know of json, xml, php, javascript, python but only know OF them for the most part. Sort of know what a variable is etc. I’ve gotten as far as Hello World in php and python and used the terminal as a calculator in python.

    Being that I run ubuntu, I can set up gPrime locally. I do have hosting but it’s shared. SSH is not turned on by default on my hosting but I can have it turned on. Not so sure about them opening a port for me. I’ve never heard of a web app requiring that but maybe it’s not unusual. Is that a requirement for Gprime to run or just to act as a server of some sort?
    We may have a different definition of server. I think of it as a machine running server software, usually linux based. However I did a little reading this morning on php vs python and saw this explanation;
    “PHP basically operates as a templating language for HTML (the web server requests your PHP file, and returns whatever HTML the file evaluates to), whereas Python and Ruby operate more like an HTTP server (your program gets an HTTP request, you craft an HTTP reply and return it).”

    To summarize;
    What do you mean when you refer to gPrime as a server?
    Is opening a port on shared hosting a common thing for a python application?
    For requirements, I see five python packages, Common things?

    At the bottom of this page; — — I see “running a gPrime server” which leads to a page for “Running gPrime ON a server” so perhaps that’s my confusion. That second page mentions running on a standard port which makes it sound more compatible with generic hosting.

    Just noticed the tagline of this site; Modern Genealogy Software for Everyone. Sounds good
    Lets’ find out. $100/mth for hosting or $100/mth for static IP to self host is not for everyone, nor is paying a dev to install and maintain. To customize, yes. If it could end up being as easy as WordPress’ famous five minute install, that would be awesome although I’m not sure if a python app is capable. Collaboration and sharing is fine but a lot of people don’t like the idea of other people taking their years of hard work and don’t want to share that family heirloom photo so hopefully, that will be optional.

    Installation here?
    Do I need this also?

    I’ll take notes and come up with some install and usage docs for the layman.



    1. Thanks for the note, John. You are definitely the kind of person that I would hope would be able to take advantage of gPrime. Some brief notes:

      1) It is a little bit hard to explain, as this is a new type of application, not unique, but also not the standard. When you start gPrime, technically it starts a “webserver”… but that is somewhat irrelevant. The point is that it starts a process that you talk to via a web browser. So, for most common users, you start gPrime and it opens up a tab in your web browser, and you interact with it the way that you would any website—except that the webserver is running on your own computer. You don’t need to know what “port” it is running, because the web browser automattically opens to the right local URL.

      2) But, because gPrime is designed as a webserver, you can also run it on a server. In this mode, things like port are important. If it runs on port 80, then it will act like any old webserver. Some hosting may not allow that, so you’d need to use a different port, and have that accessible to the internet.

      3) This is the future, for a few reasons.

      a) One is that doing GUI programming is hard. Gramps is bogged down by a ton of GUI issues that will probably never be completely right, and by that time, the GUI engine will be dead. HTML is the GUI for the future. It is much more flexible and easy to program.

      b) People often want a genealogy app for their iPad, iPhone, Android, tablet, etc. gPrime will work in all of those scenarios (via a server).

      c) I want to have access to my genealogy info all the time, anywhere. gPrime can be local or internet-based.

      4) gPrime will always have this code open sourced. Nothing can change that. There isn’t a large “collective” yet… but I have no doubt that once gPrime is functional, there will be many people join in.

      5) Once ready, I’ll make some videos to show easy start up flow on Mac and Windows. It takes a little more work than just a single downloadable EXE or APP, but it will be worth it. Part of the philosophy of gPrime is to integrate with other open source projects to keep this one manageable with a small team.

      6) I have been working towards this project (n the abstract) for about 10 years, but I always got side tracked by having to fix things in Gramps. Now I don’t have to worry about that (for one, I have done that work, and another, I am free to change the code to make it work better).

      Hope that helps!


      1. Just swapped to my account. Hadn’t used it in so long, I didn’t even know my username. Had to search my emails for it. Started this as a place to take notes and have them public and I’m following this gPrime site.(whatever following means on

        I’m going to go read up on all things gramps-connect on and see if that helps me grasp things better. Are you still using the django frame work?


    1. Yes, tornado. gPrime started with the lessons I learned with the previous versions, but is all new. I am now much further along than I ever was with previous versions… in fact I am almost done with gPrime 1.0 (Gramps data viewer).


  3. Almost got this on my laptop but when I try;
    gprime –site-dir=”~/family_tree” –add-user=demo
    I get
    Traceback (most recent call last):
    File “/usr/local/bin/gprime”, line 5, in
    File “/usr/local/lib/python3.5/dist-packages/gprime/app/”, line 372, in main
    database = DbState().open_database(database_dir)
    File “/usr/local/lib/python3.5/dist-packages/gprime/”, line 225, in open_database
    data = self.lookup_family_tree(dbname)
    File “/usr/local/lib/python3.5/dist-packages/gprime/”, line 255, in lookup_family_tree
    raise Exception(“No such database: %s” % dbname)
    Exception: No such database: /home/john/family_tree/database


  4. If you have already created the site-dir (using the –create flag) then that can happen if it failed in a previous try. Try deleting the whole directory and then do the –create again.


    1. Also, I had to use sudo for install which is something people won’t be able to do on most hosting. Is the final installation process going to be anything like it is now?


    1. Traceback (most recent call last):
      File “/usr/local/bin/gprime”, line 5, in
      File “/usr/local/lib/python3.5/dist-packages/gprime/app/”, line 337, in main
      raise Exception(“–site-dir=FOLDER was not provided on command line”)
      Exception: –site-dir=FOLDER was not provided on command line


  5. I’m not a programmer so it all looks foreign to me. I’m assuming whatever you have on the github install instruction is code I need to type/paste into the terminal verbatim.

    Here’s my folders. I presume you know what’s inside of those.


    What am I inputting and what directory do I need to be in with the terminal, if other than home/john?


  6. cd to the directory where you want your site directory to live. Then do exactly this:

    gprime –site-dir=test –create=”Test Family”
    gprime –site-dir=test –add-user=demo –password=demo

    Then you can:

    gprime –site-dir=test

    And a browser will open, login, and you will see an empty tree.

    To populate this database, use:

    gprime –site-dir=test –import-file=Tree.gramps

    where Tree.gramps is a gramps XML export.


    1. created an empty folder, cd to it, inputting this
      gprime –site-dir=test –create=”Test Family”

      gives back this

      Traceback (most recent call last):
      File “/usr/local/bin/gprime”, line 5, in
      File “/usr/local/lib/python3.5/dist-packages/gprime/app/”, line 337, in main
      raise Exception(“–site-dir=FOLDER was not provided on command line”)
      Exception: –site-dir=FOLDER was not provided on command line

      same as when I try it with either family-tree folder or website folder


  7. I think I see what is the problem… looks like WordPress is very thoughtfully turning two dashes into an em-dash. The commands above (and from the github website) are all two dashes.


  8. Good eye. The two lines above with em dash changed to two dashes worked. We should be using html code tag I suppose. Just tested it and two dashes remain as such. I now have;

    /home/john/Sites/gprime/test/ with database, media, users
    /home/john/gprime/gprime/ with app, cli, datehandler, bd and several more folders including test

    As you can see, I ran git clone in a directory I created and named gprime. (just to add to my confusion)

    So if this is MVC, it looks, inside my top gprime directory, the inner gprime directory would be the Controller, the test directory on the same level would be the Model and the website directory would be the View?

    Next step on github is config file(s)?


  9. Thanks for the hint on code tag… I’m new to WordPress.

    I don’t know about applying the MVC metaphors to these directories. The outer gprime is the sourcecode, the inner is the site-directory (including database, media, and user files). The website directory is irrelevant.. that is a temp website for gPrime project itself.

    I updated the README to try to make it more clear:

    If you are referring to gPrime’s config files, you don’t need those (yet). Only useful if you have a large number of command-line options and don’t want to have to type them.

    So, are you running gPrime? Although the target for 1.0 is just to view, I have made progress on editing/adding data via the browser as well. Hoping to have gPrime 1.0 done this month!


  10. There she be! I’ve got a couple more laptops here. I might try going through this whole process again and do a write up. Glutton for punishment. 😉
    Do you plan on automating the process at all. An installer perhaps?
    So how did you get your demo populated with data and images if the import actions aren’t functional yet?


  11. Great! This was useful for me, if painful for you 😦

    We can definitely make this more user friendly. There could be a default site-dir. If it doesn’t exist, it could make it, with default password/username. Especially once one can add/edit data.

    Regarding initial genealogy data:

    You can import from GEDCOM, Gramps XML or gPrime JSON:

    gprime --site-dir=test --import-file=/path/to/import-file

    Regarding initial images:

    You can copy them to site-dir/media (I need to make sure that media-path is not set and all images have a relative path, but I think it will get them from wherever).


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s