Standard Reputation Framework and NFT Minting for Reputation Transactions

Standard Reputation Framework and NFT Minting for Reputation Transactions
Preamble
SIP Number: XXX
Title: Standard Reputation Framework and NFT Minting for Reputation Transactions
Authors: [Author Name, GitHub Handle]
Status: Draft
Type: Standard
Created: 2024-05-22
License: BSD-2-Clause
Abstract
This SIP proposes a framework for implementing a standard reputation system on apps or websites. Each reputation transaction results in the minting of a Non-Fungible Token (NFT) to provide a verifiable, immutable record of the reputation event. This proposal outlines the standard attributes for the reputation system, the structure for XML and JSON representation, and the NFT minting process.
Motivation
A standardized reputation system with blockchain integration provides several benefits:

Transparency and Trust: Immutable records of reputation transactions increase transparency.
Interoperability: Standardized attributes allow for consistent implementation across different platforms.
Ownership: Minted NFTs represent a user’s reputation transactions, providing verifiable proof of reputation that users own.
Gamification: NFTs can be used to incentivize positive behavior and engagement.

Specification
Standard Attributes
User Information

user_id: A unique identifier for the user.
username: The display name of the user.
profile_url: URL to the user's profile.

Reputation Event

event_id: A unique identifier for the reputation event.
event_type: The type of reputation event (e.g., upvote, downvote, review).
event_description: A description of the reputation event.
event_timestamp: The timestamp when the event occurred.
event_value: The value of the reputation change (positive or negative).

NFT Information

nft_id: A unique identifier for the minted NFT.
nft_url: URL to the NFT on the blockchain.
nft_metadata: Metadata associated with the NFT, including details of the reputation event.

XML Representation
<ReputationTransaction>
    <User>
        <UserID>unique-user-id</UserID>
        <Username>username</Username>
        <ProfileURL>https://example.com/user/profile</ProfileURL>
    </User>
    <Event>
        <EventID>unique-event-id</EventID>
        <EventType>upvote</EventType>
        <EventDescription>Received an upvote on a comment</EventDescription>
        <EventTimestamp>2024-05-22T15:30:00Z</EventTimestamp>
        <EventValue>10</EventValue>
    </Event>
    <NFT>
        <NFTID>unique-nft-id</NFTID>
        <NFTURL>https://blockchain.com/nft/unique-nft-id</NFTURL>
        <NFTMetadata>Base64EncodedMetadata</NFTMetadata>
    </NFT>
</ReputationTransaction>

JSON Representation
{
  "user": {
    "user_id": "unique-user-id",
    "username": "username",
    "profile_url": "https://example.com/user/profile"
  },
  "event": {
    "event_id": "unique-event-id",
    "event_type": "upvote",
    "event_description": "Received an upvote on a comment",
    "event_timestamp": "2024-05-22T15:30:00Z",
    "event_value": 10
  },
  "nft": {
    "nft_id": "unique-nft-id",
    "nft_url": "https://blockchain.com/nft/unique-nft-id",
    "nft_metadata": "Base64EncodedMetadata"
  }
}

NFT Minting Process

Event Trigger: A reputation event occurs on the platform (e.g., a user receives an upvote).
Data Aggregation: The platform collects the necessary data for the reputation transaction.
NFT Creation: The platform generates an NFT with the collected data as metadata.
Blockchain Interaction: The platform interacts with a blockchain service to mint the NFT.
Storage and Access: The minted NFT’s URL and metadata are stored in the platform’s database and linked to the user’s profile.

Rationale
This framework leverages the immutability and transparency of blockchain technology to create a verifiable and trustworthy reputation system. By standardizing the attributes and using NFTs to record reputation transactions, users gain ownership and can showcase their reputation across different platforms.
Backwards Compatibility
This proposal introduces a new system and does not affect existing implementations. Platforms adopting this standard will need to integrate the reputation framework and NFT minting process.
Implementation
Implementing this proposal requires:

Database Changes: Modify the database to store the new reputation and NFT attributes.
Blockchain Integration: Implement the logic to interact with a blockchain service for minting NFTs.
API Development: Develop APIs to handle reputation transactions and provide data in the specified formats.
Frontend Changes: Update user interfaces to display reputation and NFT information.

Security Considerations

Data Privacy: Ensure user data is handled securely and with consent.
Blockchain Risks: Mitigate risks associated with blockchain interactions, such as transaction costs and potential delays.

Conclusion
This SIP provides a standardized approach to implementing a reputation system with blockchain integration. By minting NFTs for each reputation transaction, we create a transparent, verifiable, and user-owned record of reputation, enhancing trust and engagement across platforms.
References

Stacks Improvement Proposals (SIPs): stacksgov/sips
Example blockchain service: Stacks Blockchain

15 Common Categories to Build Reputation Onchain
Standard Format for Onchain Reputation Categories
Each reputation category is outlined with standard attributes, JSON and XML representations, and guidelines for implementation to ensure consistency and ease of integration across different platforms.
1. User Contributions

Attributes:

user_id: Unique identifier for the user.
contribution_id: Unique identifier for the contribution.
contribution_type: Type of contribution (e.g., article, code, design).
contribution_description: Description of the contribution.
timestamp: When the contribution was made.

JSON Representation:
{
  "user_id": "unique-user-id",
  "contribution_id": "unique-contribution-id",
  "contribution_type": "article",
  "contribution_description": "Authored a technical article",
  "timestamp": "2024-05-22T15:30:00Z"
}

XML Representation:
<UserContribution>
  <UserID>unique-user-id</UserID>
  <ContributionID>unique-contribution-id</ContributionID>
  <ContributionType>article</ContributionType>
  <ContributionDescription>Authored a technical article</ContributionDescription>
  <Timestamp>2024-05-22T15:30:00Z</Timestamp>
</UserContribution>

2. Feedback and Reviews

Attributes:

user_id: Unique identifier for the user.
review_id: Unique identifier for the review.
review_type: Type of review (e.g., product, service).
review_description: Description of the review.
rating: Rating given (e.g., 1-5 stars).
timestamp: When the review was submitted.

JSON Representation:
{
  "user_id": "unique-user-id",
  "review_id": "unique-review-id",
  "review_type": "product",
  "review_description": "Reviewed a product",
  "rating": 5,
  "timestamp": "2024-05-22T15:30:00Z"
}

XML Representation:
<FeedbackReview>
  <UserID>unique-user-id</UserID>
  <ReviewID>unique-review-id</ReviewID>
  <ReviewType>product</ReviewType>
  <ReviewDescription>Reviewed a product</ReviewDescription>
  <Rating>5</Rating>
  <Timestamp>2024-05-22T15:30:00Z</Timestamp>
</FeedbackReview>

3. Community Engagement

Attributes:

user_id: Unique identifier for the user.
engagement_id: Unique identifier for the engagement.
engagement_type: Type of engagement (e.g., forum post, event participation).
engagement_description: Description of the engagement.
timestamp: When the engagement occurred.

JSON Representation:
{
  "user_id": "unique-user-id",
  "engagement_id": "unique-engagement-id",
  "engagement_type": "forum post",
  "engagement_description": "Posted in a forum",
  "timestamp": "2024-05-22T15:30:00Z"
}

XML Representation:
<CommunityEngagement>
  <UserID>unique-user-id</UserID>
  <EngagementID>unique-engagement-id</EngagementID>
  <EngagementType>forum post</EngagementType>
  <EngagementDescription>Posted in a forum</EngagementDescription>
  <Timestamp>2024-05-22T15:30:00Z</Timestamp>
</CommunityEngagement>

4. Skill Verification

Attributes:

user_id: Unique identifier for the user.
skill_id: Unique identifier for the skill.
skill_name: Name of the skill.
verification_date: Date when the skill was verified.

JSON Representation:
{
  "user_id": "unique-user-id",
  "skill_id": "unique-skill-id",
  "skill_name": "Blockchain Development",
  "verification_date": "2024-05-22"
}

XML Representation:
<SkillVerification>
  <UserID>unique-user-id</UserID>
  <SkillID>unique-skill-id</SkillID>
  <SkillName>Blockchain Development</SkillName>
  <VerificationDate>2024-05-22</VerificationDate>
</SkillVerification>

5. Project Participation

Attributes:

user_id: Unique identifier for the user.
project_id: Unique identifier for the project.
project_name: Name of the project.
role: Role of the user in the project.
timestamp: When the user participated in the project.

JSON Representation:
{
  "user_id": "unique-user-id",
  "project_id": "unique-project-id",
  "project_name": "Open Source Project",
  "role": "Contributor",
  "timestamp": "2024-05-22T15:30:00Z"
}

XML Representation:
<ProjectParticipation>
  <UserID>unique-user-id</UserID>
  <ProjectID>unique-project-id</ProjectID>
  <ProjectName>Open Source Project</ProjectName>
  <Role>Contributor</Role>
  <Timestamp>2024-05-22T15:30:00Z</Timestamp>
</ProjectParticipation>

6. Mentorship Activities

Attributes:

user_id: Unique identifier for the user.
mentorship_id: Unique identifier for the mentorship activity.
mentorship_type: Type of mentorship (e.g., one-on-one, group).
mentorship_description: Description of the mentorship activity.
timestamp: When the mentorship occurred.

JSON Representation:
{
  "user_id": "unique-user-id",
  "mentorship_id": "unique-mentorship-id",
  "mentorship_type": "one-on-one",
  "mentorship_description": "Mentored a new developer",
  "timestamp": "2024-05-22T15:30:00Z"
}

XML Representation:
<MentorshipActivity>
  <UserID>unique-user-id</UserID>
  <MentorshipID>unique-mentorship-id</MentorshipID>
  <MentorshipType>one-on-one</MentorshipType>
  <MentorshipDescription>Mentored a new developer</MentorshipDescription>
  <Timestamp>2024-05-22T15:30:00Z</Timestamp>
</MentorshipActivity>

7. Learning Achievements

Attributes:

user_id: Unique identifier for the user.
achievement_id: Unique identifier for the achievement.
course_name: Name of the course or training.
completion_date: Date when the course was completed.
certificate_url: URL to the certificate of completion.

JSON Representation:
{
  "user_id": "unique-user-id",
  "achievement_id": "unique-achievement-id",
  "course_name": "Blockchain Basics",
  "completion_date": "2024-05-22",
  "certificate_url": "https://example.com/certificate"
}

XML Representation:
<LearningAchievement>
  <UserID>unique-user-id</UserID>
  <AchievementID>unique-achievement-id</AchievementID>
  <CourseName>Blockchain Basics</CourseName>
  <CompletionDate>2024-05-22</CompletionDate>
  <CertificateURL>https://example.com/certificate</CertificateURL>
</LearningAchievement>

8. Awards and Honors

Attributes:

user_id: Unique identifier for the user.
award_id: Unique identifier for the award.
award_name: Name of the award.
award_description: Description of the award.
award_date: Date when the award was received.

JSON Representation:
{
  "user_id": "unique-user-id",
  "award_id": "unique-award-id",
  "award_name": "Best Developer",
  "award_description": "Awarded for outstanding development work",
  "award_date": "2024-05-22"
}

