{"id":13583458,"url":"https://github.com/mislav/rfc","last_synced_at":"2025-04-06T18:32:23.217Z","repository":{"id":45741804,"uuid":"2287594","full_name":"mislav/rfc","owner":"mislav","description":"Pretty RFC indexes and reformats RFC documents for easier discovery and viewing.","archived":true,"fork":false,"pushed_at":"2017-03-18T03:33:33.000Z","size":165,"stargazers_count":938,"open_issues_count":10,"forks_count":57,"subscribers_count":35,"default_branch":"master","last_synced_at":"2025-04-02T20:57:59.484Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pretty-rfc.herokuapp.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mislav.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-08-29T09:14:46.000Z","updated_at":"2025-03-07T02:28:45.000Z","dependencies_parsed_at":"2022-09-13T08:12:34.112Z","dependency_job_id":null,"html_url":"https://github.com/mislav/rfc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mislav%2Frfc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mislav%2Frfc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mislav%2Frfc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mislav%2Frfc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mislav","download_url":"https://codeload.github.com/mislav/rfc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247531245,"owners_count":20953922,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T15:03:29.509Z","updated_at":"2025-04-06T18:32:21.552Z","avatar_url":"https://github.com/mislav.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"Pretty RFC\n==========\n\nThe goal of this projects is to collect and reformat official RFC documents and\npopular drafts.\n\nRFCs, as published officially, are in unsightly and impractical paged format.\nWhat's worse, the official format of most RFCs is plain text, even though they\nare authored in richer formats such as XML.\n\nRunning the app\n---------------\n\nDependencies:\n\n* git\n* Ruby 1.9\n* rake\n* Bundler\n* libxml2\n* PostgreSQL\n\nBy default, the app will try to connect to the database named \"rfc\" on localhost\nwithout a username or password. This can be affected with the `DATABASE_URL`\nenvironment variable. If the database doesn't exist, the [boostrap\nscript][bootstrap] will try to create it.\n\n~~~ sh\n# initialize dependencies and database\n$ script/bootstrap\n\n# start the server\n$ bundle exec rackup\n\n# now visit http://localhost:9292/\n~~~\n\nThe RFC index\n-------------\n\nThe [index of all RFCs][index] is pulled from FTP:\nftp://ftp.rfc-editor.org/in-notes/rfc-index.xml\n\nThen the metadata for each RFC entry is imported to the database. This is done\nby the [\"import_index\" rake task][rakefile] as part of the bootstrap process.\n\nThe search index\n----------------\n\nSearching is done with [PostgreSQL full text searching][textsearch]. The\nnecessary indexes, stored procedures and triggers for this are in [Searchable][]\nmodule.\n\nThe search results ordering is not perfect, but it is improved by bringing in a\n[popularity score from faqs.org][pop]. This is done by the [\"import_popular\" rake\ntask][rakefile] as part of the bootstrap process.\n\nFetching and rendering RFCs\n---------------------------\n\nWhen an RFC is first requested and it has never been processed, the app tries to\nlook up its source XML document and render it to HTML. The XML lookup goes as\nfollows:\n\n1.  The fetcher tries to find the XML in http://xml.resource.org/public/rfc/xml/\n    where some RFCs in the 2000–53xx range can be found.\n\n2.  Failing that, it fetches the metadata for the RFC from\n    http://datatracker.ietf.org/doc/\n\n3.  If there is a link to the XML from the datatracker, use that. There probably\n    won't be a link, though.\n\n4.  When there is no XML link, the fetcher looks up the draft name for the RFC\n    and checks if it can at least find the XML for its draft at\n    http://www.ietf.org/id/\n\n**Note:** This process only discovers XML sources for a small subset of RFCs.\nThis is the biggest problem I have right now. The XML and nroff files in which\nRFCs were authored are usually not published, but are archived by rfc-editor.org\nand available by request by email.\n\nI'm investigating is there a way for bulk retrieval of these source files.\n\nIf unable to obtain them, I will have to reformat RFCs by parsing the current\npublications instead of the source XML. This might be a lot of work.\n\nWhen obtained, the XML is parsed and rendered to HTML by the [RFC][] module.\nThe templates used for generating HTML are in [templates/][templates].\n\n\n  [index]:      http://www.rfc-editor.org/getbulk.html\n  [rakefile]:   https://github.com/mislav/rfc/blob/master/Rakefile\n  [searchable]: https://github.com/mislav/rfc/blob/master/searchable.rb\n  [rfc]:        https://github.com/mislav/rfc/blob/master/rfc.rb\n  [bootstrap]:  https://github.com/mislav/rfc/blob/master/script/bootstrap\n  [templates]:  https://github.com/mislav/rfc/tree/master/templates\n  [textsearch]: http://www.postgresql.org/docs/9.1/static/textsearch-intro.html\n  [pop]:        http://www.faqs.org/rfc-pop1.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmislav%2Frfc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmislav%2Frfc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmislav%2Frfc/lists"}