Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
"escape-string-regexp": "^5.0.0",
"fast-glob": "^3.3.3",
"gray-matter": "^4.0.3",
"htmlrewriter": "^0.0.13",
"i18next": "^25.8.13",
"i18next-fs-backend": "^2.6.1",
"isomorphic-dompurify": "^2.36.0",
Expand Down
8 changes: 8 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

68 changes: 45 additions & 23 deletions scripts/prepare-build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,13 @@ if (baseBranch && baseRefArg) {
process.exit(1);
}

const BLOG_DIR = "src/content/blog";
const CONTENT_ROOT = "src/content";
const CONTENT_DIRS = readdirSync(CONTENT_ROOT, { withFileTypes: true })
.filter(
(e) =>
e.isDirectory() && !e.name.startsWith("_") && !e.name.startsWith("."),
)
.map((e) => join(CONTENT_ROOT, e.name));
const OG_ROUTE = "src/pages/open-graph/[...route].ts";
const I18N_CONFIG = "src/i18n/config.ts";
const I18N_DIR = "src/i18n/translations";
Expand Down Expand Up @@ -117,50 +123,66 @@ let changed: string[] = [];
if (baseRef) {
const mode = useMergeBase ? "merge-base" : "direct";
console.log(`Diff: ${mode} against ${baseRef}`);
changed = getChangedFiles(baseRef, useMergeBase, BLOG_DIR, I18N_DIR);
changed = getChangedFiles(baseRef, useMergeBase, ...CONTENT_DIRS, I18N_DIR);
console.log(
`Diff: ${changed.length} file${changed.length !== 1 ? "s" : ""} changed`,
);
} else {
console.log("Diff: skipped");
}

