The goal of this project is to provide a static website generator published using indieweb microformats, suitable for both a personal site or a special interest group.
I will also make use of convention over configuration and the choice of reasonable defaults, which can be overridden when necessary.
I will start by extracting the common elements from andrewsullivancant.ca and kwruby.ca.
Integrate with existing projects as much as possible:
This is a map of possible URLs for an exordium website, and so might change over time. URLs may or may not get implemented as time permits.
/
# figure out a common structure for hompeage based upon
# https://indieweb.org/homepage
# * include vcard with optional additional details
# * optional stream with configuration
# * think about what other stuff to include
/[yyyy]
/[mm]
/[dd]
/article/[title]
/notes/[count for day]
/reply
/photo
/rsvp
/event
/commit
/request
/read
/pull_request
/request
# entry in an issue tracker or ticketing system
# No sure if issue and pull_request should be seperate.
# https://indieweb.org/issue_tracker
/articles
/events
/request
/posts/
# This could contain all posts
/wiki
/[article name]
/changes
/tag
/[tag name]
/git
/[repo_name]
/log
/tags
/branches
/[branch_name]
/[file path]
/[oid]
/posts
# feed of all posts
/[each post type]
# each is a collection for seeing just that post type
#
/photo
# possible endpoints for providing things like galleries and collections of
# photos
/about
# Is there any value in putting the identity into is own resource?
# Yes, because the homepage provides a summary and the this contains more
# details.
# I do n0t totally like 'about', but it is so commonly used that it makes
# sense to continue using it. (alternative names: identity, me, id)
/disambugation
# Should this be a seperate page, or just in the about page.
/avatar
# display the list of available avatars
/current
/[image_hash]
# default to 80x80
/[size]
/[email_hash]
# provider either re-directs or copies to the images
# default to 80x80 again
/gpg
/resume
is cirriculum_vitae at better name for this?
probably because it is not as common as usage
allow various formats of resume (pdf, word, opendoc)
- where should subscrition links go?
- RSS feed + indieweb idea of a link which is readable and subscribe-able
- www vs no-www for the conical URL
- https://indiewebcamp.com/URL_design
- http://indiewebcamp.com/permalinks
- http://manas.tungare.name/blog/url-design-sins-16-things-that-dont-belong-in-urls/
- https://github.com/Octo-Labs/middleman-alias
- http://tantek.com/w/Whistle
- https://github.com/homesteading
- http://www.yes-www.org/
- http://no-www.org/
- https://aaronparecki.com/2018/03/12/17/building-an-indieweb-reader
- https://vincentp.me/articles/2018/11/14/20-00/
- GitHub
- Gitlab
- cgit
- stagit
- sourcegraph
- indieweb has some note about this
- microformats to create
- patch work
- a git tool for managing mailing list patches on the web as well
- http://jk.ozlabs.org/projects/patchwork/
- git-bug
- git-appraise
- every feed to posts should include
- HTML5 indieweb microformat feed
- RSS
- iCal
- https://github.com/statonjr/middleman-sitemap
- gpg publishing
- looks like it can work with indieauth
- http://indiewebcamp.com/pgp
- hawkpost.co, a system for sending GPG encrypted messages from people who do not have GPG setup, uses OpenPGP.js
- static file encryption with GPG
- http://git-annex.branchable.com/encryption/
- http://git-annex.branchable.com/design/encryption/
- http://obnam.org/encryption/
- https://github.com/ahoward/middleman-gibberish
- can the webauthn API help with using GPG de-cryption in the browser?
- separate command/control services from static publishing service
- authenticate publicly accessible command services with client certificates
- consider including a micropub interface
- consider too to help with content creation
- automated spelling, grammar, proofreading, reading quality
- meta data suggestions (e.g., HashRobot
- https://github.com/yabwe/medium-editor
- create helpers for setting site license (CC, PD, all reserved)
- create a consistent identity structure
- integrate with namecoin
- handle multiple and deprecated email addresses
- disambugation pages
- xfn related things
- webfinger
- indieauth
- openid
- avatar support and POSSE
- save all avatars which have been used, and provide a browsing page
- specify the current avatar for the site
- POSSE, default or an overridden, avatar to
- gravatar
- provide libravatar support
- add public GPG key publishing
- keep all keys including revoked onces with their revokation certificates
- associate with appropriate email address
- point to the appropriate default key for communication
- implement POSSE to various other services
- Meetup
- medium
- image sizes on various services
- initially implement to be executed from a workstation/laptop
- this will avoid having to worry about how to store credentials on the network
- investigate a secure way to do this in the future
- SNAP wordpress extensions
- investigate storing POSSE and webmention information in data-branches
- get push notifications working
- easy SSL with lets encrypted
- adding an easy option for deploying to various sites:
- internet archive Wayback Machine
- P2P networks (e.g., IPFS)
- S3
- github pages
- CloudFlare
- rsync
- ftp
- google amp
- facebook instance articles
- google shield
- [Scuttlebut social network]
- make it easy to add a .onion address
- write a plugin for doing draft blog management in branches
- add link checking and wayback machine support for content and links
- check links regularly
- link to the wayback machine in content if the original page disappears
- can I send pages I link to to the wayback machine?
- add support for auto filling different kinds of links
- investigate if this would work in Markdown or now
- easy links to things like
- internal pages
- wikipedia
- github
- public contact/person information
- publish contacts and membership with XFN and rel tags
- http://microformats.org/wiki/rel-group
- think about what level of privacy would be appropriate?
- who should be able to access what
- how to authenticate (indieauth with the related page, GPG encryption)
- search
- use a client side javascript search
- http://manas.com.ar/blog/2015/10/22/middleman-search-client-side-search-in-your-middleman-site.html
- https://stork-search.net/, Rust and WASM based client side search
- allow code examples to be stored in separate files and inlined into articles
- this should make it easier to check and execute the code
- would this then need to include a gist like system?
- look into integrating the mermaid diagraming tool
- add support for including code snippets as separate files which are include into articles
- make it easy to do mentions in articles/wiki/etc
- things to PESOS
- figure out how to publish events and session
- both allow events to be created, this could be PESOS from other places
- example https://aaronparecki.com/presentations
- and POSSE to other sites
- include vcard list with exordium, for linking to others
- https://indieweb.org/nicknames-cache
- use ppl to manage it
- support posting and subscription over email
- how to make it easy
- have a paid which is the default
- and easy support for something self-hosted
- consider using gitlab CI
- allow posting by email, maybe something like matrix as well
- how to make it easy
- pick a method for doing slides with works well with this
- describe at least one method for CI/CD/automatic deploying
- follow up on posting my own editings to OpenStreetMap
- work on bring icky style or bookmarking by URL
- https://indieweb.org/geo-wiki
- this describes a similar idea
- except the wiki is associated with URL/URNs instead of lat/long
- actually has similar issues of wanting to link to nested pages
- e.g.,
- a page for a less precise lat/log should link or embed a page for a more precise lat/log up and down
- a URL page should similary link to other URLs up and down
- /wiki/
- /uri/
- /geo/
- I think that I like this better it makes things more clear
- it is actually consistent with something like /photo/, where a photo might get similary updated with information over time
- https://tools.ietf.org/html/rfc3986#section-1.1.2
- convert the icky formath to markdown + yaml annotations
- make it possible to then link to photos
- https://indieweb.org/geo-wiki
- add linting to the project and keep adding tools
- webpagetest.org
- lighthouse
- figure out indiemark and then work through the levels
- verify that HTML header information is fully populated
- add ccRel link formatting to everything
- follow the W3C linking standard for it
- document using it in indieweb stuff
- book reading and review
- create a useful 404 page with dynamic javascript
- middleman has some tools for processing files with frontmatter
- this could be used for reading and writing those files
::Middleman::Util::Data.parse
- https://stackoverflow.com/questions/36948807/edit-yaml-frontmatter-in-markdown-file/36984468#36984468
- for git repository
- consider flag to indicate intended usage (e.g., for use, clone only, deprecated)
- want to integrate web comments on all parts of the repo
- e.g., commits, lines, PRs
- would like to integrate display of related wiki and issues
- also include an intent flag
- prototype
- clone
- deprecated
- for_use
- what else?
- generate arbitrary diffs in the browser using web worker + git.js
- for projects
- want to be able to go all the way from idea to full running project
- embed list of links and tickets
- and then allow links out to the same later on
- this will be useful for
- http://microformats.org/wiki/h-product
- http://microformats.org/wiki/project
- https://github.com/ewilderj/doap/wiki
- http://microformats.org/wiki/project-formats
- use a HTML5 structure with main and related structure tags
- proposal for listing book information library JSON
- add category support, like wikipedia
#Inspiration This to review for ideas:
- https://github.com/crtvhd/middleboy
- https://github.com/gregory/middleman-settings
- Locking the Web Open: A Call for a Distributed Web
- javascript (e.g., client side search engine)
- bitcoin
- IPFS/bittorrent
- Namecoin
- public/private keys
- investigate pushing git repos or projects to aggregators
- openhub
- github
- gitlab
- bitbucket
- rubytoolbox
- article on this topic by flameeyes, Project Memory
- Autotune Vox Media's middleman based CMS
- Ain't CMS
- The Future of Websites: Headless CMS
Copyright 2015 Andrew Sullivan Cant. Licensed GPLv3, see LICENSE for details.