Eddie Hinkle


Indigenous Development Log #1

I was inspired by reading Chris Hannah’s Slate Development Log that I should track the progress on my own iOS app, Indigenous.

I apologize for the length of this first post, but as this is the first log I want to cover what Indigenous is and what it can currently do. In future development logs I will focus more on specific thoughts as I’m working through the actual development of the app.

What is Indigenous?

Since this is the first development log (even though I’ve been working on Indigenous periodically throughout the last year), I thought I would explain the general goal of the app.

Over the last year I’ve begun to get more involved in the IndieWeb, but the more I started using my website as the hub for everything I post, I realized if I was going to continue posting to it was going to have to get more and more convenient. As easy as posting to Facebook or Twitter. Half of this was already taken care of by the existence of Micropub, a technical specification that allows any client app and any server app to communicate with each other to publish posts as long as they both speak the same language: “Micropub”. The issue is that a year ago most Micropub apps were different web apps, and being an iPhone user since the original iPhone came out, I enjoy the use of native apps for a large majority of my tasks. So I decided to build a native iOS app that could publish content to any server that supported Micropub.

As the year progressed in 2017, Aaron Parecki (the editor of the Micropub specification) began work on a prototype of a new communication agreement between clients and servers, but this time it went the opposite direction. This new specification was called Microsub and it focused on allowing clients to retrieve posts from a server to generate a timeline (Like Facebook or Twitter) where you can keep up with all the posts that your friends and favorite websites publish. I knew this was the missing piece to me really moving away from traditional social media. So I jumped in head first and decided that Indigenous would support BOTH Micropub (for posting) and Microsub (for reading).

So what can it do?

I use Indigenous every day. I scroll through my timeline within the app to keep up to speed on the people and things that interest me across the internet, as well as to post new information to my blog (microblog posts, articles, photos, etc). I use it just like one would use Facebook. The benefit is that there are other Microsub and Micropub apps that I can log into to post or read content and there is no additional configuration. My Microsub server will work with any Microsub-compatible client.

That said, Indigenous still has a long way to go. I’ll detail the main features that are working in the beta right now.

Reading Timeline

When you open Indigenous, if you are logged in to a Microsub server, you get a list of Channels. You can think of these as lists or folders. You can follow many different people and websites within a single channel. It allows for topical grouping of content, and it allows me to know what content I want to prioritize when I am short on time.

When you select a channel, you see a timeline of the top 20 most recent posts in that channel. I’ve styled it similarly to tweets in Tweetbot (my favorite Twitter client). You can pull to refresh and get any newer posts that have appeared and when you reach the bottom of the list you can tap a button to load the next 20 older posts. You can see attached images and listen to audio files on posts. You can swipe right to reply or left to open the post in a web browser.

Indigenous supports multiple accounts so if you have multiple Micropub or Microsub accounts you can switch between them and the app’s settings are set on a per account basis, so the app can behave differently for your different accounts.

Channels can track your reading progress. In the currently published beta, the read type of a channel can be set up on the Microsub server to either display no read status, display an unread indicator or to display an unread count. Indigenous respects those settings and displays a red dot as an unread indicator and a red number for an unread count. When you interact with a post (by swiping to either reply or view the full post) it is marked as read. Also, you can mark the entire channel as read by clicking the “read” button at the top of each channel.

Writing posts

You can write posts inside of the Indigenous app. When you click the post button in the top right corner, it opens up the compose window. There is a textbox that allows you to write your post. When you write more than 280 characters a title field will appear so that you can optionally add a title to your post.

You can attach images by selecting the camera icon in the bottom left, and it will upload the images to a Micropub server’s Media Endpoint. You can attach as many photos as you want (hypothetically, I haven’t done robust testing on that).

You can add Micropub categories (think tags) by clicking on the tag icon. Right now, it displays a couple of testing categories by default, but you can add new categories by typing it in the top box and clicking the plus button. Whatever categories have a checkmark will be sent with the post to your server.

Finally, Micropub has an idea of syndication. That you can write a post for your website but also syndicate it out to other locations (Micro.blog, Twitter, Facebook, etc). When you select the Syndication icon, it will show you all the syndication targets your Micropub server knows about and allows you to select which ones you want to syndicate to.

Interacting with the Internet

One of the primary reasons I started building Indigenous was to build a Micropub focused Share Sheet. In iOS a share sheet allows you to interact with different pages on the internet, typically this is just sharing a URL to Twitter, Facebook or Instapaper to read later. With Indigenous, it displays a list of default actions you can take on a given url such as “Like”, “Reply” and “Bookmark”. Like and Bookmark send those post types to your Micropub server. Reply will open the same compose window that the app has but it will have an additional field a “Reply” field that has the URL you were on. This allows you to read and reply to posts across the internet.

Even better, if the website has Microformats support, Indigenous will actually customize the list of actions based on the information presented through microformats. For example, if the page you are on is an h-card representing a person or a company, it provides the ability to Bookmark the page. If the page you are on is an h-entry it will have the usual options as well as the option to “Repost” it (similar to Twitter’s Retweet functionality). If the page is an h-event, it will add the a button to RSVP (although that button will inform you that feature is still in development).

This means if I want to bookmark, like or reply to something on my website I don’t have to leave the website that I am on to do it!

What's next?

There is a lot more I'm working on and a lot more to come! But alas, that's enough for today. We'll hold that for the next log!

72.29 ℉🌖indigenousdevelopment-logindigenous-logtech
posted using quill.p3k.io



@EddieHinkle That’s great, thanks for the post! I had no idea it had microsub built in, I’ll have to look into that next. For now, I’m just building micropub support for my site.

One thing has me intrigued, though: what are “remote commands”?

@EddieHinkle I want to try Indigenous, but I’ve never managed to get it to log in. It used to say it couldn’t find any suitable rel=“me” endpoints, but I tried it again just now and I get this:

{"error":"invalid_grant","error_description":"Redirect not on same host as client"}

@EddieHinkle looks awesome! Is it available on the iOS App Store or in beta?

@EddieHinkle Ah that’s great, that’s exactly what I was thinking about using it for!

@aaronpk Thanks for that. And @EddieHinkle, as Aaron has discerned, I’m using self-hosted WordPress.

I’m watching that bug report, and I’ll update the plugin and try again when it gets fixed.

People have bookmarked this post:

Please note: This site is in an active redesign. Some things might be a little off 🧐