• This repository has been archived on 16/Feb/2018
  • Stars
    star
    337
  • Rank 125,272 (Top 3 %)
  • Language
    Go
  • License
    BSD 3-Clause "New...
  • Created about 11 years ago
  • Updated about 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Identicon generator

Sigil

Sigil's inverted Sigil Sigil's Sigil

Sigil is a deterministic identicon generator.

Sigil creates a recognizable* identicon for each user that can be consistently used across many sites when a user-uploaded avatar or Gravatar is unavailable or unwanted. Sigils can be generated by any app or service using this application or other implementation of the Sigil protocol. Sites can also use Sigil generation services.

* see Privacy below

Using Sigil

Sigil 0.1 creates identicons to represent users. A future release will have additional algorithms and representations for non-persons. This will help anyone who encounters Sigils to determine quickly if they represent users or other content.

Sigil generates an identicon from a source string. In most cases (see Privacy) the source string will be the user's email address. Query parameters can be used to request an SVG or PNG of any size and switch the foreground and background colors if desired. Reversing the background and foreground colors does not change the information represented in a Sigil, so the reversed image can be used if the style is more compatible with the host app.

You can generate Sigils internally using this app (or your own implementation of the protocol below) or use a Sigil service.

The Sigil server takes an arbitrary string from the path and uses a MD5 of it to generate the sigil. If you already have an MD5, you can hex encode it and the server will not hash it again.

https://sigil.cupcake.io/arbitrary

Simply replace arbitrary with data (for example a username) to get a Sigil. You may optionally append .png or .svg to explicitly request a PNG or SVG (PNG is the default). Two URL parameters are available:

  • w=240 sets the width in pixels (must be evenly divisible by 12). The default width is subject to change, so you should specify the width explicitly.
  • inverted=1 inverts the colors.

Privacy

There exists a possibility of significant user information disclosure if used improperly. Email addresses should not be used as the source string (even if hashed first) if the user's email address is not meant to be publicly available through your site. It is possible to discover the email address from which the Sigil was derived. This is a serious leak if the user's address is not exposed elsewhere on the site. In these cases, use a different source string composed of information that is available such as a username or user id.

The Protocol

This repo contains a Sigil implementation written in Go, but Sigil can be implemented in any language. A formal specification will be included with the 1.0 release.

Sigil uses the truncated MD5 hash of a string to create 5x5 identicons. The first three columns and the color are generated from the truncated hash, the last two columns are a reflection of the first two (1->5, 2->4).

Roadmap

Sigil is still a work in progress. The color scheme is still being finalized and this implementation may be optimized further. Additional background colors will likely also be provided. We also intend to create a separate representation for things instead of users i.e. favicons for Heroku apps. The suggested use instructions (source string, background color, inverted colors, default width) may also change before the 1.0 release.

Try it

Download this repo or use sigil.cupcake.io to generate a Sigil.

Use Sigils in your own apps for users who don't have avatars or use your own Sigil as an avatar in other apps.

Ales Nesetril designed the color scheme.

Other implementations

More Repositories

1

tent.io

The website for Tent — the protocol for evented data storage and decentralized communication
HTML
798
star
2

tentd

Reference implementation of a Tent server in Ruby
Ruby
504
star
3

rdb

Redis RDB parser for Go
Go
174
star
4

mannersagain

Drop-in graceful hot restarting of net/http servers
Go
98
star
5

tent-status

Microblogging powered by Tent
CoffeeScript
88
star
6

hawk-go

Hawk authentication implementation in Go
Go
76
star
7

tentd-admin

JavaScript
75
star
8

gokiq

Sidekiq-style background jobs in Go
Go
61
star
9

setdb

The Redis protocol on top of LevelDB, written in Go (WIP)
Go
58
star
10

tentd-omnibus

tentd + tent-status + tent-admin in an integrated bundle
Ruby
51
star
11

react-modal

Modal component for React
JavaScript
30
star
12

hawk-ruby

Ruby implementation of Hawk HTTP authentication scheme
Ruby
24
star
13

react-scroll-pagination

Infinite scroll component for React
JavaScript
22
star
14

tent-schemas

JSON schemas for Tent
Ruby
20
star
15

tent-client-ruby

Ruby Tent protocol client
Ruby
20
star
16

hawk-objc

Hawk authentication implementation in Objective-C
Objective-C
19
star
17

sparklemotion

Appcasting from dawn 'til dusk
Go
14
star
18

tent-client-go

Go Tent protocol client
Go
12
star
19

jsonschema

Go
11
star
20

http-link-go

HTTP Link parsing in Go
Go
11
star
21

tent-admin

Admin app for Tent
CoffeeScript
10
star
22

messenger-ios

Tent group messaging on iOS
Objective-C
9
star
23

tent-validator

Ruby
8
star
24

tent-client-objc

Tent protocol client for Objective-C
Objective-C
8
star
25

json-pointer-ruby

Ruby
7
star
26

omniauth-tent

Ruby
5
star
27

tent-markdown-js

Tent dialect for markdown-js
JavaScript
5
star
28

pkcs10

PKCS#10 (Certificate Signing Request) implementation in Go
Go
4
star
29

sequel-json

Sequel ORM Plugin for serializing columns as JSON
Ruby
4
star
30

marbles-tent-client-js

Javascript Tent client built on the HTTP component of Marbles.js for the browser
JavaScript
4
star
31

tent-migrate

Ruby
3
star
32

tent-apidoc

Ruby
3
star
33

files-web

JavaScript
3
star
34

messenger-web

Tent private messaging app
JavaScript
3
star
35

antechamber

A HTTP proxy that solves image mixed-content warnings
Go
3
star
36

goamz

Fork of https://launchpad.net/goamz
Go
3
star
37

snowdrift

Yet another URL shortener
Go
2
star
38

apns

Yet another APNS library in Go
Go
2
star
39

sfilter

Recursive struct -> map conversion with field filtering
Go
2
star
40

text-entities-go

URL and Hashtag extraction
Go
2
star
41

tent-examples-go

Go
2
star
42

rack-putty

Simple web framework built on rack for mapping sinatra-like routes to middleware stacks
Ruby
2
star
43

canonical-json-go

Canonical JSON marshaling in Go
Go
2
star
44

tent-canonical-json-ruby

Ruby
2
star
45

libattic

C++
1
star
46

icing

Custom Bootstrap CSS
CSS
1
star
47

nike

Project management that isn't awful
JavaScript
1
star
48

apps-bar

CSS
1
star
49

boiler-web

Ruby
1
star
50

stripe

Stripe client in Go
Go
1
star
51

api-validator

Ruby
1
star