Surname/tag: mobile_app_research
Still WORK IN PROGRESS
The goal of this project is to make reasearch about mobile application that would use data of WikiTree, its properties, behaviour, appearance, ...
I'm developer, or for almost 6 years, I'm doing my best to be one ;-). So I know some basics about software development process and also that doing some project without good preparation can lead to it's failure. Unfortunatelly I currently have only minimal knowledge of web development and no knowledge of mobile app development. Therefore I've decided to make an analysis with some community involvement.
Other reason is little bit selfish. The reason I've decided to start this journey is that I'm not really happy with current state of current WikiTree website - too much things that are IMHO unnecessary (like badges, lot of descriptive text, ...) - I'm simple man and I like simple things.
Contents |
User demand
On G2G forum there were several requests for mobile app:
- Will Wikitree ever get a phone app??
- Does wikitree have a app for a smart phone?
- Is there an app for Wikitree ??
- When will Wikitree get an app so we can work on our cell phones?
- Once again, is there an app or viewer for my Droid that I can download so I can go over my Gedcon?
- Making wikitree more user-friendly on mobile devices.
- Is there a mobile app for wiki tree?
The mobile app is also mentioned on Trello (WikiTree Bugs & Improvements dashboard)
Which features of WikiTree should it support
The best way (and I think only reasonably possible) how to use current data = the only thing that is somehow accessible (look here Is the worldwide family tree public domain? and here Is WikiTree's software open source?) is via REST API provided by WikiTree Dev team (Help:API Documentation).
A RESTful API is an application program interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. ... REST technology is generally preferred over the more robust Simple Object Access Protocol (SOAP) technology because REST uses less bandwidth, making it more suitable for efficient internet usage. [1]
REST API is currently used by multiple 3rd party applications (Help:Apps)
Core features
Family tree
TODO
Person profile
❌ Create (not possible)
Currently NOT POSSIBLE - WikiTree REST API is READ ONLY
Display
REST API
- getProfile
- READ ONLY
- Provides following info:
- user_name: <wikitree-id>
- person
- Id: <int-id>
- Name: <wikitree-id>
- FirstName: <first-name>
- MiddleName: <middle-name>
- LastNameAtBirth: <last-name-at-birth>
- LastNameCurrent: <last-name-current>
- Nicknames: <nicknames>
- LastNameOther: <last-name-other>
- RealName: <real-name>
- Prefix: <prefix>
- Suffix: <suffix>
- BirthLocation: <birth-location>
- DeathLocation: <deat-location>
- Gender: <gender>
- BirthDate: <birthdate-timestamp>
- DeathDate: <deathdate-timestamp>
- BirthDateDecade: <birth-decade> (ie 1890s)
- DeathDateDecade: <death-decade>
- Photo: <photo-filename>
- IsLiving: <isLiving> (0|1)
- HasChildren: <hasChildren> (0|1)
- NoChildren: <no-children> (0|1)
- Privacy: <privacy-level>
- 10: UNLISTED
- 20: PRIVATE
- 30: SEMIPRIVATE_BIO
- 35: SEMIPRIVATE_TREE
- 40: SEMIPRIVATE_BIOTREE
- 50: PUBLIC
- 60: OPEN
- IsPerson: <is-person> (0|1)
- Touched: <last-edit-timestamp>
- ShortName: <short-name>
- BirthNamePrivate
- LongNamePrivate
- LongName
- BirthName
- Manager: <manager-int-id>
- DataStatus: <collection-of-data> (how sertain data are)
- Privacy_IsPrivate: (true|false)
- Privacy_IsPublic: (true|false)
- Privacy_IsOpen: (true|false)
- Privacy_IsAtLeastPublic: (true|false)
- Privacy_IsSemiPrivate: (true|false)
- Privacy_IsSemiPrivateBio: (true|false)
- PhotoData
- path: <fullpath-without-host> (ie "/photo.php/e/e3/Adams-35.jpg")
- url: <thumbnail-fullpath-whithout-host> (ie "/photo.php/thumb/e/e3/Adams-35.jpg/75px-Adams-35.jpg")
- file: <thumbnail-filename>
- dir: <thumbnail-directory>
- width: <thumbnail-width>
- height: <thumbnail-height>
- orig_width
- orig_height
- Father: <father-int-id>
- Mother: <mother-int-id>
- Parents
- <mother-person-profile-data> (same as Person for mother without Parents)
- <father-person-profile-data> (same as Person for father without Parents)
- getBio
- Provides following info:
- page_name: <wikitree-id>
- user_id: <int-id>
- bio: <biography-text>
- status: ???
- Provides following info:
❌ Edit (not possible)
Currently NOT POSSIBLE - WikiTree REST API is READ ONLY
Search
REST API
- searchPerson
- READ ONLY
- Supports following search criteria:
- FirstName : First name
- LastName : Last name
- BirthDate : Birth date (YYYY-MM-DD)
- DeathDate : Death date (YYYY-MM-DD)
- RealName : Preferred name
- LastNameCurrent : Current last name
- BirthLocation : Birth location keyword(s)
- DeathLocation : Death location keyword(s)
- Gender : Gender (male, female)
- fatherFirstName : Father's first name
- fatherLastName : Father's last name
- motherFirstName : Mother's first name
- motherLastName : Mother's last name
- watchList : Profiles in relation to the requester's watchlist (in, out, any)
- dateInclude : If set (both), then dates on matches are required. If set (neither), then matches without dates are included.
- dateSpread : Year range for matching (1 - 20)
- centuryTypo : If set (1), then possible century typos in the dates are included in the results.
- isLiving : If set (1), then matches are restricted to the profiles of living people.
- skipVariants : If set (1), then last name variants are not considered and only exact last name matches will be returned.
- lastNameMatch : Last name match options (all, current, birth, strict)
- sort : Sort order (first, last, birth, death, manager)
- secondarySort : Secondary sort order (first, last, birth, death, manager)
- limit : Number of results to return (1 - 100, default 10)
- start : Starting offset of results (default 0)
- fields : A comma-delimited list of profile data fields to retrieve. See getProfile.
Settings
TODO
Optional features
These features should be optional - possibility to enable/disable them in Settings.
DNA
TODO
Note: I don't currently know anything about this topic ...
REST API
- getDNATestsByTestTaker
- READ ONLY
- Provides following info:
- dna_id: ie. <id-number>
- dna_slug: 23andme_audna | ancestry_audna | ftdna_audna | ftdna_mtdna | ftdna_ydna | living_audna
- dna_name: 23andMe | AncestryDNA | Family Tree DNA Family Finder | FTDNA Mitochondrial | FTDNA Y-Chromosome | Living DNA
- dna_type: auDNA | mtDNA | yDNA
- assigned: ie. <timestamp>
- assignedBy: <wikitree-id>
- haplo: <haplogroup>
- markers: <number>
- mttype: null | <result>
- ysearch: null | <result>
- mitosearch: null | <result>
- ancestry: null | <result>
- ftdna: null | <result>
- gedmatch: null | <result>
- haplom: ie. null | <result>
- getConnectedProfilesByDNATest
- READ ONLY
- Provides following info:
- dnaTest: <-DNA-test> (DNA test is like result of getDNATestsByTestTaker)
- connections: <list-of-connections>
- <connection>
- Id: <dna-id>
- PageId: <number>
- Name: <wikitree-id>
- <connection>
- getConnectedDNATestsByProfile
- READ ONLY
- Provides following info:
- dnaTests: <list-of-DNA-tests> (DNA test is like result of getDNATestsByTestTaker)
Native Application vs PWA
Native Application
Pros
- has better performance
- client side performance is not problem with this kind of application since WikiTree mainly shows and allows enter data in text form
- most resource hungry operation would be rendering of charts (family tree / fanchart / ...), but todays smartphones has no problem with this task either
- A native app is able to interact with other native applications, for instance by offering its users to connect with Facebook.
- offers better support of smartphone features
Cons
- Needs to be developed for multiple platforms separately (iOS, Android, ...)
- Needs to be registered in App Store
PWA (Progressive Web App)
The Progressive Web App is an ultra optimized website for mobile, able to use some features of this device, such as the camera. Users access PWA from their browser — Chrome, Firefox, Safari or other — and download its content as and when browsing, hence the name of progressive.
Pros
- PWA allows to save time and money, since it is developed only once = single application for multiple platforms (iOS, Android, Windows, MacOS, Linux, ... - depends on web browser)
- Since you access PWA from a web browser, you don’t have to submit your application in the Stores.
- Users do not download all the content of PWA before using it. Thus, they access its content much faster, directly via a URL.
- PWA allows to store some data for offline usage, but if connected it uses online data
- Since it requires no download, PWA uses only a very small portion of the phone’s memory.
- depends on poin mentioned above
- The Progressive Web App is a website and, as such, is optimized for search engines. The latest algorithm developed by Google particularly values PWA. In concrete terms, this means that a PWA is likely to appear in the first search results and therefore to be well known by the users.
Cons
- PWA is not perfectly supported by all web browsers.
- Progressive Web Apps don’t have access to as many features of the phone as native applications.
- yes, there are limitations, but web technologies become more and more capable - look at WHAT WEB CAN DO TODAY?
Resources
- Native application VS Progressive Web App: which one should you choose?
- What makes a good Progressive Web App?
- What are PWAs?
- Why Progressive Web Apps Should Be Your Business Choice Over a Native App
- PWA vs Native Apps: How to Choose Your Technology
- PWA vs Native App and How to Choose Between Them
- State of Progressive Web Applications in 2020
- 12 Best Examples of Progressive Web Apps (PWAs) in 2020
Discussion
TODO: Link to G2G
What will it look like?
TODO - doesn't make sense to answer, before other questions are ansfered
- Login to request to the join the Trusted List so that you can edit and add images.
- Private Messages: Send a private message to the Profile Manager. (Best when privacy is an issue.)
- Public Comments: Login to post. (Best for messages specifically directed to those editing this profile. Limit 20 per day.)
- Public Q&A: These will appear above and in the Genealogist-to-Genealogist (G2G) Forum. (Best for anything directed to the wider genealogy community.)