Git Product home page Git Product logo

raven's Introduction

RAVEN Open Source Software (OSS) Community Project

RAVEN (Realtime Assistant Voice Enabled Network) OSS community edition.

Overview & Intro

RAVEN is meant to be a digital assistant and artificial cognitive entity. The goal is to create an autonomous artificial intelligence that is reliable, trustworthy, and useful. Here are some of the top priorities for RAVEN:

  1. Voice-enabled assistant
  2. Extensible capabilities (plug and play cognitive architecture)
  3. Fully autonomous (can think and make decisions independently)
  4. Long-term memory and continuous learning

YouTube Thumbnail and Link to RAVEN Intro

Latest News

  1. Please see the updated announcement here: #52
    • This covers forming a legal entity, establishing governance, and funding

Primary Pages

Please read the draft Code of Conduct.

There is also a Contributors Guide draft that will eventually be merged with the Code of Conduct.

Development

We are still in the Forming phase. Please be patient - the RAVEN project was launched February 2, 2023 (so it's brand new)

Development Phases

Get Started with Development

The development branching strategy is located here in the Wiki.

  • Clone this repository using your favorite tool(s).

  • Checkout the desired branch to work on. In this example 1.0.0-dev

git checkout 1.0.0-dev

  • Create a Python virtual environment with tools of your choice using the environment.yml file in the root of the project.

  • Activate the new environment according to instructions in the terminal window.

  • The microservices are in the services/microservices directory.

Documentation Development

Documentation is written in markdown files in the docs directory.

You can learn more about the Markdown syntax here

MkDocs is installed in the virtual environment, so you can run a live server for previewing the docs in your browser:

mkdocs serve

raven's People

Contributors

ben-epstein avatar daveshap avatar prescod avatar subratkumargupta avatar timfoote avatar twcook avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

raven's Issues

Establish a consensus mechanism for governance

As discussed in #15

User Story

As a project team, we want to establish a consensus mechanism for making decisions about the direction of the project and ensuring all members have a say in important matters. This mechanism should be efficient, transparent, and ensure that all voices are heard. By implementing a consensus mechanism, we aim to build trust among team members, encourage collaboration, and ensure that the project progresses in a way that aligns with our shared goals and values.

Acceptance Criteria

1. Identification of decision-makers: A requirement for baseline qualifications, experience, dedication, etc. must be established for the members involved in the decision-making process.

2. Meeting schedule and protocols: The consensus mechanism must have a defined cadence, meetings, and protocols to gather information, ensuring efficient and effective decision-making.

3. Protocols and procedures documentation: The protocols and procedures used in the consensus mechanism must be documented, and appropriate meetings must be scheduled.

4. Better decisions: The consensus mechanism must result in better decisions, providing space for all members to be heard.

5. Collective commitment: The consensus mechanism must create collective commitment, making the decision a group choice, reducing the ego of individual members.

6. Increased confidence: The consensus mechanism must raise confidence levels by creating clear structure, slowing down decision-making processes, and clarifying issues.

Define Project Methodology

Discussion in #15

User Story

As a project manager in an OSS project, I want to choose a methodology that best fits the needs of my team and project, so that we can successfully deliver high-quality software efficiently.

I want to consider factors such as team size, geographic distribution, project complexity, and stakeholders' requirements when evaluating different methodologies. I want to be able to weigh the pros and cons of each methodology and make an informed decision.

I want to be able to easily communicate the selected methodology to my team and stakeholders, and ensure that everyone is aligned on the process we will use to deliver the project. Additionally, I want the chosen methodology to be flexible enough to adapt to changes in the project as needed.

By selecting the right methodology for our OSS project, I want to set my team up for success and ensure that we can deliver high-quality software that meets the needs of our stakeholders.

Acceptance Criteria

1. Aligns with RAVEN project goals and objectives: The methodology must support the overall goals and objectives of the RAVEN project and allow for flexibility in adapting to changing requirements.

2. Supports GitHub as a project management tool: The methodology must be compatible with the use of GitHub as the primary project management tool and allow for efficient tracking and reporting of progress.

3. Incorporates Agile principles: The methodology must embody Agile principles such as iteration, continuous improvement, collaboration, and customer focus.

4. Supports cross-functional collaboration: The methodology must promote collaboration between feature teams, stakeholders, and other project participants and encourage cross-functional collaboration.

5. Promotes continuous delivery: The methodology should enable continuous delivery of value to customers and facilitate the delivery of new features and functionalities.

6. Fosters transparency and accountability: The methodology must provide transparency in decision-making and accountability for project outcomes, and ensure that all participants are aware of their roles and responsibilities.

7. Encourages experimentation and learning: The methodology must support a culture of experimentation, learning, and continuous improvement, and promote a continuous learning environment for teams.

Define communications plan

User Story

As a member of the OSS project team, I want to have a clear and effective communication plan in place so that we can collaborate effectively on the development of the RAVEN project. This plan should take into account the different time zones, communication styles, and preferences of the team members, and ensure that everyone is able to stay informed and involved in the project's progress. The communication plan should include regular team meetings, a designated channel for discussions and updates, and guidelines for effective communication and collaboration. This will help to keep everyone aligned and focused on our shared goal of delivering a high-quality solution that aligns with the values and goals of the project.

Acceptance Criteria

1. Define stakeholders and their communication needs: Identify all stakeholders involved in the project, including internal teams and external clients, and understand their communication requirements.

2. Establish communication channels: Determine the most appropriate channels for communicating with stakeholders, such as email, phone, instant messaging, video conferencing, etc.

3. Define frequency and format of communications: Decide on the frequency of communication, whether it be daily, weekly, monthly, etc. and the format of the communication, such as status reports, meetings, email updates, etc.

4. Establish clear roles and responsibilities: Define clear roles and responsibilities for communicating with stakeholders, including who is responsible for sending updates, who will be the primary point of contact, etc.

5. Plan for contingencies: Establish contingency plans for communication in case of unexpected events, such as team member absence, technical issues, etc.

6. Test the plan: Conduct a dry run of the communication plan to ensure that all stakeholders are able to receive and understand the information being communicated.

7. Regularly review and update the plan: Regularly review and update the communication plan as needed to ensure that it remains effective and meets the evolving needs of the project.

Acceptance Criteria for Defining Communication Tools:

1. The selected communication tools must be user-friendly and accessible to all team members.

2. The communication tools must enable real-time collaboration and communication between team members.

3. The communication tools must integrate with existing project management and collaboration tools, such as GitHub, to ensure seamless communication and collaboration.

4. The communication tools must have robust security and privacy features to ensure the protection of confidential information.

5. The communication tools must allow for the creation of customizable templates and workflows to support the needs of the RAVEN project.

6. The communication tools must be scalable to accommodate the needs of the project as it grows and evolves.

7. The communication tools must be cost-effective, ideally FOSS, and provide value for money if investment is required.

Establish naming conventions

User Story

As a solution architect, I want to implement clear and consistent naming conventions for all elements of the system, so that everyone can easily understand and communicate about the architecture and components. This will ensure that everyone is on the same page, reduce confusion and make it easier for everyone to maintain and update the system.

Acceptance Criteria

1. Establish a consistent naming convention for boards, labels, and custom fields to help teams quickly identify the work they need to do and improve collaboration between teams.
2. All components, including servers, databases, applications, and services, are given unique, descriptive names that clearly indicate their purpose and function.
3. Naming conventions follow established best practices and are clearly documented for everyone to follow.
4. Names are consistent across the entire system, making it easy to identify and understand the relationships between components.
5. The naming conventions are reviewed and updated regularly to ensure they remain relevant and effective.

Participants, Managers, & Leaders Needed (please comment here)

Discussed in #3

Originally posted by daveshap February 1, 2023
Hey everyone, this project will be too big for me to do myself. I've had numerous people reach out on LinkedIn and Patreon already but I'd like to consolidate here. Basically, we need a few different kinds of folks helping out.

  • Community managers. These are folks who serve as the social glue, making sure people get messages, contacts get updated, organize calls and meetings, and moderate content.
  • Leaders. These are folks familiar with Agile, DevOps, and/or OSS who can provide some oversight and guidance to the project
  • Engineers. These are folks who can help sling code. Ranging from Python experts to full stack devs, and devops engineers.

Please comment if you're one of these!

Establish Onboarding Documentation (Architecture, Paradigms, etc)

User Story

As a team member, I want to have access to clear and comprehensive onboarding documentation so that I can quickly get up to speed with the project, understand my responsibilities, and effectively collaborate with my team. The onboarding documentation should include information about the project background, team structure, project goals, communication tools, work processes, and any other relevant information. The documentation should be regularly reviewed and updated to ensure it remains relevant and accurate.

Acceptance criteria

1. The onboarding documentation is easily accessible to all team members

2. The documentation covers all necessary information for effective onboarding

3. The documentation is well-structured and easy to understand

4. The documentation is regularly reviewed and updated to ensure its relevance and accuracy

Define Branching strategy

User Story

As a development team leader, I want to choose a branching strategy that will support our software development process, so that we can manage code changes, collaboration and merging with ease.

Acceptance Criteria

1. The branching strategy should allow us to work on multiple features simultaneously.
2. The branching strategy should provide a clear path for code changes to be integrated into the main branch.
3. The branching strategy should minimize the risk of code conflicts.
4. The branching strategy should be easy to understand and follow by all team members.
5. The branching strategy should allow us to roll back changes if needed.

Establish a Code of Conduct

User Story

As a project manager for an Open Source Software project, I want to establish a code of conduct for our community to ensure that all contributors, stakeholders and users feel safe, respected and included in the project. This code of conduct will provide guidelines for behavior, communication and decision-making within the community. By doing so, we can create a positive, collaborative and productive environment for everyone involved in the project, and maintain the integrity and reputation of our project.

Acceptance Criteria

1. The code of conduct should clearly define the standards of behavior expected of all project members, including team members, stakeholders, and contributors.

2. The code of conduct should cover all aspects of communication, including written and verbal interactions both in-person and online.

3. The code of conduct should outline consequences for violating the established standards of behavior.

4. The code of conduct should be easily accessible and clearly communicated to all project members.

5. The code of conduct should be reviewed and updated regularly to ensure that it remains relevant and effective.

6. The project team should demonstrate a commitment to upholding the code of conduct and actively promoting its principles.

7. Adequate resources should be allocated to enforce the code of conduct and support its implementation.

8. The code of conduct should be incorporated into the project governance framework and referenced in all relevant documentation.

9. The code of conduct should be approved by all relevant stakeholders and endorsed by the project team.

Define DoR and DoD

A Definition of Ready (DoR) is a set of standards that must be met before a product backlog item can be considered for development.

The Definition of Done (DoD) outlines the minimum acceptable criteria that must be met for a feature or task to be considered complete.

User Story

As a Product Owner, I want to define the Definition of Ready (DoR) and Definition of Done (DoD) for my product backlog items, so that the development team has clear guidelines and criteria to evaluate the completeness and quality of each item before it is considered ready for the next stage of development.

Acceptance Criteria

1. The DoR and DoD criteria have been clearly outlined and agreed upon by all stakeholders
2. The criteria includes relevant checks such as requirements, design, testing, documentation, and approvals
3. The criteria are flexible and can be updated as needed to align with the evolving needs of the product and development team
4. The criteria are consistently applied to all product backlog items to ensure consistency and fairness in the development process.

Establish a prioritization technique

User Story

As a project team, we need to determine a method for prioritizing our work items in order to effectively allocate resources and meet project goals. The prioritization technique we select should provide clear guidance for determining which work items are most important, and help us make informed decisions about which work items to tackle first. The chosen technique should also be flexible enough to accommodate changes in project requirements and be easily understood by all members of the team.

Acceptance Criteria

The selected prioritization technique should align with the overall project objectives and goals.
It should be able to effectively prioritize features and tasks for the different microservices and feature teams.
The prioritization technique should be transparent, easy to understand, and accessible to all stakeholders.
The technique should allow for changes in priorities based on evolving project requirements.
The prioritization technique should take into account any inter-dependencies between microservices and feature teams.
The prioritization should have a clear and measurable way of determining which features and tasks have higher priority.
The prioritization should allow for effective collaboration and communication between feature teams and other stakeholders.

Examples

MoSCoW Method: This technique prioritizes items based on their Must-have, Should-have, Could-have, and Won't-have status.

Kano Model: This framework prioritizes features based on customer satisfaction. Features are classified into Must-haves, Delighters, and Indifferents.

RICE scoring: This technique prioritizes features based on Reach, Impact, Confidence, and Effort scores.

Value vs. Complexity Matrix: This matrix plots features based on their value and complexity, helping to prioritize high-value, low-complexity features first.

Prioritization Quadrant: This framework prioritizes features based on their Urgency and Importance. Features are plotted in one of four quadrants: Urgent and Important, Important but not Urgent, Urgent but not Important, and Not Urgent or Important.

The name raven might cause confusion with raven.ai

https://raven.ai/ is the website for a commercial AI system which micromanages time spent by workers.

I can imagine one of their lawyers chafing at the name of this project once it gets traction. Consider the risks and feel free to close this if the team is unconcerned (or the risks are deemed low enough to ignore).

Define Roles and Responsibilities

User Story

As a project manager, I want to clearly define the roles and responsibilities of each team member so that everyone knows what is expected of them and can work effectively together. This will help to ensure that all tasks are completed efficiently, deadlines are met, and the project is a success.

Acceptance Criteria

1. A clear definition of each role and its responsibilities has been documented and communicated to the team.
2. All team members understand their individual responsibilities and how they fit into the overall project.
3. A process is in place to regularly review and update the roles and responsibilities as needed throughout the project.
4. All team members have the resources and support they need to successfully fulfill their responsibilities.

Make LLM perform column addition on arbitrary long numbers

I have been trying to solve this problem for some time. Adding python to llm is easy solution. Forcing LLM to do it itself is right solution.

My idea was to make recursive prompt chain. Output from prompt is extracted and fed into next LLM call. LLM makes decisions and performs one arithmetic operation at a time.

Here is what I came up with so far:

Perform column addition for the following numbers, one step at a time:
Input:
[1st number: 123
2nd number: 456
Current intermediate answer: 9
Task status: Incomplete]

Instructions:

  1. If the task status is "Incomplete," perform the next arithmetic operation in the column addition process.
  2. If the task status is "Complete," provide the final answer and congratulate the user.
  3. If the current intermediate answer is "None," start with the rightmost column.
  4. If the current intermediate answer is provided, continue with the next column to the left.
  5. If there are no more columns to add, update the task status to "Complete.
  6. Write down output using the same format as input. Write word output instead of input.

It doesn't work. I tried breaking up task into even smaller tasks. Nope. Even on gpt 4. It somehow can add very large numbers but breaks up after some time. And breaks up on my prompt very early.

Maybe I am stating problem wrong. But I believe it is essential to solve this problem for raven project.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.