// Limit blog posts, keeping edited ones
// Limit content entries
if (limitPosts) {
const limit = Number(limitPosts);
if (!Number.isFinite(limit) || limit < 1) {
console.error(`Invalid --limit-posts value: ${limitPosts}`);
process.exit(1);
}

const isPost = (f: string) => /^\d/.test(f) && f.endsWith(".md");

const allPosts = readdirSync(BLOG_DIR).filter(isPost).sort().reverse();
const keep = new Set(allPosts.slice(0, limit));

for (const file of changedFilesUnder(BLOG_DIR)) {
if (isPost(basename(file))) keep.add(basename(file));
}

let removed = 0;
for (const file of allPosts) {
if (keep.has(file)) continue;
rmSync(join(BLOG_DIR, file));
removed++;
const isContent = (f: string) => !f.startsWith("_") && f.endsWith(".md");
const localeSet = new Set(Object.keys(locales));
const stats: { name: string; kept: number; total: number }[] = [];

for (const dir of CONTENT_DIRS) {
const changedKeep = new Set(changedFilesUnder(dir));
let kept = 0;
let total = 0;
for (const locale of readdirSync(dir)) {
if (!localeSet.has(locale)) continue;
const localeDir = join(dir, locale);
const files = readdirSync(localeDir).filter(isContent).sort().reverse();
const baseline =
locale === defaultLocale
? new Set(files.slice(0, limit))
: new Set<string>();
for (const file of files) {
total++;
const rel = join(localeDir, file);
if (baseline.has(file) || changedKeep.has(rel)) {
kept++;
continue;
}
rmSync(rel);
}
}
if (total > 0) stats.push({ name: basename(dir), kept, total });
}

console.log(
`Blog: kept ${allPosts.length - removed} of ${allPosts.length} posts`,
);
const summary = stats
.map(({ name, kept, total }) => `${name} ${kept}/${total}`)
.join(", ");
console.log(`Content: kept ${summary || "no entries"}`);
}

// Limit locales
if (limitLocales) {
const keepLocales = new Set([defaultLocale]);

for (const file of changedFilesUnder(I18N_DIR)) {
const locale = relative(I18N_DIR, file).split("/")[0];
if (locale && locale !== defaultLocale) keepLocales.add(locale);
for (const dir of [I18N_DIR, ...CONTENT_DIRS]) {
for (const file of changedFilesUnder(dir)) {
const locale = relative(dir, file).split("/")[0];
if (locale && locale !== defaultLocale) keepLocales.add(locale);
}
}

writeFileSync(I18N_CONFIG, serializeI18nConfig(keepLocales));
Expand Down
10 changes: 9 additions & 1 deletion src/components/pages/blog/BlogContent.astro
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
<div id="blog-content" lang="en" dir="ltr">
---
interface Props {
lang?: string;
dir?: "ltr" | "rtl";
}
const { lang = "en", dir = "ltr" } = Astro.props;
---

<div id="blog-content" lang={lang} dir={dir}>
<slot />
</div>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Expenditure for the year comprised of 3 totals as some costs could not be settle

So, what did our ~212 BTC get spent on over the year? Or, in other words, what did we accomplish? Here's a bit of a taste before we dig into the nitty-gritty:

![Infographic](./assets/2014-year-in-review/overview.jpg)
![Infographic](../assets/2014-year-in-review/overview.jpg)

_Core Development_

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ To download the podcast directly please [use this link to the MP3](http://traffi

A brief summary of the points discussed follows, and a full transcription of the podcast is below.

1. The release of the new website, and the move to [the getmonero.org domain](https://getmonero.org/)
1. The release of the new website, and the move to [the getmonero.org domain](/)

2. The publication of [MRL-0004, Improving Obfuscation in the CryptoNote Protocol](https://lab.getmonero.org/pubs/MRL-0004.pdf)

3. Monero's [design and development goals](http://getmonero.org/design-goals/)
3. Monero's [design and development goals](/design-goals/)

Dev Diaries and External Projects will resume being covered from next week. Until then!

Expand Down Expand Up @@ -164,7 +164,7 @@ Gotcha.

So that's basically...the long and short of it is that minimum mixin is going to be implemented on a wallet level quite quickly, and the hard fork will be planned and will happen later.

Okay, so we spoke about the new website, we've spoken about [MRL 4](https://lab.getmonero.org/pubs/MRL-0004.pdf), and now we're going to kinda jump back just to something on the website. Now if you are on getmonero.org and you go to the Knowledge Base menu you will see the section called [Design and Development Goals](https://getmonero.org/design-goals). Now design and developing goals is something will be updating from time to time, but of particular interest to people, and of particular interest to us as well because we created it, are really the things that were going to be doing in the future.
Okay, so we spoke about the new website, we've spoken about [MRL 4](https://lab.getmonero.org/pubs/MRL-0004.pdf), and now we're going to kinda jump back just to something on the website. Now if you are on getmonero.org and you go to the Knowledge Base menu you will see the section called [Design and Development Goals](/design-goals). Now design and developing goals is something will be updating from time to time, but of particular interest to people, and of particular interest to us as well because we created it, are really the things that were going to be doing in the future.

Now we are not what to discuss it in this Missive, because otherwise it really would end up being a 4, 5, 6 hour missive, and frankly...who's got the time for that, ain't nobody got time for that! But there's some key things that were going to be doing, and I think what is quite nice, especially on the development side, is it does show the flow to important things like what needs to be done before we get to the GUI, what needs to be done before we get to IPC. That's not to say this is the absolute order of things, it's just to show some of the fundamentals that need to be put in place.

Expand All @@ -188,7 +188,7 @@ Well I don't know...when you say refactoring things into libraries I'm sort of..

Kind of...I mean, I think that over the next while we will take some time in future Missives, especially when it's been a quieter week, when we can do some of the stuff and talk about why it's necessary, what it does, and why we did it at all. It's not a matter of us being perfectionists, as has being mentioned, or us wanting Monero to be enterprise grade. It's true, we are working very slowly on making Monero incredibly robust and incredibly extensible, but a lot of the stuff it's kind of like...if we don't do it now it's never going to be done or it will be done...maybe...in like 10 years.

So...that's our first Missive podcast: [new website](https://getmonero.org); [MRL 4](https://lab.getmonero.org/pubs/MRL-0004.pdf); [design and development goals](https://getmonero.org/design-goals).
So...that's our first Missive podcast: [new website](/); [MRL 4](https://lab.getmonero.org/pubs/MRL-0004.pdf); [design and development goals](/design-goals).

#### Gingeropolous

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ As you may know (or may not know:) we had an extremely busy January, which has l

The past year has been an interesting one for Monero. There was something of a reckoning as speculators realised that Monero was never going to be a pump-and-dump, rushing out a flashy GUI and ill-conceived features with no regard to the security of the network or the safety of our users. Those that stuck it out have seen steady, constant progress and steady, constant community growth.

![Project Stats 2015 Overview](./assets/2015-year-in-review/stats.jpg)
![Project Stats 2015 Overview](../assets/2015-year-in-review/stats.jpg)

**Governance**

Expand All @@ -49,7 +49,7 @@ When considering a governance model for Monero our main aim has been to find a b
- Members of the Core Team will be given an opportunity to state their views, vote (using the voting system detailed below), and discuss the matter at length, within the time limit of the meeting.
- To conclude the meeting, the members of the Core Team will tally the votes that have been cast on the matter during the discussion and forward the decision to the community.

![Governance Process Overview](./assets/2015-year-in-review/governance-process.jpg)
![Governance Process Overview](../assets/2015-year-in-review/governance-process.jpg)

The Core Team, as well as individual contributors, can participate in all related discussions, but their opinions are not absolute or perfect. Community members are encouraged to test and push arguments, regardless of who is making them, until they are satisfied that the idea or change is workable or worth the risks.

Expand Down Expand Up @@ -105,7 +105,7 @@ Bitcoin Donations: [1KTexdemPdxSBcG55heUuTjDRYqbC5ZL8H](bitcoin:1KTexdemPdxSBcG5

**Design and Development Goals**

During the course of 2015 we published a set of [Design and Development Goals](https://getmonero.org/design-goals/) focused not only on pure development, but also on research goals that the Monero Research Lab are pursuing. Typically the development goals are smaller, more immediate, and easier to achieve, whereas some of the research goals might not even be feasible, and others could take many years to find a suitable solution.
During the course of 2015 we published a set of [Design and Development Goals](/design-goals/) focused not only on pure development, but also on research goals that the Monero Research Lab are pursuing. Typically the development goals are smaller, more immediate, and easier to achieve, whereas some of the research goals might not even be feasible, and others could take many years to find a suitable solution.

Nevertheless, over the course of 2015 we managed to complete 7 of the development goals and 2 of the research goals:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ For some time we have known that we needed an exclusive center where Monero's mo

It is for this reason that the Monero Core Team have seen to the construction of a special center that caters to these individuals - the artists, politicians, leaders of industry and sports figures who use Monero... and no one else. We are pleased to call this new campus the Monero Celebrity Center of Los Angeles.

![Interior](./assets/april-fools/2016/inside.jpg)
![Interior](../assets/april-fools/2016/inside.jpg)

Built on the banks of the Arroyo Calabasas river, the Monero Celebrity Center will be open 24 hours a day, and will house 420 full time staff to assist celebrities with their Monero purchases.

![Exterior](./assets/april-fools/2016/building.jpg)
![Exterior](../assets/april-fools/2016/building.jpg)

Now one might argue that these individuals already have benefits that many will never have. But, ask any one of them - ask yourself - can the world be lonely even for those who appear to have everything. Subject to the unusual pressures that come with prominence and responsibility, being looked upon under a microscope for good or bad - these are burdens others can't imagine. Not to mention the counter-attack such individuals are subjected to by those less-ambitious who would rather fight to maintain a "status quo" than allow another to attempt a change or improvement. We asked ourselves "How can Monero help these people and _how can they help Monero_?"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,24 +77,24 @@ We appreciate the effort that went into this research paper, but we suggest the

**Figure 5 from the report showing the fraction of deducible inputs. Notice the large drops following block height 1,000,000, when 0-mixin transactions were prohibited. Furthermore, these inputs likely do not include all those used in a single transaction. For instance, for a mixin 9 transaction, 5 may be deduced. This means that the inputs would be reported here as deducible, even if the transaction is not traceable.**

![figure5](./assets/linkability-response/figure5.jpg)
![figure5](../assets/linkability-response/figure5.jpg)

**Table 2 from the report showing the proportion of transactions with a positive mixin that can be deduced. We want to make clear that the findings of this chart and analysis method have absoutely zero relevance to RingCT transactions.**

![table2](./assets/linkability-response/table2.jpg)
![table2](../assets/linkability-response/table2.jpg)

**Table 3 from the report showing the proportion of deducible transactions where the real input is also the most recently used one in the transaction.**

![table3](./assets/linkability-response/table3.jpg)
![table3](../assets/linkability-response/table3.jpg)
**Examples of statements we find misleading**

This is a tweet from a contributor to the paper.

![tweet](./assets/linkability-response/tweet.jpg)
![tweet](../assets/linkability-response/tweet.jpg)

This image is from the [CoinTelegraph interview](https://cointelegraph.com/news/monero-transactions-history-can-be-revealed-and-exposed-research). Based on the wording, you may think an attacker could determine with certainty which input is yours. However, the attacker can guess and be correct less than half of the time. Furthermore, even if the attacker guesses correctly, there is no way of proving this with certainty with data from the blockchain alone.

![cointelegraph](./assets/linkability-response/cointelegraph.jpg)
![cointelegraph](../assets/linkability-response/cointelegraph.jpg)
Andrew Miller asked us to include other statements from the researchers or ZCash Foundation members that we feel is misleading. This paper is not supposed to be a comprehensive list of such statements. It is only useful in providing a few examples.

This draft was shown to Andrew Miller before release on the website. Some of his considerations have been included in this response.
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ author: dEBRUYNE / fluffypony
**\<rehrar>** it's based on the same framework as the getmonero.org website, so once the custom framework is made for one, it is easy to make pages for the other
**\<rehrar>** my update is that we're making the framework even now, and it's coming along well, I should be able to make a few experimental Kovri pages soon
**\<rehrar>** The question is content.
**\<anonimal>** I think the "It's I2P, but in C++" phrase should go; we should use our standard "A secure, private, untraceable C++ implementation of the [I2P anonymous network](https://getmonero.org/knowledge-base/moneropedia/i2p)"
**\<anonimal>** I think the "It's I2P, but in C++" phrase should go; we should use our standard "A secure, private, untraceable C++ implementation of the [I2P anonymous network](/knowledge-base/moneropedia/i2p)"
**\<ajs>** I will work with rehrar to write up some content, but need direction on what should be included.
**\<rehrar>** that's fine. Copy is not indicative. :)
**\<bigreddmachine>** My past month has been packed getting ready for my phd comprehensive exam (1 step before the defense). So I haven't looked at the site yet, but talked briefly with ajs about it and plan to get more involved now that that's done.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Due to variance, the scheduled protocol upgrade will take place on or around the

If you are using the CLI you ought to perform the following steps:

1. Download the new binaries from [here](https://getmonero.org/downloads/).
1. Download the new binaries from [here](/downloads/).

2. Extract the new binaries to a new directory of your liking.

Expand All @@ -51,7 +51,7 @@ Note that a blockchain resync is **not** needed. If you open `monerod-v.0.11.0.0

If you are using the GUI you ought to perform the following steps:

1. Download the new binaries from [here](https://getmonero.org/downloads/).
1. Download the new binaries from [here](/downloads/).

2. Extract the new binaries to a new directory of your liking.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ The Monero Project differs from many, if not most, projects in the cryptospace b

As with most things in life, there are pros and cons to the aforementioned approach, with one of the greater strengths being everyone (generally) knows who's in charge of what, leading to ease of communication, and clarity for newcomers on where to direct questions or contributions of their own. A disadvantage to this method is it is a form of centralization, with the question of whether or not the project would survive should the foundation shut down for any reason.

The Monero Project has chosen a different approach to contribution, namely making all of it 'external'. While there is a [Core Team](https://getmonero.org/team) in place, they are, at best, an informally affiliated group who have proven to have Monero's best interests in mind, and view their role as 'stewards' rather than CEOs or managers. This approach is powerful, in that it leads to minimal centralization, while still enabling the community to have a trusted group that can set a philosophy and direction for Monero, as well as, on a practical level, facilitate project critical transactions (Forum Funding System or FFS), mediate disputes, merge code, and be trusted with funds to be used on Project matters [(the general donation fund)](https://doante.getmonero.org).
Comment thread
redsh4de marked this conversation as resolved.
The Monero Project has chosen a different approach to contribution, namely making all of it 'external'. While there is a [Core Team](/team) in place, they are, at best, an informally affiliated group who have proven to have Monero's best interests in mind, and view their role as 'stewards' rather than CEOs or managers. This approach is powerful, in that it leads to minimal centralization, while still enabling the community to have a trusted group that can set a philosophy and direction for Monero, as well as, on a practical level, facilitate project critical transactions (Forum Funding System or FFS), mediate disputes, merge code, and be trusted with funds to be used on Project matters [(the general donation fund)](https://donate.getmonero.org).

One of the drawbacks of such an approach however, is that if the Core Team is not directly responsible for development, marketing, and support, then who is? The answer is: you!

Expand Down
Loading