XML Representation:
<AwardHonor>
  <UserID>unique-user-id</UserID>
  <AwardID>unique-award-id</AwardID>
  <AwardName>Best Developer</AwardName>
  <AwardDescription>Awarded for outstanding development work</AwardDescription>
  <AwardDate>2024-05-22</AwardDate>
</AwardHonor>

### 9. **Bug Reports and Issue Tracking**
- **Attributes**:
 - **user_id**: Unique identifier for the user.
 - **issue_id**: Unique identifier for the issue.
 - **issue_description**: Description of the issue reported.
 - **resolution_status**: Status of the issue (e.g., open, closed, resolved).
 - **timestamp**: When the issue was reported.

- **JSON Representation**:
 ```json
 {
   "user_id": "unique-user-id",
   "issue_id": "unique-issue-id",
   "issue_description": "Reported a bug in the system",
   "resolution_status": "resolved",
   "timestamp": "2024-05-22T15:30:00Z"
 }

XML Representation:<BugReport>
  <UserID>unique-user-id</UserID>
  <IssueID>unique-issue-id</IssueID>
  <IssueDescription>Reported a bug in the system</IssueDescription>
  <ResolutionStatus>resolved</ResolutionStatus>
  <Timestamp>2024-05-22T15:30:00Z</Timestamp>
</BugReport>

10. Code Contributions

Attributes:

user_id: Unique identifier for the user.
commit_id: Unique identifier for the code commit.
repository_url: URL to the code repository.
commit_message: Message associated with the commit.
timestamp: When the commit was made.

JSON Representation:
{
  "user_id": "unique-user-id",
  "commit_id": "unique-commit-id",
  "repository_url": "https://github.com/example/repo",
  "commit_message": "Fixed a bug in the payment system",
  "timestamp": "2024-05-22T15:30:00Z"
}

XML Representation:
<CodeContribution>
  <UserID>unique-user-id</UserID>
  <CommitID>unique-commit-id</CommitID>
  <RepositoryURL>https://github.com/example/repo</RepositoryURL>
  <CommitMessage>Fixed a bug in the payment system</CommitMessage>
  <Timestamp>2024-05-22T15:30:00Z</Timestamp>
</CodeContribution>

11. Voting and Poll Participation

Attributes:

user_id: Unique identifier for the user.
poll_id: Unique identifier for the poll.
poll_question: The question posed in the poll.
vote_choice: User's choice in the poll.
timestamp: When the vote was cast.

JSON Representation:
{
  "user_id": "unique-user-id",
  "poll_id": "unique-poll-id",
  "poll_question": "Do you support the new feature?",
  "vote_choice": "Yes",
  "timestamp": "2024-05-22T15:30:00Z"
}

XML Representation:
<PollParticipation>
  <UserID>unique-user-id</UserID>
  <PollID>unique-poll-id</PollID>
  <PollQuestion>Do you support the new feature?</PollQuestion>
  <VoteChoice>Yes</VoteChoice>
  <Timestamp>2024-05-22T15:30:00Z</Timestamp>
</PollParticipation>

12. Content Creation

Attributes:

user_id: Unique identifier for the user.
content_id: Unique identifier for the content.
content_type: Type of content (e.g., blog post, video).
content_url: URL to the content.
timestamp: When the content was created.

JSON Representation:
{
  "user_id": "unique-user-id",
  "content_id": "unique-content-id",
  "content_type": "blog post",
  "content_url": "https://example.com/blog-post",
  "timestamp": "2024-05-22T15:30:00Z"
}

XML Representation:
<ContentCreation>
  <UserID>unique-user-id</UserID>
  <ContentID>unique-content-id</ContentID>
  <ContentType>blog post</ContentType>
  <ContentURL>https://example.com/blog-post</ContentURL>
  <Timestamp>2024-05-22T15:30:00Z</Timestamp>
</ContentCreation>

13. Team Collaborations

Attributes:

user_id: Unique identifier for the user.
team_id: Unique identifier for the team.
project_id: Unique identifier for the project.
role: User's role in the team.
timestamp: When the collaboration occurred.

JSON Representation:
{
  "user_id": "unique-user-id",
  "team_id": "unique-team-id",
  "project_id": "unique-project-id",
  "role": "Team Lead",
  "timestamp": "2024-05-22T15:30:00Z"
}

XML Representation:
<TeamCollaboration>
  <UserID>unique-user-id</UserID>
  <TeamID>unique-team-id</TeamID>
  <ProjectID>unique-project-id</ProjectID>
  <Role>Team Lead</Role>
  <Timestamp>2024-05-22T15:30:00Z</Timestamp>
</TeamCollaboration>

14. Donations and Sponsorships

Attributes:

user_id: Unique identifier for the user.
donation_id: Unique identifier for the donation.
amount: Amount donated.
recipient: Recipient of the donation.
timestamp: When the donation was made.

JSON Representation:
{
  "user_id": "unique-user-id",
  "donation_id": "unique-donation-id",
  "amount": 100,
  "recipient": "Charity Organization",
  "timestamp": "2024-05-22T15:30:00Z"
}

XML Representation:
<DonationSponsorship>
  <UserID>unique-user-id</UserID>
  <DonationID>unique-donation-id</DonationID>
  <Amount>100</Amount>
  <Recipient>Charity Organization</Recipient>
  <Timestamp>2024-05-22T15:30:00Z</Timestamp>
</DonationSponsorship>

15. Reputation Scores

Attributes:

user_id: Unique identifier for the user.
score_id: Unique identifier for the score.
score_value: Value of the reputation score.
score_type: Type of reputation score (e.g., trust, reliability).
timestamp: When the score was assigned.

JSON Representation:
{
  "user_id": "unique-user-id",
  "score_id": "unique-score-id",
  "score_value": 85,
  "score_type": "trust",
  "timestamp": "2024-05-22T15:30:00Z"
}

XML Representation:
<ReputationScore>
  <UserID>unique-user-id</UserID>
  <ScoreID>unique-score-id</ScoreID>
  <ScoreValue>85</ScoreValue>
  <ScoreType>trust</ScoreType>
  <Timestamp>2024-05-22T15:30:00Z</Timestamp>
</ReputationScore>

Implementation Guidelines

Define Unique Identifiers: Ensure that all identifiers (user_id, event_id, etc.) are unique and securely generated.
Data Storage: Store reputation data securely in a database with appropriate encryption and access controls.
Blockchain Integration: Use a reliable blockchain service for minting and managing NFTs associated with reputation transactions.
API Development: Develop RESTful APIs to handle reputation data in the specified JSON and XML formats.
Frontend Integration: Update user interfaces to display reputation data and linked NFTs, ensuring a user-friendly experience.
Security and Privacy: Implement robust security measures to protect user data and ensure compliance with relevant privacy regulations.

By following this standardized format and implementation guidelines, any application, protocol, team, or individual can effectively build and manage onchain reputation systems.

Summary Outline of 15 Common Categories to Build Reputation Onchain
1. Community Engagement

Description: Measures participation in community activities such as forum posts, comments, and social media interactions.
Attributes:

user_id
engagement_type (post, comment, share)
engagement_timestamp
engagement_value (likes, replies)

2. Transaction History

Description: Tracks the history and quality of transactions in marketplaces or financial services.
Attributes:

user_id
transaction_id
transaction_type (purchase, sale)
transaction_timestamp
transaction_value

3. Content Creation

Description: Recognizes the creation of valuable content like blog posts, videos, and tutorials.
Attributes:

user_id
content_id
content_type (blog, video)
content_timestamp
content_value (views, likes)

4. Skill Verification

Description: Validates user skills through certifications or endorsements.
Attributes:

user_id
skill_id
skill_name
verification_timestamp
verifier_id

5. Project Contributions

Description: Measures contributions to open-source projects or collaborative efforts.
Attributes:

user_id
project_id
contribution_type (code, documentation)
contribution_timestamp
contribution_value (commits, pull requests)

6. Review and Feedback

Description: Tracks the feedback given and received for products, services, or content.
Attributes:

user_id
review_id
review_type (product, service)
review_timestamp
review_rating

7. Attendance and Participation

Description: Logs participation in events, webinars, or conferences.
Attributes:

user_id
event_id
event_type (webinar, conference)
event_timestamp
participation_value

8. Mentorship and Coaching

Description: Records activities related to mentoring or coaching others.
Attributes:

user_id
mentee_id
mentorship_type (session, advice)
mentorship_timestamp
mentorship_value (hours, impact)

9. Achievements and Awards

Description: Captures achievements, awards, or recognitions received.
Attributes:

user_id
achievement_id
achievement_type (award, milestone)
achievement_timestamp
achievement_value

10. Learning and Development

Description: Tracks completion of courses, certifications, or training programs.
Attributes:

user_id
course_id
course_name
completion_timestamp
course_score

11. Bug Reporting and Issue Resolution

Description: Logs the reporting and resolution of bugs or issues.
Attributes:

user_id
issue_id
issue_type (bug, feature request)
issue_timestamp
issue_status

12. Reputation and Endorsements

Description: Measures endorsements or reputation points received from peers.
Attributes:

user_id
endorsement_id
endorsement_type (skill, character)
endorsement_timestamp
endorser_id

13. Compliance and Certifications

Description: Records compliance with standards and attainment of certifications.
Attributes:

user_id
certification_id
certification_name
certification_timestamp
certifying_body

14. Social Impact and Volunteering

Description: Tracks involvement in social impact activities or volunteering.
Attributes:

user_id
activity_id
activity_type (volunteering, donation)
activity_timestamp
activity_value (hours, impact)

15. Peer Reviews and Ratings

Description: Collects peer reviews and ratings for collaborative work.
Attributes:

user_id
peer_review_id
review_type (project, task)
review_timestamp
review_rating

Standard Format
XML Representation
<ReputationCategory>
    <CategoryName>Community Engagement</CategoryName>
    <Attributes>
        <Attribute>
            <Name>user_id</Name>
            <Type>string</Type>
            <Description>A unique identifier for the user.</Description>
        </Attribute>
        <Attribute>
            <Name>engagement_type</Name>
            <Type>string</Type>
            <Description>Type of engagement (post, comment, share).</Description>
        </Attribute>
        <Attribute>
            <Name>engagement_timestamp</Name>
            <Type>datetime</Type>
            <Description>Timestamp of the engagement.</Description>
        </Attribute>
        <Attribute>
            <Name>engagement_value</Name>
            <Type>integer</Type>
            <Description>Value of the engagement (likes, replies).</Description>
        </Attribute>
    </Attributes>
</ReputationCategory>

JSON Representation
{
  "category_name": "Community Engagement",
  "attributes": [
    {
      "name": "user_id",
      "type": "string",
      "description": "A unique identifier for the user."
    },
    {
      "name": "engagement_type",
      "type": "string",
      "description": "Type of engagement (post, comment, share)."
    },
    {
      "name": "engagement_timestamp",
      "type": "datetime",
      "description": "Timestamp of the engagement."
    },
    {
      "name": "engagement_value",
      "type": "integer",
      "description": "Value of the engagement (likes, replies)."
    }
  ]
}

Guides to Use SDK API or Embedded Code
Using SDK API

Install the SDK:

For JavaScript/Node.js:npm install reputation-sdk

Initialize the SDK:

Example in JavaScript:const ReputationSDK = require('reputation-sdk');
const reputation = new ReputationSDK({ apiKey: 'your-api-key' });

Record a Reputation Event:

Example in JavaScript:reputation.recordEvent({
  category: 'Community Engagement',
  user_id: 'unique-user-id',
  engagement_type: 'comment',
  engagement_timestamp: new Date().toISOString(),
  engagement_value: 5
}).then(response => {
  console.log('Reputation event recorded:', response);
}).catch(error => {
  console.error('Error recording reputation event:', error);
});

Embedded Code Example

Define Reputation Event:

Example in Python:import requests
import datetime

def record_reputation_event(user_id, engagement_type, engagement_value):
    event = {
        "category": "Community Engagement",
        "user_id": user_id,
        "engagement_type": engagement_type,
        "engagement_timestamp": datetime.datetime.now().isoformat(),
        "engagement_value": engagement_value
    }
    response = requests.post('https://api.reputation-service.com/events', json=event)
    return response.json()

Invoke the Function:

Example in Python:result = record_reputation_event('unique-user-id', 'comment', 5)
print('Reputation event recorded:', result)

These templates and examples provide a standardized way to integrate onchain reputation tracking into any application or protocol. By following these guidelines, teams can ensure consistent and interoperable implementations.

Sure, here are examples of XML and JSON representations for each of the 15 categories:
1. Community Engagement
XML Representation
<CommunityEngagement>
    <user_id>unique-user-id</user_id>
    <engagement_type>comment</engagement_type>
    <engagement_timestamp>2024-05-25T10:00:00Z</engagement_timestamp>
    <engagement_value>5</engagement_value>
</CommunityEngagement>

JSON Representation
{
  "user_id": "unique-user-id",
  "engagement_type": "comment",
  "engagement_timestamp": "2024-05-25T10:00:00Z",
  "engagement_value": 5
}

2. Transaction History
XML Representation
<TransactionHistory>
    <user_id>unique-user-id</user_id>
    <transaction_id>123456789</transaction_id>
    <transaction_type>purchase</transaction_type>
    <transaction_timestamp>2024-05-25T12:30:00Z</transaction_timestamp>
    <transaction_value>100</transaction_value>
</TransactionHistory>

JSON Representation
{
  "user_id": "unique-user-id",
  "transaction_id": "123456789",
  "transaction_type": "purchase",
  "transaction_timestamp": "2024-05-25T12:30:00Z",
  "transaction_value": 100
}

3. Content Creation
XML Representation
<ContentCreation>
    <user_id>unique-user-id</user_id>
    <content_id>987654321</content_id>
    <content_type>blog</content_type>
    <content_timestamp>2024-05-25T15:00:00Z</content_timestamp>
    <content_value>50</content_value>
</ContentCreation>

JSON Representation
{
  "user_id": "unique-user-id",
  "content_id": "987654321",
  "content_type": "blog",
  "content_timestamp": "2024-05-25T15:00:00Z",
  "content_value": 50
}

4. Skill Verification
XML Representation
<SkillVerification>
    <user_id>unique-user-id</user_id>
    <skill_id>skill-123</skill_id>
    <skill_name>Programming</skill_name>
    <verification_timestamp>2024-05-25T18:00:00Z</verification_timestamp>
    <verifier_id>verified-by-user-id</verifier_id>
</SkillVerification>

JSON Representation
{
  "user_id": "unique-user-id",
  "skill_id": "skill-123",
  "skill_name": "Programming",
  "verification_timestamp": "2024-05-25T18:00:00Z",
  "verifier_id": "verified-by-user-id"
}

5. Project Contributions
XML Representation
<ProjectContributions>
    <user_id>unique-user-id</user_id>
    <project_id>project-xyz</project_id>
    <contribution_type>code</contribution_type>
    <contribution_timestamp>2024-05-25T20:00:00Z</contribution_timestamp>
    <contribution_value>10</contribution_value>
</ProjectContributions>

JSON Representation
{
  "user_id": "unique-user-id",
  "project_id": "project-xyz",
  "contribution_type": "code",
  "contribution_timestamp": "2024-05-25T20:00:00Z",
  "contribution_value": 10
}

6. Review and Feedback
XML Representation
<ReviewFeedback>
    <user_id>unique-user-id</user_id>
    <review_id>review-987</review_id>
    <review_type>product</review_type>
    <review_timestamp>2024-05-26T10:00:00Z</review_timestamp>
    <review_rating>4.5</review_rating>
</ReviewFeedback>

JSON Representation
{
  "user_id": "unique-user-id",
  "review_id": "review-987",
  "review_type": "product",
  "review_timestamp": "2024-05-26T10:00:00Z",
  "review_rating": 4.5
}

7. Attendance and Participation
XML Representation
<AttendanceParticipation>
    <user_id>unique-user-id</user_id>
    <event_id>event-456</event_id>
    <event_type>webinar</event_type>
    <event_timestamp>2024-05-26T12:00:00Z</event_timestamp>
    <participation_value>1</participation_value>
</AttendanceParticipation>

JSON Representation
{
  "user_id": "unique-user-id",
  "event_id": "event-456",
  "event_type": "webinar",
  "event_timestamp": "2024-05-26T12:00:00Z",
  "participation_value": 1
}

8. Mentorship and Coaching
XML Representation
<MentorshipCoaching>
    <user_id>mentor-user-id</user_id>
    <mentee_id>mentee-user-id</mentee_id>
    <mentorship_type>session</mentorship_type>
    <mentorship_timestamp>2024-05-26T14:00:00Z</mentorship_timestamp>
    <mentorship_value>1</mentorship_value>
</MentorshipCoaching>

JSON Representation
{
  "user_id": "mentor-user-id",
  "mentee_id": "mentee-user-id",
  "mentorship_type": "session",
  "mentorship_timestamp": "2024-05-26T14:00:00Z",
  "mentorship_value": 1
}

9. Achievements and Awards
XML Representation
<AchievementsAwards>
    <user_id>unique-user-id</user_id>
    <achievement_id>achievement-789</achievement_id>
    <achievement_type>award</achievement_type>
    <achievement_timestamp>2024-05-27T09:00:00Z</achievement_timestamp>
    <achievement_value>Gold</achievement_value>
</AchievementsAwards>

JSON Representation
{
  "user_id": "unique-user-id",
  "achievement_id": "achievement-789",
  "achievement_type": "award",
  "achievement_timestamp": "2024-05-27T09:00:00Z",
  "achievement_value": "Gold"
}

10. Learning and Development
XML Representation
<LearningDevelopment>
    <user_id>unique-user-id</user_id>
    <course_id>course-456</course_id>
    <course_name>Python Programming</course_name>

To design an algorithm for the Reputation Trust (RT) score, which ranges from 1 to 100 with five levels for the impact score, we need to consider various factors that contribute to trustworthiness in different contexts. Here's an outline of the algorithm:
Reputation Trust (RT) Score Algorithm:
1. Factors that Increase the RT Score:

Consistency: Regular and consistent contributions over time indicate reliability and commitment.
Quality: High-quality contributions, such as accurate information, helpful responses, and valuable content, boost trust.
Positive Feedback: Receiving endorsements, positive reviews, and recognition from peers and users enhances trust.
Transparency: Transparent actions, such as disclosing conflicts of interest and providing clear explanations, improve trust.
Engagement: Active participation, interactions with the community, and responsiveness to feedback contribute positively.

2. Factors that Decrease the RT Score:

Inconsistency: Irregular or sporadic contributions may lower trust, as it raises questions about reliability.
Low Quality: Poor-quality contributions, such as inaccurate information, spam, or harmful content, decrease trust.
Negative Feedback: Negative reviews, complaints, or reports of misconduct from users reduce trust.
Lack of Transparency: Concealing information, deceptive behavior, or failure to address concerns decreases trust.
Inactivity: Extended periods of inactivity or lack of engagement may lead to a decline in trust.

3. Weighting of Factors:

More Important Factors: Quality, consistency, and positive feedback are weighted more heavily as they directly reflect the user's value and reliability.
Less Important Factors: Transparency and engagement are also significant but may carry slightly less weight compared to quality and consistency.

4. Utilization in DeFi Applications:

Risk Assessment: DeFi protocols can use the RT score to assess the risk associated with users participating in lending, borrowing, or other financial activities.
Governance: RT score can influence voting power in decentralized governance systems, with higher scores indicating more influence.

5. Utilization in DAOs:

Membership: DAOs can use the RT score as a criterion for membership eligibility, with higher scores granting more privileges and decision-making authority.
Contributions: RT score can influence the allocation of rewards or tokens within the DAO, with higher scores receiving greater rewards for contributions.

6. Utilization in Lending Protocols:

Creditworthiness: Lending protocols can use the RT score as a measure of creditworthiness, with higher scores indicating a lower risk of default.
Loan Terms: RT score can influence loan terms such as interest rates and collateral requirements, with higher scores receiving more favorable terms.

Calculation of RT Score:
The RT score can be calculated using a weighted average of the contributing factors, with adjustments based on the specific requirements and preferences of the application or protocol. Regular updates and recalibration of the algorithm may be necessary to adapt to changing user behaviors and community standards.

A proposed algorithm for the Reputation Trust (RT) Score, along with its applications in DeFi, DAOs, and lending protocols:
Reputation Trust Score Algorithm:
1. Calculation:

Start with a base score of 50 for all users.
Factors such as community engagement, transaction history, content creation, and endorsements contribute to the score.

2. Factors Weighting:

Community Engagement: 30% weight
Transaction History: 20% weight
Content Creation: 25% weight
Endorsements: 25% weight

3. Going Up:

Regular and positive community engagement.
High-quality content creation.
Positive endorsements and reviews from trusted entities.
Consistent and trustworthy transaction history.

4. Going Down:

Negative community interactions or lack of engagement.
Low-quality or spammy content creation.
Negative reviews or endorsements from trusted entities.
Suspicious or fraudulent transaction history.

5. Score Levels:

Level 1: 1-20 (Low Impact/Trust)
Level 2: 21-40 (Medium-Low Impact/Trust)
Level 3: 41-60 (Medium Impact/Trust)
Level 4: 61-80 (Medium-High Impact/Trust)
Level 5: 81-100 (High Impact/Trust)

6. Applications:
DeFi Applications:

Liquidity Provision Rewards: Users with higher RT scores could receive additional rewards for providing liquidity to DeFi protocols.
Governance Participation: Higher RT scores could grant users more voting power in governance decisions.

DAOs:

Membership: DAOs could require a minimum RT score for membership, ensuring active and trustworthy participants.
Decision-making: RT scores could influence the weight of votes in DAO proposals, giving more weight to members with higher scores.

Lending Protocols:

Loan Approval: Lending protocols could use RT scores as one of the factors in determining loan approval, with higher scores leading to better loan terms.
Risk Assessment: Lower RT scores could indicate higher risk for default, leading to stricter loan conditions or higher interest rates.

Important Factors:

Community Engagement: Essential for building trust and contributing positively to the ecosystem.
Endorsements: Reviews and endorsements from trusted entities can significantly impact the RT score.
Transaction History: Transparent and trustworthy transaction history is crucial for lending protocols and DeFi applications.
Content Creation: High-quality and valuable content creation can enhance reputation and trust within the community.

Less Important Factors:

Minor Community Interactions: While community engagement is important, minor interactions such as reactions to posts may have less weight compared to active participation.
Inactive Periods: Temporary periods of inactivity should have a lesser impact compared to consistent negative behavior or low-quality contributions.

By implementing the Reputation Trust Score algorithm, DeFi applications, DAOs, and lending protocols can foster a more trustworthy and transparent ecosystem, rewarding users for positive contributions and mitigating risks associated with low-reputation users.

The Trust Matrix concept can be applied to the Reputation Trust Score algorithm by considering the network of relationships and reputations among users. Here's how it can be used:

Building Reputation Networks: Each user's reputation is built upon interactions and relationships with others, forming a network of trust within a community or ecosystem.

Cumulative Interactions: Similar to the concept of deposits and withdrawals in a bank account, every interaction contributes to building or depleting trust in the network. Positive interactions such as collaboration, support, and reliability build trust, while negative interactions erode trust.

First Impressions and Long-term Relationships: First impressions set the initial stage for a relationship, but long-term trust is established through consistent positive interactions over time. Users with a history of reliable behavior earn higher trust scores within the network.

Vouching and Due Diligence: Users vouch for each other based on their experiences and interactions, influencing others' perceptions and decisions. Due diligence, often conducted through word-of-mouth or reputation assessments, allows individuals to gauge the trustworthiness of others before engaging with them.

Avoidance of Negative Behavior: Being labeled as a "dickhead" or displaying negative behavior can significantly impact one's reputation within the Trust Matrix. Negative behavior, such as dishonesty, unreliability, or toxicity, leads to a loss of trust and avoidance by others in the network.

Benefits of Positive Standing: Users with a good standing in the Trust Matrix benefit from stronger relationships, increased collaboration, and smoother interactions within the network. Teams or communities with high levels of trust experience greater efficiency, reduced office politics, and enhanced productivity.

No Dickheads Policy: Companies or communities may adopt a "no dickheads" policy, emphasizing the importance of positive behavior and trustworthiness in fostering a healthy and productive environment. Individuals who violate this policy risk damaging their reputation and alienating themselves from the network.

In the context of the Reputation Trust Score algorithm, the Trust Matrix serves as the foundation for assessing and evaluating users' trustworthiness based on their interactions, relationships, and reputation within the network. By incorporating these principles, the algorithm can accurately reflect users' standing and influence in the community or ecosystem.

Implementing a Standard Reputation Framework and NFT Minting for Reputation Transactions involves several risks.
Here are some key risks and potential mitigations for each:
1. Security Risks
Risk:
Blockchain transactions, including the minting of NFTs, are susceptible to various security threats such as hacking, phishing, and smart contract vulnerabilities. Unauthorized access to user data or tampering with reputation events could undermine trust in the system.
Mitigation:

Smart Contract Audits: Regularly audit smart contracts to identify and fix vulnerabilities.
Multi-Factor Authentication (MFA): Implement MFA for access to critical systems and user accounts.
Encryption: Use strong encryption methods for data storage and transmission.
Monitoring and Alerts: Implement continuous monitoring of blockchain interactions and set up alerts for suspicious activities.

2. Privacy Concerns
Risk:
Storing user data and reputation events on a public blockchain can expose sensitive information, leading to privacy violations and non-compliance with data protection regulations like GDPR.
Mitigation:

Anonymization: Anonymize user data before storing it on the blockchain to protect user identities.
User Consent: Obtain explicit consent from users before collecting and storing their data.
Data Minimization: Collect only the necessary data required for the reputation framework.
Off-Chain Storage: Store sensitive data off-chain and use hashes or pointers on the blockchain to reference this data.

3. Scalability Issues
Risk:
As the number of users and reputation transactions grows, the system might face scalability challenges, leading to slow transaction times and high costs on the blockchain.
Mitigation:

Layer 2 Solutions: Implement Layer 2 scaling solutions like sidechains or rollups to handle transactions off the main blockchain, reducing load and costs.
Efficient Data Structures: Optimize data structures and storage methods to minimize the size and complexity of transactions.
Batch Processing: Use batch processing for transactions to reduce the frequency and cost of blockchain interactions.

4. Regulatory Compliance
Risk:
Blockchain technology and NFTs operate in a rapidly evolving regulatory environment. Non-compliance with existing and future regulations could lead to legal challenges and penalties.
Mitigation:

Legal Consultation: Engage with legal experts to ensure compliance with current regulations and stay updated on regulatory changes.
Compliance Framework: Develop a compliance framework that includes regular reviews and updates to policies and procedures.
Transparent Reporting: Maintain transparent records of transactions and audits to demonstrate compliance to regulatory bodies.

5. User Adoption and Education
Risk:
Users may be unfamiliar with blockchain technology and NFTs, leading to low adoption rates and potential misuse of the system.
Mitigation:

User Education Programs: Develop comprehensive educational materials and tutorials to help users understand and utilize the reputation framework and NFTs.
User-Friendly Interfaces: Design intuitive and user-friendly interfaces to simplify interactions with the system.
Incentives: Provide incentives such as rewards or bonuses for early adopters to encourage participation and engagement.

By addressing these risks through targeted mitigation strategies, the proposed Standard Reputation Framework and NFT Minting process can be implemented more securely, efficiently, and compliantly, enhancing its chances of success and user acceptance.

The EigenTrust Algorithm, devised by Sepandar D. Kamvar, Mario T. Schlosser, and Hector Garcia-Molina, aims to mitigate the spread of inauthentic files in peer-to-peer (P2P) networks by establishing a reputation management system. The algorithm assigns global trust values to peers based on their history of file uploads, facilitating the identification and isolation of malicious peers.
Implementation of the EigenTrust Algorithm effectively Fully Distributed.
aa. Fully Distributed Computation Approach
For a decentralized P2P network, the EigenTrust Algorithm can be implemented in a fully distributed manner where each peer participates in the computation of global trust values:

Local Trust Value Storage: Each peer stores the local trust values ( s_{ij} ) for peers ( j ) it has interacted with.
Distributed Aggregation: Each peer ( i ) queries its acquaintances (peers it has downloaded from) to obtain their current trust values. Using these values, peer ( i ) updates its own global trust value ( t_i ) by iterating ( t_i = (1 - a) \sum_j c_{ij} t_j + a p_i ), where ( a ) is a damping factor and ( p ) is the vector of pre-trusted peers.
Iterative Update and Convergence: This process is repeated iteratively, with peers continuously updating and exchanging their trust values until convergence is achieved. The result is a set of global trust values that reflect the collective trustworthiness of each peer in the network.

This method maintains the decentralized nature of P2P networks, with minimal messaging overhead and computational complexity, as each peer only needs to interact with its direct connections.

Implementation Guide
For Developers
Open Source Access to GitHub, Source Code, and Documentation

GitHub Repository

Clone the repository:git clone https://github.com/yourrepo/reputation-nft-framework.git

Explore the project structure:reputation-nft-framework/
├── src/
├── docs/
├── examples/
└── tests/

Source Code

The main components of the framework are located in the src/ directory.
Review the core modules:

reputation_system.py: Core functionality for managing reputation.
nft_minter.py: Handles the minting of NFTs for reputation events.
api/: Contains the API endpoints for integrating the system.

Documentation

Detailed documentation is available in the docs/ directory.
Important documents:

setup_guide.md: Steps to set up the development environment.
api_reference.md: Detailed API documentation.
architecture.md: Explanation of the system architecture.

SDK

Install the SDK via pip:pip install reputation-nft-sdk

Use the SDK in your project:from reputation_nft_sdk import ReputationSystem

reputation_system = ReputationSystem(api_key='your_api_key')
response = reputation_system.record_event(user_id='123', event_type='upvote')

API

Base URL: https://api.yourdomain.com/v1
Example endpoint:POST /reputation-events
Content-Type: application/json

{
  "user_id": "123",
  "event_type": "upvote",
  "event_description": "User upvoted a post",
  "event_value": 10
}

For Technical but Non-Developer Users
Documentation, Guides, and Easy-to-Understand API

Documentation

Access the documentation online at https://docs.yourdomain.com
Key sections to review:

Introduction: Overview of the framework and its benefits.
Getting Started: Step-by-step guide to start using the system.

Guides

Follow the integration guide to embed the system into your platform:

integration_guide.md: Detailed instructions for setting up and integrating the reputation system.

Easy-to-Understand API

Simplified API endpoint examples:

Record a reputation event:POST /reputation-events
Content-Type: application/json

{
  "user_id": "123",
  "event_type": "upvote",
  "event_description": "User upvoted a post",
  "event_value": 10
}

For Non-Technical Non-Developer Users
Access to Embed Frontend and Iframe

Embed Frontend

Use the provided HTML snippet to embed the reputation widget on your website:<div id="reputation-widget"></div>
<script src="https://cdn.yourdomain.com/reputation-widget.js"></script>
<script>
  ReputationWidget.init({
    userId: '123',
    apiKey: 'your_api_key'
  });
</script>

Iframe

Alternatively, you can use an iframe to integrate the reputation system:<iframe src="https://yourdomain.com/reputation-widget?user_id=123" width="600" height="400"></iframe>

kolmogorov complexity

(define-data-var user-id (string-ascii 32) "")
(define-data-var username (string-ascii 32) "")
(define-data-var profile-url (string-ascii 256) "")
(define-data-var event-id (string-ascii 32) "")
(define-data-var event-type (string-ascii 32) "")
(define-data-var event-description (string-ascii 256) "")
(define-data-var event-timestamp (uint) 0)
(define-data-var event-value (int) 0)
(define-data-var nft-id (string-ascii 32) "")
(define-data-var nft-url (string-ascii 256) "")
(define-data-var nft-metadata (string-ascii 256) "")
(define-public (create-reputation-transaction
(user-id (string-ascii 32))
(username (string-ascii 32))
(profile-url (string-ascii 256))
(event-id (string-ascii 32))
(event-type (string-ascii 32))
(event-description (string-ascii 256))
(event-timestamp (uint))
(event-value (int))
(nft-id (string-ascii 32))
(nft-url (string-ascii 256))
(nft-metadata (string-ascii 256))
)
(begin
(var-set user-id user-id)
(var-set username username)
(var-set profile-url profile-url)
(var-set event-id event-id)
(var-set event-type event-type)
(var-set event-description event-description)
(var-set event-timestamp event-timestamp)
(var-set event-value event-value)
(var-set nft-id nft-id)
(var-set nft-url nft-url)
(var-set nft-metadata nft-metadata)
(ok (map-get
{
"user": {
"user_id": user-id,
"username": username,
"profile_url": profile-url
},
"event": {
"event_id": event-id,
"event_type": event-type,
"event_description": event-description,
"event_timestamp": event-timestamp,
"event_value": event-value
},
"nft": {
"nft_id": nft-id,
"nft_url": nft-url,
"nft_metadata": nft-metadata
}
}
))
)
)

;; Define variables for user information
(define-data-var user-id (string-ascii 32) "")
(define-data-var username (string-ascii 32) "")
(define-data-var profile-url (string-ascii 256) "")
;; Define variables for reputation event information
(define-data-var event-id (string-ascii 32) "")
(define-data-var event-type (string-ascii 32) "")
(define-data-var event-description (string-ascii 256) "")
(define-data-var event-timestamp (uint) 0)
(define-data-var event-value (int) 0)
;; Define variables for NFT information
(define-data-var nft-id (string-ascii 32) "")
(define-data-var nft-url (string-ascii 256) "")
(define-data-var nft-metadata (string-ascii 256) "")
;; Function to create a reputation transaction
(define-public (create-reputation-transaction
(user-id (string-ascii 32))
(username (string-ascii 32))
(profile-url (string-ascii 256))
(event-id (string-ascii 32))
(event-type (string-ascii 32))
(event-description (string-ascii 256))
(event-timestamp (uint))
(event-value (int))
(nft-id (string-ascii 32))
(nft-url (string-ascii 256))
(nft-metadata (string-ascii 256))
)
(begin
;; Set the variables with provided values
(var-set user-id user-id)
(var-set username username)
(var-set profile-url profile-url)
(var-set event-id event-id)
(var-set event-type event-type)
(var-set event-description event-description)
(var-set event-timestamp event-timestamp)
(var-set event-value event-value)
(var-set nft-id nft-id)
(var-set nft-url nft-url)
(var-set nft-metadata nft-metadata)
;; Return a map with the transaction details
(ok (map-get
{
"user": {
"user_id": user-id,
"username": username,
"profile_url": profile-url
},
"event": {
"event_id": event-id,
"event_type": event-type,
"event_description": event-description,
"event_timestamp": event-timestamp,
"event_value": event-value
},
"nft": {
"nft_id": nft-id,
"nft_url": nft-url,
"nft_metadata": nft-metadata
}
}
))
)
)


Readme FAQ

Closes #24

After re-reading it on the projects main page, I wanted to add one minor correction: Database DO support nested/embedded structures such as postgres composite type, so it's wrong to state that they don't or only support flat structures.
e.g. https://www.postgresql.org/docs/current/sql-createtype.html

That's a good point.. I will re-word.
For Postgres, it appears that the JDBC driver does not support user-defined types https://github.com/pgjdbc/pgjdbc/issues/641
However, I WOULD support this feature, user-defined type support, for databases that support them, IF the official JDBC driver also gains support.
As it stands, there is a work-around one could use for UDTs in Postgres + Magnum. For the embedded class, you can define a custom DBCodec that grabs the column as a Pgobject , then does some custom deserialization (have not tested):
  given EmbeddedAddressCodec: DbCodec[Address] with
    def queryRepr: String = "?"
    val cols: IArray[Int] = IArray(Types.JAVA_OBJECT)
    def readSingle(resultSet: ResultSet, pos: Int): Address =
      val obj = resultSet.getObject(pos, classOf[PGobject])
      customDeser(obj.getValue)
    def writeSingle(entity: Address, ps: PreparedStatement, pos: Int): Unit =
      val res = customSer(entity)
      ps.setObject(pos, res)

You could then even make it generic.

You could then even make it generic.

Maybe by defining
trait UdtDbCodec[A] extends DbCodec[A]

Thanks for the hint. I will fiddle a little with your library. Maybe I can extend the functionality to my requirements. After all I should always be able to supply a custom DbCodec right?


Ctrl+Shift+F triggers search

I expected search to only trigger for Ctrl+F.
The page I was previewing has its own search implementation using the shortcut Ctrl+Shift+F which gets overridden by the current behavior.

hi @brunnerh actually ctrl+shift+F is already defined in vs code for "search in files"
Ctrl+F will still work for the current file you are at.
Ctrl+shift+F will search between all the files present
I hope this would resolve your issue.

The preview runs in an iframe, so keyboard shortcuts of VS code are not triggered anyway.
The problem is that the preview accepts more than just Ctrl+F,
Here is the code from media/main.js:
// listen for CTRL+F for opening the find menu
document.addEventListener('keydown', (e) => {
	ctrlDown = e.ctrlKey || e.metaKey;
	if ((e.key == 'F' || e.key == 'f') && ctrlDown) {
		showFind();
	}
});

Because this does not check for the state of e.shiftKey, it triggers in both cases.


SAMZA-1459: Upgrade to gradle 4.2

https://issues.apache.org/jira/browse/SAMZA-1459

@isolis can you please push another dummy commit to verify that this builds on CI machines.

@isolis Some of the compile tasks log messages like this:
> Task :samza-hdfs_2.11:compileScala
Pruning sources from previous analysis, due to incompatible CompileSetup.

Are these harmless?


added Washington State University Executive MBA

For more context, their curriculum covers Business Analytics, Data Collection, Analysis, Sampling, Database Management, modeling, and much more.  Here's an entry on their blog as to what Big Data means to EMBA students: http://embaonline.wsu.edu/resources/articles/why-big-data-means-major-opportunities-for-emba-students/

@jaytaylopub thank you


AppyxComponent copies elementUiModel on every frame when dragging

In AppyxComponent when we're dragging we're changing transformedBoundingBox that is backed by compose state. It invalidates the scope and makes Child composable recompose. When Child is recomposed it copies elementUiModel:
Child(
    elementUiModel = elementUiModel.copy(
        modifier = Modifier
            .offset { elementOffset }
            .pointerInput(appyxComponent) {
...

Done in #644


Alternative binary files?

Is it possible to get the binary files compiled for ARM (e.g., M-series Macs) or Windows? On Windows it is possible to use WSL to run the scripts... but I have not found a way to run them on M1.

i think the project was abandoned... we'll have to write it ourselves ;-;

I'm sorry for the silence. I haven't worked on this in a while. I don't know much about that type of stuff, but maybe I could help or at the very least point you in the right direction.

Happy to be pointed in the right direction! I would be glad to look at this on my own time.


Nocache

Closing as this won't resolve the issue with stale thumbnails, which are loaded directly from the library APIs. This PR would disable all browser caching of resources sent from Conductor.


Fixes flaky continuous transforms test

Signed-off-by: Robert Downs<EMAIL_ADDRESS>Issue #, if available:
N/A
Description of changes:
./gradlew ':integTest' --tests "org.opensearch.indexmanagement.transform.TransformRunnerIT.test continuous transform with wildcard indices" -Dtests.seed=7456CA873D2951BB -Dtests.security.manager=false -Dtests.locale=es-US -Dtests.timezone=Etc/Greenwich -Druntime.java=14
org.opensearch.indexmanagement.transform.TransformRunnerIT > test continuous transform with wildcard indices FAILED
    java.lang.NullPointerException
        at __randomizedtesting.SeedInfo.seed([7456CA873D2951BB:9E30041088F9C85C]:0)
        at java.base/java.time.Instant.compareTo(Instant.java:1255)
        at java.base/java.time.Instant.isAfter(Instant.java:1272)
        at org.opensearch.indexmanagement.transform.TransformRunnerIT.test continuous transform with wildcard indices(TransformRunnerIT.kt:771)

I saw this flaky failure for continuous transforms. Metadata with the transform afterkey set to null was updated before the final step where the ContinuousStats were updated, so a test scenario in which the continuous stats were missing was possible. This change makes the waitFor loop wait for the continuous stats to be present.
CheckList:

[X] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #276 (8c0d7ca) into main (97a8405) will decrease coverage by 0.22%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##               main     #276      +/-   ##
============================================
- Coverage     76.48%   76.26%   -0.23%
+ Complexity     2027     2021       -6
============================================
  Files           262      262
  Lines         11749    11749
  Branches       1869     1869
============================================
- Hits           8986     8960      -26
- Misses         1741     1767      +26
  Partials       1022     1022

Impacted Files
Coverage Δ

...statemanagement/model/destination/CustomWebhook.kt
65.21% <0.00%> (-27.54%)
:arrow_down:

...arch/indexmanagement/rollup/RollupSearchService.kt
55.55% <0.00%> (-3.71%)
:arrow_down:

...dexmanagement/transform/model/TransformMetadata.kt
88.11% <0.00%> (-2.98%)
:arrow_down:

...ndexstatemanagement/IndexStateManagementHistory.kt
77.30% <0.00%> (-2.84%)
:arrow_down:

...ent/indexstatemanagement/util/ManagedIndexUtils.kt
78.48% <0.00%> (-1.27%)
:arrow_down:

.../rollup/action/start/TransportStartRollupAction.kt
69.76% <0.00%> (+2.32%)
:arrow_up:

...nt/indexstatemanagement/model/destination/Slack.kt
54.54% <0.00%> (+13.63%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 97a8405...8c0d7ca. Read the comment docs.


Feature Request: Allow the user to have various accounts logged into the program

this is too much work for its usage... wont fix


Docs: Update command and sample code folder names to match descriptions

I'm looking at trying out the migration test code generation. I got initially caught up on some of the commands listed in the docs because the folder containing the generated schemas didn't match between the schema generation docs and the test code generation docs. I've just made updates so that the naming is consistent between the two sections.
Additional Changes:

vs code's auto-fix linting for .md files

Thanks :+1:


Post-processing of the image failed

New errors that started today and no other plugins update and also not the theme or any other parts.
When viewing media library via WP Admin I can see initial list, I cannot search and when I upload an image I get the below error:
Post-processing of the image failed likely because the server is busy or does not have enough resources. Uploading a smaller image may help. Suggested maximum size is 2500 pixels.
When editing a post and selecting featured image and then search the gallery then it hangs and this error keeps repeating:
POST /wp-admin/admin-ajax.php 503 jquery.js?ver=1.12.4-wp:
When I try upload in image this error and in console and below error message visible:
POST /wp-admin/async-upload.php 503 moxie.min.js?ver=1.3.5:1
Post-processing of the image failed likely because the server is busy or does not have enough resources. Uploading a smaller image may help. Suggested maximum size is 2500 pixels.
The only thing that resolve it is setting it to Disabled - Disable Stateless Media.
It is set to CDN and no changes made today so is GCS down or what is the problem? (bucket location Belgium but I could not find any services down)

related https://wordpress.org/support/topic/admin-ajax-php-errors-cannot-upload-or-search-media-library/

should be fixed by #553


LWRP's in cookbook could not notify parent resources

We need to add capability for LWRP to notify other resources after gunicorn installation or change in gunicorn configuration.
I would suggest to add "use_inline_resources" function as suggested in chef documentation
https://docs.getchef.com/lwrp_custom_provider.html

We're doing this in the latest release. Thanks for the suggestion


implement functions like "getParent" to return the requested control instead of itself

It is not possible for the _executeControlMethod function when calling a getter to retrieve another control (besides aggregations) to return any control other than self

https://github.com/js-soft/wdi5/pull/67

https://github.com/js-soft/wdi5/pull/67


Add protocol for RALPMH study

TODO-
Common

[x] Add pulse oximeter input questionnaire if not using integrated pulse ox.
[ ] Add Audio questionnaires (Not sure which ones? From CNS?)
[ ] ~Add breathing auscultation tests (Not sure which one? or if we need to create a new one?)~ Not needed anymore

@afolarin probably questions for you above.
Covid

[x] Add Covid symptoms questionniare

Also, I have given generous completion windows thinking late data is better than no data, but we can change those if you think otherwise.

Sounds good to me, but I am not sure about the text. Because I created it myself. Would be good to get the clinicians to review it. I might not be long after review and hence no need to move to info? So i would suggest we wait till we get a feedback from the clinical teams.
@mpgxvii , for matrix input let me know once it is released to alpha and I can test it out.
I will merge this now and we can make amends later according to feedback from clinical teams.


[Issue-607] Unused distribution plugin in gradle

Signed-off-by: thekingofcity<EMAIL_ADDRESS>Change log description
The build script contains an unused plugin named distribution. It was used before for release, but now tasks like distZip are not used anymore.
Purpose of the change
Fix #607.
What the code does

Remove distribution plugin.
Use new javadoc and sources grammar for publish.
Fix test jar to contain all test runtime dependencies.

How to verify it
./gradlew clean build publishToMavenLocal should output 4 jars. (  , original, javadoc, sources)

Some notes about why we did not follow the official documentation.
https://stackoverflow.com/a/67555024

In case we need to remove the original jar from the publish, simply put these lines in the maven.gradle.
components.java.withVariantsFromConfiguration(configurations.apiElements) {
    skip()
}
components.java.withVariantsFromConfiguration(configurations.runtimeElements) {
    skip()
}


VS Code permanently loses the connection to the GDScript language Server

Godot version:
v3.2.beta3.official
OS/device including version:
Mac OS 10.15.1
Issue description:
VS Code loses the connection to the language server multiple times per hour. After some time intellisense stops working which can be fixed by restarting Godot and manually reestablishing the connection. Curiously not all features stop working at once. Oftentimes the tooltips disappear first, then ctrl-space stops working and eventually the symbols overview is gone. Godot can't be just quit in these situations, instead one has to kill the process. This seems to me to indicate that the issue might not be caused by the VS Code extension but by Godot. I however reported this for the VS Code extension already, too.
An interesting side effect maybe worth knowing is the fact that the status in the bottom right corner of VS Code never stops saying "Initializing". That's the case even if everything seems to work as intended. Clicking the status opens the flyout where it in turn says "Connected to GDScript language Server" – but it still keeps saying that once things stopped working.
Steps to reproduce:
Sadly I haven't figured out a way to reliably reproduce this, yet. The only thing I noticed so far is the fact that one can shorten the time until the issue appears by triggering many actions like showing the tooltips using <cmd>-<k> <cmd>-<i> or <ctrl>-<shift>.
Minimal reproduction project:
–

CC @Geequlim

Sorry I can't reproduce this.

@okapii Can you get any console error message from the godot editor ?

An interesting side effect maybe worth knowing is the fact that the status in the bottom right corner of VS Code never stops saying "Initializing".
This is a bug of the new version of VSCode I have reported to the VSCode repo https://github.com/microsoft/vscode/issues/86508

@Geequlim Sorry for the late reply. It was a busy week. Just installed the new beta, which fixes the connection status-display for me.
Sadly there don't appear any console error messages in Godot's editor when the connection gradually gets lost.

Another Catalina user here, same problem but worse: i tried with multiple versions/betas of godot but i can't get the autocompletion on vscode to work for more than a minute or two.
No errors in the console i opened godot editor with.
If there's anything I can do to help debug this I'm here

So this problem is only happen on macOS ?

I have no way to confirm that it isn't happening on non MacOS systems but obviously the two exiting reports are for MacOS.

I am experiencing the same problem on Windows 10. In addition to that, when the connection between VSCode and Editor dies, the Godot Editor will crash on exit.
I have not found a reliable way to reproduce this, but I could try to look for error messages if I knew where :) The Editor Console doesn't seem to have anything useful, though :(

I'm also experiencing this issue on Godot 3.2 beta 5 & VS Code plugin beta 2. My OS is Arch Linux. I'm seeing similar symptoms to others in this thread: VS Code loses connection & autocomplete stops working, hovering over variable names or functions shows Loading... instead of the function docs or variable information, trying to exit Godot crashes it.
It seems to happen randomly while editing code, and always within 10 minutes of trying to do something. I think it may be related to the linting errors VS Code shows but that's based on the fact that linting information in the editor seems to change nearly right before the connection is lost.

@obsoke  What is the connection status showing with this error ?
Initializing or  Connecting or Disconnected ?

I can reproduce this with godot 3.2 beta5.
The client cannot connect to the Languge server before restart godot editor.
The editor cannot exit when closing the window.
Here is the output of the godot editor
ERROR: Another resource is loaded from path 'res://MeshInstance.gd' (possible cyclic resource inclusion).
   At: core/resource.cpp:78
SCRIPT ERROR: GDScript::reload: Parse Error: Expected identifier as member
          At: res://MeshInstance.gd:28
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:576
SCRIPT ERROR: GDScript::reload: Parse Error: Expected identifier as member
          At: res://MeshInstance.gd:28
ERROR: reload: Method/Function Failed, returning: ERR_PARSE_ERROR
   At: modules/gdscript/gdscript.cpp:576
ERROR: Another resource is loaded from path 'res://MeshInstance.gd' (possible cyclic resource inclusion).
   At: core/resource.cpp:78

Sseems the LSP thread is locked when parsing scripts
@vnen Do you have any idea about this?

Sorry, I was getting the same kind of errors as @Geequlim in the previous post, just didn't think they were relevant to this problem. Thought they were some of my own oopsies in gdscript :worried:

@Geequlim maybe the LSP is trying to load a file at the same time as editor, which is not allowed (that is, loading the same file at the same time). Though this should just fail parsing and keep going, wouldn't really lock the thread.
Maybe it's related to the mutex on reload: https://github.com/godotengine/godot/blob/abefd42e846a04d2256da9d27b6d5757d431cec0/modules/gdscript/gdscript.cpp#L544-L551

@TicklesTheBrain Could you try this reproduce after disable threading of lsp server? You can disable it the editor settings.

@TicklesTheBrain Could you try this reproduce after disable threading of lsp server? You can disable it in the editor settings.
I will try but I can't find the option you're taking about. The only "thread" related thing I see in the editor settings is the asset library > "Use threads". LSP has: port, enable smart resolve and show native symbols options.
How do I disable threading of lsp?

How do I disable threading of lsp?
Disable Use threads and restart the editor

@TicklesTheBrain  Oh sorry. You have to try disable the threading after #35015 is merged.
You may need to try that in next release.

@Geequlim Tried it out in Calinou's nightly builds https://hugo.pro/projects/godot-builds/ In fact, I didn't even have to disable it, threading is disabled by default on that build, it seems.
After some initial testing it seems to work fine without threading, haven't gotten LSP to crash yet. After enabling LSP again, I had the same problem within 30 seconds.
So it seems to be multi-threading related after all. I will test more and write back if I see the crash again.

@TicklesTheBrain Thank you very much !
Does it always reproduce after threading enabled ? If so it would be easier to get a minimal test project to find out the problem.
Thanks for your testing !

There isn't a minimal project that crashes just after being opened. Just after everything is loaded - it will work fine. The lsp connection crashes only when editing the script file.
The simplest I've gotten it to crash consistently is making a parse error when writing strings with an apostrophe, which gets understood like the end of the string. It doesn't always crash at the EXACT same moment, but you can see that by the time I'm writing that last if, there are no more suggestions, etc. - the connection has crashed. Have a look at this gif I made:

Here is that project (nothing in it really, single node with a script attached). And as I said it will not crash after loading, only when editing.
godot_lsp_crash.zip
Also that last crash didn't output any errors to the console.

@TicklesTheBrain Thank you again for your testing.


Error 500 by Memory Limit (many rows on DB)

Firstly, I loved this Meter app to monitoring my apps on simple way, congrats by the project :)
Back to focus, I installed today about 6 hours ago, but now I have issues.
When I enter on /meter, I got Error 500, checking Laravel logs I saw a problem related with memory limit, my previous limit was 128M and I updated to 256M but keeps the same problem:
[2020-05-29 03:08:06] production.ERROR: Allowed memory size of 268435456 bytes exhausted (tried to allocate 8192 bytes) {"userId":1,"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 1): Allowed memory size of 268435456 bytes exhausted (tried to allocate 8192 bytes) at /var/vhosts/mydomain.com/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:127)
I checked the Meter DB table I saw something like more than 500Mb with almost 140k rows.
I ran the command to prune but didn't solve:
php artisan meter:prune
0 entries pruned.
So, I checked the prune command and it only deletes more than 1 day ago.
Finally, I truncate the meter DB table and Meter App back to works.
My question: do you have an idea what could I do to avoid this?
maybe I could prune with on less interval but I will lose analysis data, right?
Thanks in advance

setup a daily backup to s3 or something else and clean table.
Suggested tool: https://github.com/4nkitd/backup


Remove unused package

Summary
This is nowhere used.
Relevant Technical Choices

To-do

User-facing changes

Testing Instructions

Fixes #

Oh it's a peer dependency 🤦  whoops


Dev Test: Mean: Share and Balance 1.0.0-dev.4

Dev Test
Mentions: @samreid @amanda-phet @kathy-phet
Simulation links

github repository for issues
phet top level directory
sim: all_phet.html

Test Matrix
Please include all (non-screen reader) feature testing in these records if applicable.

[x] Latest macOS, Safari (Time = 3.5hrs)
[x] Windows 10, Chrome (Time = 2)
[x] Windows 10, Firefox (Time = 1
[x] Latest iOS, Safari (Time = 1.5hrs)
[x] Windows 11, Chrome (Time = 1)

Light testing, or optionally skip if time crunch:

[ ] Latest macOS, Chrome (Time = )
[ ] Latest Chrome OS, Chrome (Time = )

Features included

PhET-iO
[x] Alternative Input ( tab navigation )
UI Sound
Sonification
Description
Voicing

Focus and Special Instructions
Focus of this test is to release a prototype of just this Intro Screen. This is the first time QA is taking a look, everything is fair game.
Issues to Verify

For QA...

General features

What to Test

Click every single button.
If there is sound, make sure it works.
Make sure you can't lose anything.
Play with the sim normally.
Try to break the sim.
Try to include browser version numbers
If there is a console available, check for errors and include them in the Problem Description.
Run through the string tests on at least one platform, especially if it is about to go to rc.
Check the Game Up harness on one platform.

PhET-iO features

What to Test

Make sure that public files do not have password protection. Use a private browser for this.
Make sure that private files do have password protection. Use a private browser for this.
Make sure standalone sim is working properly.
Make sure the wrapper index is working properly.
Make sure each wrapper is working properly.
Launch the simulation in Studio with ?stringTest=xss and make sure the sim doesn't navigate to youtube
For newer PhET-iO wrapper indices, save the "basic example of a functional wrapper" as a .html file and open it. Make
sure the simulation loads without crashing or throwing errors.

Accessibility features

What to Test

Specific instructions can be found above.

Make sure the accessibility (a11y) feature that is being tested doesn't negatively affect the sim in any way. Here is
a list of features that may be supported in this test:

Alternative Input
Interactive Description
Sound and Sonification
Pan and Zoom
Mobile Description
Voicing

Test all possible forms of input.

Test all mouse/trackpad inputs.
Test all touchscreen inputs.
Test all keyboard navigation inputs (if applicable).
Test all forms of input with a screen reader (if applicable).

Screen Readers
This sim may support screen readers. If you are unfamiliar with screen readers, please ask Katie to introduce you to
screen readers. If you simply need a refresher on screen readers, please consult the
QA Book, which should have all of the information
you need as well as a link to a screen reader tutorial made by Jesse. Otherwise, look over the a11y view before opening
the simulation. Once you've done that, open the simulation and make sure alerts and descriptions work as intended.

Platforms and Screen Readers to Be Tested

Windows 10 + Latest Chrome + Latest JAWS
Windows 10 + Latest Firefox + Latest NVDA
macOS + Safari + VoiceOver
iOS + Safari + VoiceOver (only if specified in testing issue)

Critical Screen Reader Information
We are tracking known screen reader bugs in
this Google Document. If you find a
screen reader bug, please check it against this list.

Keyboard Navigation
This sim supports keyboard navigation. Please make sure it works as intended on all platforms by itself and with a
screen reader.
Magnification
This sim supports magnification with pinch and drag gestures on touch screens, keyboard shortcuts, and mouse/wheel controls. Please test magnfication and make sure
it is working as intended and well with the use cases of the simulation. Due to the way screen readers handle user input, magnification is NOT expected to
work while using a screen reader so there is no need to test this case.

FAQs for QA Members

There are multiple tests in this issue... Which test should I do first?
Test in order! Test the first thing first, the second thing second, and so on.

How should I format my issue?

We typically assign the developer who opened the issue in the QA repository.

My question isn't in here... What should I do?
You should:

Consult the QA Book.
Google it.
Ask Katie.
Ask a developer.
Google it again.
Cry.

Thanks for giving me that space to upload the new fixed dev version. Ran through the sim, and all looks ready to go for QA!

Memory test:

Closing since dev.5 was released


flattened strings optimization

Benchmarks to compare flattened vs unflattened string optimizations.

Interesting, since: https://github.com/davidmarkclements/flatstr/issues/10. Not sure where the differences come from


Fix CentOS7 build issue

https://github.com/aiortc/aioquic/issues/47
Tested with CentOS7 and Ubuntu 18.04

I'm kind of torn between the approach in #45 and this PR.
If we go with this PR, do these flags work with compilers other than gcc and clang?


Let protobuf do the packing

This fixes the issue in (https://github.com/Armax/Pokemon-GO-node-api/issues/59) and (https://github.com/Armax/Pokemon-GO-node-api/issues/57).  The issue was not with the s2 library, but how the ByteBuffer was manually packing the bytes.  This lets the proto do it for us.

Confirmed working in USA for me.

Confirmed with a USA location too, great job.

The default example works now for all NA locations that didn't work before I brought in this patch. Great work!!!!

Nice work! Great patch, integrating into my branch right now.


add support for webp and maybe web image URLs

Issue from @egonw posted here
"Allowing people to drag-n-drop images from articles, like https://www.nature.com/articles/s41586-022-04828-5/figures/1, which often are .webp format nowadays:"

My problem right now is that the input fields don't accept multiple input types. When I define an input field as "type=file", then it won't accept a link. Maybe I could add the feature that the DECIMER logo becomes a text input field which triggers the processing of a given link, but I don't really think that that's an elegant solution


Show error messages when a transaction fails

The error is only shown if the transaction to the peer fails.
If any further broadcasts fail we show nothing.
I wonder if we should do something in this case?
Log somewhere (console :P)
@doublehelix24 If you want you can test it and give feedback :)
fixes: #518

@j-a-m-l
As I tried to explain:
When the first call was successful and only the broadcasts fail I don't show an error.
Because wouldn't it be confusing to show an error to the user if one broadcast fails, even though the transaction was still successful (at least to one peer)?

@luciorubeens @alexbarnsley @j-a-m-l


feat: add missing Type type guards

PR Checklist

[x] Addresses an existing open issue: fixes #3
[x] That issue was marked as status: accepting prs
[x] Steps in CONTRIBUTING.md were taken

Overview
Adds any missing type type guards from tsutils and adds new type type guards for other types.

Marking as blocked on #51

This one shouldn't be marked as blocked by #51
These functions aren't defined in wither TypeScript's public or private API.

I've removed those comment out function and the isInterfaceType function.
We can look into those in future.
PR should be unblocked now.


Support conversion to hyperlinks when pasting into the console

Currently when pasting into the console, matching patterns are not converted into hyperlinks

Tested this again, seems to work fine now


validate schema definitions and reuse schema

About
With the current implementation, krakend will throw a runtime error at request time and return a 500 if the JSON schema is invalid. I think it would be helpful if krakend would throw an error on startup instead (but ignoring the configuration seems more in line with how configuration errors are usually handled in krakend, so that's what I implemented here).
Also, the current implementation could be more efficient if the schema was only loaded and compiled once, rather than on every request.

thanks for the contribution!


Work around vacuous type parameters in LabelingIOService.load

The type parameters in LabelingIOService.load() are vacuous, which could lead to some nasty ClassCastExceptions.
See https://github.com/scifio/Labeling/pull/3#discussion_r844048444

So, I have been thinking about the type params.
I - the pixel value. can't really do much about that one, but at least it's an IntType
T - the label value. this is the hard one that I don't really have a feel what to do with. I could enforce Integer/IntType here because I don't see much value in anything else being used here.
S - I can potentially drop and replace with a Map<String,Object> (which is also the basic JSOn parse result) and remove the param altogether.
What are your thoughts on that?
Especially the dropping of S, but also the limiting of T would simplify the API (and codebase/complexity) by a lot.

My main concern is with the vacuous type parameters.
I don't think that S, the metadata type, is ever vacuous in public API. I don't think you have to make any changes to that. (There is the question of whether you need that type variable, but I don't think I know how to answer that.)
As far as the other two are concerned, I think that they must be rewritten to the broadest return allowed by ImgLabeling and/or LabelingData. LabelingData is going to hurt here because of those type parameters. Then the signature should look something like
    ImgLabeling<?, ? extends IntegerType<?>> loadNew(String file) throws IOException;

If you want nice type safety, you'd need to probably:

Provide Classes to identify the type variables as arguments to the method
Use TypeTokens

Update for today:
I'm playing around with a TypeToken as an argument to each method (or maybe a setter/adder for that)
The call would look like this then: load(String path, TypeToken<LabelingData<T,S>>)
Example:
load("Somepath", new TypeToken<LabelingData<Example,Example>>())
This looks promising so far.
The other option would be to allow the user to add (de-)serializers and call the Gson Parser API, which would result in code similar to the Bson Codecs from before.

load("Somepath", new TypeToken<LabelingData<Example,Example>>())

This is a step forward, for sure. Thanks @tomburke-rse
It is unfortunate, though, that it forces an explicit Gson dependency on anyone wanting to use this method.


Add lightgbm min version.

Description

The log_evaluation is rename after v3.3.0.
https://github.com/microsoft/LightGBM/releases
[python] rename print_evaluation() into log_evaluation()
See https://github.com/microsoft/LightGBM/pull/4604
Motivation and Context

Add minimium vesrion of lgbm.
How Has This Been Tested?
<! ---  Put an x in all the boxes that apply: --->

[ ] Pass the test by running: pytest qlib/tests/test_all_pipeline.py under upper directory of qlib.
[ ] If you are adding a new feature, test on your own test scripts.

Screenshots of Test Results (if appropriate):

Pipeline test:
Your own tests:

Types of changes

[x] Fix bugs
[ ] Add new feature
[ ] Update documentation

Thanks! It looks great!


Enable parallel jobs in pipeline

To reduce run time, adding ability to run parallel jobs for Pester Tests in Azure Pipelines.
Includes moving build agent configuration to PowerShell script to reduce repetition in ubuntu-latest.yml

/azp run

/azp run


Draft spec for theming, Mica

⚠ This spec is going into the specs/drafts/ folder, because it's CLEARLY not done yet.
I discussed this a bit with Dustin. We felt it would be valuable to have these thoughts committed as a durable artifact. Better to have our mica thoughts written down somewhere, with the context they belong in. That of course includes the bigger Theming spec, which never got finished.
I don't think we need to go through the fill spec review for this. Theming is clearly still a WIP. But committing this draft should give a better picture of what the vision is.
See also:

#3327
#10509

Is there any chance of getting improved platform support for some of these limitations of Mica? I didn't see that called out anywhere. You say that we should make it ergonomic for our users to choose things here, but the platform is definitely making this hard.

the platform is definitely making this hard

I'm under the impression that's by design. The way the platform seems to be designed prevents Mica from being used in other places where it's not really part of the design language. Like, perhaps adressing the fact that apps would just use acrylic wherever they wanted, multiple times in the same app, against the official guidance, which played into the performance concerns with acrylic. </baseless conjecture>
Part of marking this as a draft is to get this out into the world as our baseline expectations of Mica in the Terminal, to help communicate our goals with the rest of the platform team 😉

Note to reviewers: Probably read through at least "Highest priority theming properties", and then the sections titled "Theme Colors", "Titlebar complications" and "Light & dark mode theming". That's probably enough to get the gist here.

Hey this is a DRAFT spec, not even a final version, so I've got a mind to merge this with 2 instead of 3. When we undraft the spec, we can go for 3 again.
I'll give the bot a few hours for any NAKs.
@msftbot merge this in 8 hours


Remove gnosis safe

does not support WC anymore :-(
don't shoot the messenger - was surprised myself

@ligi the version I have on iOS still has it integrated.

Could you comment on this?
cc @rmeissner @tschubotz @DmitryBespalov @sche

@bmann must be a legacy version then - AFAIK (can't verify it for iOS - just did for android) it shoud also be gone there in the latest version

Hi, the legacy version does not support the mobile wallet connect  because we have  implemented  the very  first wallet connect  version, but then it changed later and we have deprecated the iOS app, so it didn't make sense to implement the released mobile WC version.
The WC will be implemented in  the new mobile app in the future (2-3 months). Meanwhile, the Gnosis Safe web supports  the wallet connect.

So, for now, I approve this change. We'll add it back when we have it in the app.

Well this seems to be a temporary situation... I don't think it's necessary to remove it from the website since Gnosis Safe was one of the first wallets to support and also a top code contributor to the project
Look forward to see the WalletConnect support being re-integrated in the near future

Hm - I talked to an engineer on the android team (mainly because I need PRs in https://github.com/WalletConnect/kotlin-walletconnect-lib/pulls merged) and it sounded differently. But I have no strong opinion on removing it - just thought it's a good idea not to confuse users showing a wallet has support when it is gone ..

Hey, just adding a bit more context / explanation:

@bmann is right, the old ("legacy") Gnosis Safe mobile apps have WalletConnect. But we are phasing those out.
@ligi is also right, the new mobile apps, don't yet have WalletConnect. Neither on Android nor on iOS.

Reason for the latter is, that we made a bit if a switch earlier this year to make our web interface at https://gnosis-safe.io/app the central point for now. High value asset management is still more of a web/desktop use case. At least right now.
We still love WalletConnect, it's basically the only "standard" that all dapps support besides Metamask. We actually will ship WalletConnect support in the Gnosis Safe Multisig web interface this or next week (cf. gnosis/safe-react/issues#1239). Then users would be able to connect their Safe to dapps. (And not only 3rd party owner wallets to their Safe). So this would re-qualify the Gnosis Safe as wallet that supports WalletConnect I think. :) Just not on mobile, yet.
Ligi is also right though that we don't have WalletConnect support on the mobile roadmap, yet. That is because currently users anyway need to use the web interface for making txs. So we first plan to add signing functionality and other things on mobile before thinking about mobile WalletConnect again, currently.

I guess this basically concludes that in the website we should do the following:

remove Gnosis Safe from Wallets page
add Gnosis Multisig to Apps page

Additionally as part of the walletconnect-monorepo changes, it should also include:

remove Gnosis Safe from mobile-registry

Are we all in agreement with these changes?

remove Gnosis Safe from Wallets page

With the upcoming WalletConnect feature to connect the Gnosis Safe Multisig (the wallet) to a dapp, doesn't the Gnosis Safe Multisig qualify for the "wallet" section as well?

add Gnosis Multisig to Apps page

👍

remove Gnosis Safe from mobile-registry

I have no insight into how many users of the old app use this, but I think removing it would be the best moving forward. 👍

I would remove nothing, and add Gnosis Multisig to apps.
We shouldn’t aim for absolute correctness (it’s not a lookup table), but rather to celebrate and highlight supporters and implementors.
Gnosis 😍 WalletConnect and vice versa ;)

I agree @bmann that we should be celebrating and highlighting project supporters but perhaps that warrants instead a separate section on the website specially on the homepage. As @ligi mentioned correctly this page is used as reference by users to install a WalletConnect-supported wallet.
Regarding whether Gnosis Multisig should be present on the Wallets page (@tschubotz) the way it's referenced between Wallets and Dapps can be seen as signers and applications, respectively.
Gnosis Multisig web interface would sit next to Dapps just like MyCrypto. It currently doesn't have signing capabilities that can be used to sign transactions and message requests from other applications.
New Proposed Changes:

remove Gnosis Safe from Wallets page
add Gnosis Multisig to Apps page
add Project Supporters sections on the Home page

Regarding whether Gnosis Multisig should be present on the Wallets page (@tschubotz) the way it's referenced between Wallets and Dapps can be seen as signers and applications, respectively.
Gnosis Multisig web interface would sit next to Dapps just like MyCrypto. It currently doesn't have signing capabilities that can be used to sign transactions and message requests from other applications.

The Gnosis Safe Multisig as contract wallet would act as "signer" in that case though, right? (I know not technically an ECDSA signer like an EOA but the smart contract wallet is still the actor.) Here's some details on how this would work in a v1: https://help.gnosis-safe.io/en/articles/4356253-how-to-use-walletconnect-with-the-gnosis-safe-multisig (Not yet live, but that'll be the accompanying help center article.)
I also see your point though of Gnosis Safe Multisig being a dapp and the analogy to MyCrypto. I have no super strong opinion on this and am fine either way!

New Proposed Changes:
* remove Gnosis Safe from Wallets page

* add Gnosis Multisig to Apps page

* add Project Supporters sections on the Home page

👍

Well that's definitely a novel pattern but it's legit as long as Gnosis Safe Multisig is able to successfully resolve at least the eth_sendTransaction which seems to be the case. In that case I would list Gnosis Safe Multisig on both pages with the new logo (monochrome one) and simply remove it from the mobile linking registry
On another note, looking at that helper document I can see from the screenshots that you are using a different name ("SafeConnect") instead of WalletConnect, could you change this? The whole point of the standard is to provide a consistent experience that is quickly recognizable by users and it's important to protect this property as an open protocol.
Bluetooth is always called Bluetooth. There is no such thing as Samsungtooth or Appletooth.

@pedrouid that document refers to a prototype the final version is "WalletConnect" (see https://safe-team.dev.gnosisdev.com/app/#/safes/0x2A6936131e34287372769C82e4bcFFa42845067F/apps)

@pedrouid Not worries. Like Richard said, it'll be called WalletConnect, not Safe connect, for the exact reasons you mentioned :)

I've made all changes related to this issue. Check out the new home page now featuring top funders and top contributors
I will be releasing a new UI for the QR Code modal soon as well which will remove the Gnosis Safe deep link and add a "Copy to Clipboard" feature

0x4C549990A7eF3FEA8784406c1EECc98bF4211fA5https://github.com/ampedandwired/html-webpack-pluginhttps://github.com/ampedandwired/html-webpack-pluginhttps://github.com/ampedandwired/html-webpack-pluginhttps://github.com/ampedandwired/html-webpack-pluginhttps://github.com/ampedandwired/html-webpack-pluginhttps://github.com/ampedandwired/html-webpack-plugineth to Microsoft account pointeth to Microsoft account point


Differentiates between new mentions at the start of a tweet and reply mentions

Closes #43

Hi
Thanks a lot!
This seems fine, it's going live later today
Thanks!


Migrate to cats

Not sure yet about exact plan. We have following options:

Bump to 7.2
Move to cats
Remove entirely

I think third option would be quite hard, taking in account how much of filigree work and duplication it took to factor out it from Analytics SDK (much smaller lib). Even if we'll be able to factor it out from Iglu Client - it's still not feasible for other libs.
I'm leaning towards 2 as it would be much easier to avoid binary incompatibility - we can just gradually replace imports.
/cc @BenFradet

All our codebases are migrating to circe and cats is a direct dependency, which means we'll have to support it anyway.


Mekanism storage bins

Before suggesting a mod please

[X] I have already tested myself that the modded storages I want to suggest don't work as a part of Create moving contraption, even with More Mounted Storages installed
[X] Storages I want to suggest don't require power of any kind to function
[X] Storages I want to suggest are not multiblock structures
[X] Main function of storages I want to suggest is to store items, and they don't do any kind of items processing over time

URL
https://www.curseforge.com/minecraft/mc-mods/mekanism
Additional info
Mekanism bins work very similarly to storage drawers or BHUs, bulk storage for one item.
(Saw y'all's conversation in enigmatica discord and that no one put in the requested issue on your tracker xD)

haha boo you beat me to suggesting my own suggestion!

Mek storage bins can't be moved by contraption, so unless this is changed, I can't add support.


Cell Childviews

I am using auto layout. and i have attached 2 images

The first image show non expanded cell with exact layout. now see the second layout after expanding. how to fix this?

No idea but this doesn't seem to be related to SLExpandableTableView. For general questions, please refer to sites like Stack Overflow.


xfsdump: init at 3.1.10

Description of changes
Adds the xfsdump and xfsrestore utilities.
I'd appreciate a review from the other xfs utility maintainers @dezgeg @ajs124
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Requested changes incorporated, I've also added a comment explaining the preConfigure modification.


Problem with pip install nasty under Windows: script is not on PATH

Hello,
I tried to install nasty via my command line. I have a Windows Laptop and I use Python 3.8.
I first installed pip by installing Python. And then I entered the following comman in the command line:
pip install nasty
and I got this Warning messages:
WARNING: The script tqdm.exe is installed in 'C:xxx' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script chardetect.exe is installed in 'C:xxx' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
WARNING: The script nasty.exe is installed in 'C:xxx' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location
How can I solve this problem and add it to the path? What does it mean?
Thanks in advance!

Hi, this is an issue related to your own computer setup, not something related to NASTY or for which I could provide support.
In general, the PATH is an environment variable that controls which binaries are visible when you enter them in a command line. For example, you probably won't be able to run nasty.exe in your terminal, but C:\xxx\...\nasty.exe should work. For more info, check the Wikipedia page and use a search engine of your choice.

Thanks for your help!


Ubuntu 22.04.4

This is supposed to fix: https://github.com/Dasharo/preseeds/issues/6
Additionally, support for 22.04.03 was added, as previous script had some assumptions about the layout of the previous ISO version.
I'm testing in QEMU right now and will report here with the results.
The ISO was created with:
./create_image.sh -i ~/Downloads/ubuntu-22.04.3-desktop-amd64.iso -p

We will need to test it on some hardware (such as MSI) as well.

Tested on https://github.com/Dasharo/preseeds/pull/11/commits/d2fe0d864e53d16813938b356cd3e610ca109b46

update-grub still not executed
When we have the installer on the screen, there is a login window on the serial. For now, there is no benefit to enabling the serial in the installer.
After installation, the GRUB window is only in the serial, it is not displayed on the screen.

Rebased on latest main.

The question is: is GRUB window needed to be shown on serial or screen of freshly installed Ubuntu? I do not see such request in issue https://github.com/Dasharo/preseeds/issues/6. @macpijan, what do you think?

If we have to choose, I would rather we have it on serial. Although on some platforms it would be nice to have it on the screen as well. For instance, on the MSI we could not edit grub menu this way, as we can only read from serial on this board, not write. If the menu is on the screen as well, we could at least manually edit it via PiKVM.

Commit e82ba2a612124db29b64dc9c084dc81cb222c685 provides GRUB menu support  on both serial and screen, verification results from freshly installed Ubuntu:

Can confirm that. Tested on MSI. Boot log - https://paste.dasharo.com/?a0f838748a293853#GCq7MKRW9kpruM78mtRMeUuw1yokbHqgN7F9FLGAeQNp first from running installer, second from running installed system. There are also GRUB logs, which was also visible on screen

as booting logs

I pushed one typo fix to README. Merging and closing.


refactor(TypeError) throw 'TypeError' instead of 'Error'

These should be TypeError to explain their semantics.

This change is

@homu r+

:pushpin: Commit de8aa26 has been approved by saneyuki

:hourglass: Testing commit de8aa26 with merge 8208ce9...

@homu r-

@homu r+

:pushpin: Commit e62f4cb has been approved by saneyuki

:hourglass: Testing commit e62f4cb with merge 9a87fd3...

:sunny: Test successful - status


[RESOLVED] Unavailable by ICMP ping

Problem started at 11:53:14 on 2023.02.17
Problem name: Unavailable by ICMP ping
Host: ZO-FG
Severity: High
Operational data: Down (0)
Original problem ID: 4900
Event details in Zabbix: http://<IP_ADDRESS>/tr_events.php?triggerid=23123&eventid=4900

Problem has been resolved in 10m 0s at 12:03:14 on 2023.02.17
Problem name: Unavailable by ICMP ping
Host: ZO-FG
Severity: High
Original problem ID: 4900